From 58b5f3a5fec04986b22f14f117a7d4e83b5df7ff Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 00:27:58 -0700 Subject: [PATCH 0001/1529] bump Tectonic version --- common/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 5938324de..d9a1714d2 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -14,7 +14,7 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.2.3") + "shadedApi"("com.dfsek:Tectonic:1.3.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") From e6931a53d67404f0baafcd335409e8bf9b631159 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 01:31:22 -0700 Subject: [PATCH 0002/1529] basic implementation --- .../dfsek/terra/config/pack/ConfigPack.java | 44 +++++++++---------- .../terra/config/prototype/ConfigType.java | 11 +++++ .../terra/config/prototype/ProtoConfig.java | 21 +++++++++ .../registry/master/ConfigTypeRegistry.java | 41 +++++++++++++++++ 4 files changed, 95 insertions(+), 22 deletions(-) create mode 100644 common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java create mode 100644 common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java create mode 100644 common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java 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 a0f2c8bfe..030efeef3 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 @@ -2,6 +2,8 @@ package com.dfsek.terra.config.pack; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.tectonic.abstraction.AbstractConfigLoader; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; @@ -24,14 +26,7 @@ import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; -import com.dfsek.terra.config.factories.BiomeFactory; -import com.dfsek.terra.config.factories.CarverFactory; import com.dfsek.terra.config.factories.ConfigFactory; -import com.dfsek.terra.config.factories.FloraFactory; -import com.dfsek.terra.config.factories.OreFactory; -import com.dfsek.terra.config.factories.PaletteFactory; -import com.dfsek.terra.config.factories.StructureFactory; -import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.Loader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -41,14 +36,9 @@ import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProvi import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; +import com.dfsek.terra.config.prototype.ConfigType; +import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.config.templates.AbstractableTemplate; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.config.templates.FloraTemplate; -import com.dfsek.terra.config.templates.OreTemplate; -import com.dfsek.terra.config.templates.PaletteTemplate; -import com.dfsek.terra.config.templates.StructureTemplate; -import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.config.BiomeRegistry; import com.dfsek.terra.registry.config.CarverRegistry; @@ -74,7 +64,9 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -224,14 +216,22 @@ public class ConfigPack implements LoaderRegistrar { } }).close(); - loader - .open("carving", ".yml").then(streams -> buildAll(new CarverFactory(this), carverRegistry, abstractConfigLoader.load(streams, CarverTemplate::new), main)).close() - .open("palettes", ".yml").then(streams -> buildAll(new PaletteFactory(), paletteRegistry, abstractConfigLoader.load(streams, PaletteTemplate::new), main)).close() - .open("ores", ".yml").then(streams -> buildAll(new OreFactory(), oreRegistry, abstractConfigLoader.load(streams, OreTemplate::new), main)).close() - .open("structures/trees", ".yml").then(streams -> buildAll(new TreeFactory(), treeRegistry, abstractConfigLoader.load(streams, TreeTemplate::new), main)).close() - .open("structures/structures", ".yml").then(streams -> buildAll(new StructureFactory(), structureRegistry, abstractConfigLoader.load(streams, StructureTemplate::new), main)).close() - .open("flora", ".yml").then(streams -> buildAll(new FloraFactory(), floraRegistry, abstractConfigLoader.load(streams, FloraTemplate::new), main)).close() - .open("biomes", ".yml").then(streams -> buildAll(new BiomeFactory(this), biomeRegistry, abstractConfigLoader.load(streams, () -> new BiomeTemplate(this, main)), main)).close(); + List configurations = new ArrayList<>(); + + loader.open("", ".yml").then(streams -> streams.forEach(stream -> configurations.add(new Configuration(stream)))); + + ConfigLoader protoLoader = new ConfigLoader(); + Map, List> configs = new HashMap<>(); + + for(Configuration configuration : configurations) { + ProtoConfig config = new ProtoConfig(); + protoLoader.load(config, configuration); + configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); + } + + for(Map.Entry, List> entry : configs.entrySet()) { + abstractConfigLoader.loadConfigs(entry.getValue(), () -> entry.getKey().getTemplate(this, main)); + } main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this)); main.logger().info("Loaded config pack \"" + template.getID() + "\" v" + template.getVersion() + " by " + template.getAuthor() + " in " + (System.nanoTime() - start) / 1000000D + "ms."); diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java new file mode 100644 index 000000000..0d87f8bfc --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.config.prototype; + +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.config.pack.ConfigPack; + +@FunctionalInterface +public interface ConfigType { + T getTemplate(ConfigPack pack, TerraPlugin main); + +} diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java b/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java new file mode 100644 index 000000000..bc1aec46b --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.config.prototype; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; + +public class ProtoConfig implements ConfigTemplate { + @Value("id") + private String id; + + @Value("type") + private ConfigType type; + + + public String getId() { + return id; + } + + public ConfigType getType() { + return type; + } +} diff --git a/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java new file mode 100644 index 000000000..561208ec1 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java @@ -0,0 +1,41 @@ +package com.dfsek.terra.registry.master; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.config.factories.BiomeFactory; +import com.dfsek.terra.config.factories.CarverFactory; +import com.dfsek.terra.config.factories.ConfigFactory; +import com.dfsek.terra.config.factories.FloraFactory; +import com.dfsek.terra.config.factories.OreFactory; +import com.dfsek.terra.config.factories.PaletteFactory; +import com.dfsek.terra.config.factories.StructureFactory; +import com.dfsek.terra.config.factories.TreeFactory; +import com.dfsek.terra.config.prototype.ConfigType; +import com.dfsek.terra.config.templates.AbstractableTemplate; +import com.dfsek.terra.config.templates.BiomeTemplate; +import com.dfsek.terra.config.templates.CarverTemplate; +import com.dfsek.terra.config.templates.FloraTemplate; +import com.dfsek.terra.config.templates.OreTemplate; +import com.dfsek.terra.config.templates.PaletteTemplate; +import com.dfsek.terra.config.templates.StructureTemplate; +import com.dfsek.terra.config.templates.TreeTemplate; +import com.dfsek.terra.registry.OpenRegistry; + +public class ConfigTypeRegistry extends OpenRegistry> { + public ConfigTypeRegistry() { + add("BIOME", (pack, main) -> load(pack.getBiomeRegistry(), new BiomeTemplate(pack, main), new BiomeFactory(pack), main)); + add("PALETTE", (pack, main) -> load(pack.getPaletteRegistry(), new PaletteTemplate(), new PaletteFactory(), main)); + add("ORE", (pack, main) -> load(pack.getOreRegistry(), new OreTemplate(), new OreFactory(), main)); + add("FLORA", (pack, main) -> load(pack.getFloraRegistry(), new FloraTemplate(), new FloraFactory(), main)); + add("CARVER", (pack, main) -> load(pack.getCarverRegistry(), new CarverTemplate(), new CarverFactory(pack), main)); + add("STRUCTURE", (pack, main) -> load(pack.getStructureRegistry(), new StructureTemplate(), new StructureFactory(), main)); + add("TREE", (pack, main) -> load(pack.getTreeRegistry(), new TreeTemplate(), new TreeFactory(), main)); + } + + @SuppressWarnings("deprecation") + private T load(CheckedRegistry registry, T object, ConfigFactory factory, TerraPlugin main) throws LoadException { + registry.addUnchecked(object.getID(), factory.build(object, main)); + return object; + } +} From f756ebef44fc130c15ec56ad8304df1611b360a3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 01:36:39 -0700 Subject: [PATCH 0003/1529] fix unhandled exception --- .../java/com/dfsek/terra/config/prototype/ConfigType.java | 1 - .../dfsek/terra/registry/master/ConfigTypeRegistry.java | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java index 0d87f8bfc..cab8959c0 100644 --- a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java @@ -7,5 +7,4 @@ import com.dfsek.terra.config.pack.ConfigPack; @FunctionalInterface public interface ConfigType { T getTemplate(ConfigPack pack, TerraPlugin main); - } diff --git a/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java index 561208ec1..4765438a8 100644 --- a/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java @@ -34,8 +34,12 @@ public class ConfigTypeRegistry extends OpenRegistry> { } @SuppressWarnings("deprecation") - private T load(CheckedRegistry registry, T object, ConfigFactory factory, TerraPlugin main) throws LoadException { - registry.addUnchecked(object.getID(), factory.build(object, main)); + private T load(CheckedRegistry registry, T object, ConfigFactory factory, TerraPlugin main) { + try { + registry.addUnchecked(object.getID(), factory.build(object, main)); + } catch(LoadException e) { + throw new RuntimeException(e); + } return object; } } From d96d834a0811325c2a1eb0dfaafe5d7726af9e49 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 09:48:11 -0700 Subject: [PATCH 0004/1529] redo ConfigType and loading --- .../dfsek/terra/config/pack/ConfigPack.java | 5 +- .../terra/config/prototype/ConfigType.java | 4 +- .../registry/config/ConfigTypeRegistry.java | 62 +++++++++++++++++++ .../registry/master/ConfigTypeRegistry.java | 45 -------------- 4 files changed, 69 insertions(+), 47 deletions(-) create mode 100644 common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java delete mode 100644 common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java 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 030efeef3..3b2129873 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 @@ -190,6 +190,7 @@ public class ConfigPack implements LoaderRegistrar { for(C template : configTemplates) registry.add(template.getID(), factory.build(template, main)); } + @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this)); @@ -230,7 +231,9 @@ public class ConfigPack implements LoaderRegistrar { } for(Map.Entry, List> entry : configs.entrySet()) { - abstractConfigLoader.loadConfigs(entry.getValue(), () -> entry.getKey().getTemplate(this, main)); + for(ConfigTemplate config : abstractConfigLoader.loadConfigs(entry.getValue(), () -> entry.getKey().getTemplate(this, main))) { + ((ConfigType) entry.getKey()).callback(this, main, config); + } } main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this)); diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java index cab8959c0..cf5a08853 100644 --- a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java @@ -1,10 +1,12 @@ package com.dfsek.terra.config.prototype; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.config.pack.ConfigPack; -@FunctionalInterface public interface ConfigType { T getTemplate(ConfigPack pack, TerraPlugin main); + + void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException; } diff --git a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java new file mode 100644 index 000000000..9648a560e --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -0,0 +1,62 @@ +package com.dfsek.terra.registry.config; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.config.factories.BiomeFactory; +import com.dfsek.terra.config.factories.CarverFactory; +import com.dfsek.terra.config.factories.ConfigFactory; +import com.dfsek.terra.config.factories.FloraFactory; +import com.dfsek.terra.config.factories.OreFactory; +import com.dfsek.terra.config.factories.PaletteFactory; +import com.dfsek.terra.config.factories.StructureFactory; +import com.dfsek.terra.config.factories.TreeFactory; +import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.prototype.ConfigType; +import com.dfsek.terra.config.templates.AbstractableTemplate; +import com.dfsek.terra.config.templates.BiomeTemplate; +import com.dfsek.terra.config.templates.CarverTemplate; +import com.dfsek.terra.config.templates.FloraTemplate; +import com.dfsek.terra.config.templates.OreTemplate; +import com.dfsek.terra.config.templates.PaletteTemplate; +import com.dfsek.terra.config.templates.StructureTemplate; +import com.dfsek.terra.config.templates.TreeTemplate; +import com.dfsek.terra.registry.OpenRegistry; + +import java.util.function.Function; +import java.util.function.Supplier; + +public class ConfigTypeRegistry extends OpenRegistry> { + public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main) { + add("BIOME", new ConfigBuilder<>(pack.getBiomeRegistry(), new BiomeFactory(pack), () -> new BiomeTemplate(pack, main))); + add("PALETTE", new ConfigBuilder<>(pack.getPaletteRegistry(), new PaletteFactory(), PaletteTemplate::new)); + add("ORE", new ConfigBuilder<>(pack.getOreRegistry(), new OreFactory(), OreTemplate::new)); + add("FLORA", new ConfigBuilder<>(pack.getFloraRegistry(), new FloraFactory(), FloraTemplate::new)); + add("CARVER", new ConfigBuilder<>(pack.getCarverRegistry(), new CarverFactory(pack), CarverTemplate::new)); + add("STRUCTURE", new ConfigBuilder<>(pack.getStructureRegistry(), new StructureFactory(), StructureTemplate::new)); + add("TREE", new ConfigBuilder<>(pack.getTreeRegistry(), new TreeFactory(), TreeTemplate::new)); + } + + private static final class ConfigBuilder implements ConfigType { + private final CheckedRegistry registry; + private final ConfigFactory factory; + private final Supplier provider; + + private ConfigBuilder(CheckedRegistry registry, ConfigFactory factory, Supplier provider) { + this.registry = registry; + this.factory = factory; + this.provider = provider; + } + + @Override + public T getTemplate(ConfigPack pack, TerraPlugin main) { + return provider.get(); + } + + @SuppressWarnings("deprecation") + @Override + public void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException { + registry.addUnchecked(loadedConfig.getID(), factory.build(loadedConfig, main)); + } + } +} diff --git a/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java deleted file mode 100644 index 4765438a8..000000000 --- a/common/src/main/java/com/dfsek/terra/registry/master/ConfigTypeRegistry.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dfsek.terra.registry.master; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.config.factories.BiomeFactory; -import com.dfsek.terra.config.factories.CarverFactory; -import com.dfsek.terra.config.factories.ConfigFactory; -import com.dfsek.terra.config.factories.FloraFactory; -import com.dfsek.terra.config.factories.OreFactory; -import com.dfsek.terra.config.factories.PaletteFactory; -import com.dfsek.terra.config.factories.StructureFactory; -import com.dfsek.terra.config.factories.TreeFactory; -import com.dfsek.terra.config.prototype.ConfigType; -import com.dfsek.terra.config.templates.AbstractableTemplate; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.config.templates.FloraTemplate; -import com.dfsek.terra.config.templates.OreTemplate; -import com.dfsek.terra.config.templates.PaletteTemplate; -import com.dfsek.terra.config.templates.StructureTemplate; -import com.dfsek.terra.config.templates.TreeTemplate; -import com.dfsek.terra.registry.OpenRegistry; - -public class ConfigTypeRegistry extends OpenRegistry> { - public ConfigTypeRegistry() { - add("BIOME", (pack, main) -> load(pack.getBiomeRegistry(), new BiomeTemplate(pack, main), new BiomeFactory(pack), main)); - add("PALETTE", (pack, main) -> load(pack.getPaletteRegistry(), new PaletteTemplate(), new PaletteFactory(), main)); - add("ORE", (pack, main) -> load(pack.getOreRegistry(), new OreTemplate(), new OreFactory(), main)); - add("FLORA", (pack, main) -> load(pack.getFloraRegistry(), new FloraTemplate(), new FloraFactory(), main)); - add("CARVER", (pack, main) -> load(pack.getCarverRegistry(), new CarverTemplate(), new CarverFactory(pack), main)); - add("STRUCTURE", (pack, main) -> load(pack.getStructureRegistry(), new StructureTemplate(), new StructureFactory(), main)); - add("TREE", (pack, main) -> load(pack.getTreeRegistry(), new TreeTemplate(), new TreeFactory(), main)); - } - - @SuppressWarnings("deprecation") - private T load(CheckedRegistry registry, T object, ConfigFactory factory, TerraPlugin main) { - try { - registry.addUnchecked(object.getID(), factory.build(object, main)); - } catch(LoadException e) { - throw new RuntimeException(e); - } - return object; - } -} From 473ed45dee5e60ed22012f1ada6aacb239be68ab Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 09:50:07 -0700 Subject: [PATCH 0005/1529] add config type registry to ConfigPack loader registry --- .../main/java/com/dfsek/terra/config/pack/ConfigPack.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 3b2129873..36626d5ee 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 @@ -42,6 +42,7 @@ import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.config.BiomeRegistry; import com.dfsek.terra.registry.config.CarverRegistry; +import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.FloraRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.LootRegistry; @@ -104,9 +105,12 @@ public class ConfigPack implements LoaderRegistrar { private final BiomeProvider.BiomeProviderBuilder biomeProviderBuilder; + private final ConfigTypeRegistry configTypeRegistry; + public ConfigPack(File folder, TerraPlugin main) throws ConfigException { try { + this.configTypeRegistry = new ConfigTypeRegistry(this, main); this.loader = new FolderLoader(folder.toPath()); this.main = main; long l = System.nanoTime(); @@ -143,6 +147,7 @@ public class ConfigPack implements LoaderRegistrar { public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException { try { + this.configTypeRegistry = new ConfigTypeRegistry(this, main); this.loader = new ZIPLoader(file); this.main = main; long l = System.nanoTime(); @@ -264,6 +269,7 @@ public class ConfigPack implements LoaderRegistrar { @Override public void register(TypeRegistry registry) { registry + .registerLoader(ConfigType.class, configTypeRegistry) .registerLoader(Palette.class, paletteRegistry) .registerLoader(BiomeBuilder.class, biomeRegistry) .registerLoader(Flora.class, floraRegistry) From 6374b0ab087a489a9b5304bc054f8a36d1ba2662 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 09:52:47 -0700 Subject: [PATCH 0006/1529] add ConfigPack#getConfigTypeRegistry --- .../java/com/dfsek/terra/config/pack/ConfigPack.java | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 36626d5ee..0ed43e759 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 @@ -342,4 +342,14 @@ public class ConfigPack implements LoaderRegistrar { public WorldConfig toWorldConfig(TerraWorld world){ return new WorldConfig(world, this, main); } + + public CheckedRegistry> getConfigTypeRegistry() { + return new CheckedRegistry>(configTypeRegistry) { + @Override + @SuppressWarnings("deprecation") + public void addUnchecked(String identifier, ConfigType value) { + if(contains(identifier)) throw new UnsupportedOperationException("Cannot override values in ConfigTypeRegistry!"); + } + }; + } } From a78e64a9bbc7c95c92ddd4cab98bb83bce93c262 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 09:59:52 -0700 Subject: [PATCH 0007/1529] rename ore "type" to "algorithm" --- .../main/java/com/dfsek/terra/config/templates/OreTemplate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7362a4c6a..b3ecdb61f 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 @@ -17,7 +17,7 @@ public class OreTemplate extends AbstractableTemplate { @Abstractable private BlockData material; - @Value("type") + @Value("algorithm") @Abstractable @Default private Ore.Type oreType = Ore.Type.VANILLA; From 03ebafc7b6f7ee06bcf5cb525a842772f54e9db4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 12:26:54 -0700 Subject: [PATCH 0008/1529] working config loading --- common/build.gradle.kts | 2 +- .../terra/api/registry/CheckedRegistry.java | 3 +- .../terra/api/registry/LockedRegistry.java | 3 +- .../dfsek/terra/api/registry/Registry.java | 3 +- .../terra/config/fileloaders/ZIPLoader.java | 2 +- .../dfsek/terra/config/pack/ConfigPack.java | 31 ++++++++++--------- .../dfsek/terra/config/pack/WorldConfig.java | 5 +-- .../dfsek/terra/registry/OpenRegistry.java | 15 +++++++-- .../registry/config/ConfigTypeRegistry.java | 20 +++++++++++- 9 files changed, 59 insertions(+), 25 deletions(-) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index d9a1714d2..653aab8c6 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -14,7 +14,7 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.3.0") + "shadedApi"("com.dfsek:Tectonic:1.3.1") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index 9934c767b..85323611b 100644 --- a/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -6,6 +6,7 @@ import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.exception.DuplicateEntryException; import java.lang.reflect.Type; +import java.util.Collection; import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -68,7 +69,7 @@ public class CheckedRegistry implements Registry { } @Override - public Set entries() { + public Collection entries() { return registry.entries(); } diff --git a/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java b/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java index 227656c4d..8889998b6 100644 --- a/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java +++ b/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import java.lang.reflect.Type; +import java.util.Collection; import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -41,7 +42,7 @@ public class LockedRegistry implements Registry { } @Override - public Set entries() { + public Collection entries() { return registry.entries(); } diff --git a/common/src/main/java/com/dfsek/terra/api/registry/Registry.java b/common/src/main/java/com/dfsek/terra/api/registry/Registry.java index 773d784ca..0976697e3 100644 --- a/common/src/main/java/com/dfsek/terra/api/registry/Registry.java +++ b/common/src/main/java/com/dfsek/terra/api/registry/Registry.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.registry; import com.dfsek.tectonic.loading.TypeLoader; +import java.util.Collection; import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -42,7 +43,7 @@ public interface Registry extends TypeLoader { * * @return Set containing all entries. */ - Set entries(); + Collection entries(); /** * Get all the keys in this registry. diff --git a/common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java index d10449a37..8c94af81a 100644 --- a/common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java @@ -30,7 +30,7 @@ public class ZIPLoader extends Loader { ZipEntry entry = entries.nextElement(); if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(extension)) { try { - String rel = entry.getName().substring(directory.length() + 1); + String rel = entry.getName().substring(directory.length()); streams.put(rel, file.getInputStream(entry)); } catch(IOException e) { e.printStackTrace(); 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 0ed43e759..598bfff6e 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 @@ -66,8 +66,10 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -110,13 +112,14 @@ public class ConfigPack implements LoaderRegistrar { public ConfigPack(File folder, TerraPlugin main) throws ConfigException { try { + floraRegistry = new FloraRegistry(main); + paletteRegistry = new PaletteRegistry(main); + treeRegistry = new TreeRegistry(); this.configTypeRegistry = new ConfigTypeRegistry(this, main); this.loader = new FolderLoader(folder.toPath()); this.main = main; long l = System.nanoTime(); - floraRegistry = new FloraRegistry(main); - paletteRegistry = new PaletteRegistry(main); - treeRegistry = new TreeRegistry(); + register(abstractConfigLoader); register(selfLoader); @@ -147,13 +150,14 @@ public class ConfigPack implements LoaderRegistrar { public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException { try { + floraRegistry = new FloraRegistry(main); + paletteRegistry = new PaletteRegistry(main); + treeRegistry = new TreeRegistry(); this.configTypeRegistry = new ConfigTypeRegistry(this, main); this.loader = new ZIPLoader(file); this.main = main; long l = System.nanoTime(); - floraRegistry = new FloraRegistry(main); - paletteRegistry = new PaletteRegistry(main); - treeRegistry = new TreeRegistry(); + register(abstractConfigLoader); register(selfLoader); @@ -224,20 +228,19 @@ public class ConfigPack implements LoaderRegistrar { List configurations = new ArrayList<>(); - loader.open("", ".yml").then(streams -> streams.forEach(stream -> configurations.add(new Configuration(stream)))); + loader.open("", ".yml").thenEntries(entries -> entries.forEach(stream -> configurations.add(new Configuration(stream.getValue(), stream.getKey())))); - ConfigLoader protoLoader = new ConfigLoader(); Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations) { ProtoConfig config = new ProtoConfig(); - protoLoader.load(config, configuration); + selfLoader.load(config, configuration); configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); } - for(Map.Entry, List> entry : configs.entrySet()) { - for(ConfigTemplate config : abstractConfigLoader.loadConfigs(entry.getValue(), () -> entry.getKey().getTemplate(this, main))) { - ((ConfigType) entry.getKey()).callback(this, main, config); + for(ConfigType configType : configTypeRegistry.entries()) { + for(ConfigTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { + ((ConfigType) configType).callback(this, main, config); } } @@ -250,7 +253,7 @@ public class ConfigPack implements LoaderRegistrar { } public Set getStructures() { - return structureRegistry.entries(); + return new HashSet<>(structureRegistry.entries()); } public List getStructureIDs() { @@ -288,7 +291,7 @@ public class ConfigPack implements LoaderRegistrar { } public Set getCarvers() { - return carverRegistry.entries(); + return new HashSet<>(carverRegistry.entries()); } public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index 6ddc798ef..2b2c5ed14 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -17,6 +17,7 @@ import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.ores.Ore; +import java.util.HashSet; import java.util.Set; public class WorldConfig { @@ -66,7 +67,7 @@ public class WorldConfig { } public Set getCarvers() { - return carverRegistry.entries(); + return new HashSet<>(carverRegistry.entries()); } public LockedRegistry getScriptRegistry() { @@ -110,7 +111,7 @@ public class WorldConfig { } public Set getStructures() { - return structureRegistry.entries(); + return new HashSet<>(structureRegistry.entries()); } public ConfigPackTemplate getTemplate() { diff --git a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java index 1cd0b81f2..eb01964dd 100644 --- a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.registry.exception.DuplicateEntryException; import java.lang.reflect.Type; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -18,7 +19,15 @@ import java.util.function.Consumer; * @param */ public class OpenRegistry implements Registry { - private final Map objects = new HashMap<>(); + private final Map objects; + + public OpenRegistry() { + objects = new HashMap<>(); + } + + protected OpenRegistry(Map init) { + this.objects = init; + } @Override public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { @@ -74,8 +83,8 @@ public class OpenRegistry implements Registry { } @Override - public Set entries() { - return new HashSet<>(objects.values()); + public Collection entries() { + return objects.values(); } @Override diff --git a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 9648a560e..6d68e58c9 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -1,5 +1,6 @@ package com.dfsek.terra.registry.config; +import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -23,18 +24,35 @@ import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.registry.OpenRegistry; +import java.util.LinkedHashMap; import java.util.function.Function; import java.util.function.Supplier; public class ConfigTypeRegistry extends OpenRegistry> { public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main) { - add("BIOME", new ConfigBuilder<>(pack.getBiomeRegistry(), new BiomeFactory(pack), () -> new BiomeTemplate(pack, main))); + super(new LinkedHashMap<>()); // Ordered add("PALETTE", new ConfigBuilder<>(pack.getPaletteRegistry(), new PaletteFactory(), PaletteTemplate::new)); add("ORE", new ConfigBuilder<>(pack.getOreRegistry(), new OreFactory(), OreTemplate::new)); add("FLORA", new ConfigBuilder<>(pack.getFloraRegistry(), new FloraFactory(), FloraTemplate::new)); add("CARVER", new ConfigBuilder<>(pack.getCarverRegistry(), new CarverFactory(pack), CarverTemplate::new)); add("STRUCTURE", new ConfigBuilder<>(pack.getStructureRegistry(), new StructureFactory(), StructureTemplate::new)); add("TREE", new ConfigBuilder<>(pack.getTreeRegistry(), new TreeFactory(), TreeTemplate::new)); + add("BIOME", new ConfigBuilder<>(pack.getBiomeRegistry(), new BiomeFactory(pack), () -> new BiomeTemplate(pack, main))); + add("PACK", new PackBuilder()); + } + + private static final class PackBuilder implements ConfigType { + + @Override + public ConfigTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new ConfigTemplate() { + }; + } + + @Override + public void callback(ConfigPack pack, TerraPlugin main, ConfigTemplate loadedConfig) { + + } } private static final class ConfigBuilder implements ConfigType { From da4aebe4986b82e337bfde08e3af495c0ccd929c Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 17:08:13 -0700 Subject: [PATCH 0009/1529] fix parser EOF NPE --- .../terra/api/structures/tokenizer/Tokenizer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java b/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java index 2fb3e4e1f..4f21273ee 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java @@ -15,6 +15,7 @@ public class Tokenizer { private final Lookahead reader; private final Stack brackets = new Stack<>(); private Token current; + private Token last; public Tokenizer(String data) throws ParseException { reader = new Lookahead(new StringReader(data + '\0')); @@ -28,7 +29,7 @@ public class Tokenizer { * @throws ParseException If token does not exist */ public Token get() throws ParseException { - if(!hasNext()) throw new ParseException("Unexpected end of input", current.getPosition()); + if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); return current; } @@ -39,7 +40,7 @@ public class Tokenizer { * @throws ParseException If token does not exist */ public Token consume() throws ParseException { - if(!hasNext()) throw new ParseException("Unexpected end of input", current.getPosition()); + if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); Token temp = current; current = fetchCheck(); return temp; @@ -57,8 +58,9 @@ public class Tokenizer { private Token fetchCheck() throws ParseException { Token fetch = fetch(); if(fetch != null) { - if(fetch.getType().equals(Token.Type.BLOCK_BEGIN)) brackets.push(fetch); // Opening bracket - else if(fetch.getType().equals(Token.Type.BLOCK_END)) { + last = fetch; + if(fetch.getType() == Token.Type.BLOCK_BEGIN) brackets.push(fetch); // Opening bracket + else if(fetch.getType() == Token.Type.BLOCK_END) { if(!brackets.isEmpty()) brackets.pop(); else throw new ParseException("Dangling opening brace", new Position(0, 0)); } From a6a1810b4ad846c615f483db56c7d59ee827502f Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Apr 2021 17:08:57 -0700 Subject: [PATCH 0010/1529] bump version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 1e189b37b..b544506a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ import com.dfsek.terra.getGitHash -val versionObj = Version("5", "1", "2", true) +val versionObj = Version("6", "0", "0", true) allprojects { version = versionObj From 75cb6be36fe0203a15a27af29af546c53f4823d0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 00:53:21 -0700 Subject: [PATCH 0011/1529] resolve merge issues --- .../src/main/java/com/dfsek/terra/registry/OpenRegistry.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java index 62103b018..f6b6a3917 100644 --- a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; * @param */ public class OpenRegistry implements Registry { - private final Map objects; + private final Map> objects; public OpenRegistry() { objects = new HashMap<>(); @@ -29,7 +29,6 @@ public class OpenRegistry implements Registry { protected OpenRegistry(Map> init) { this.objects = init; } - private final Map> objects = new HashMap<>(); @Override public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { From 4237657dadfb33a0eaa2f384c839d9fb5dc766a1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 02:39:21 -0700 Subject: [PATCH 0012/1529] remove most hard coded registries --- .../api/util/generic/pair/ImmutablePair.java | 13 +- .../terra/api/util/generic/pair/Pair.java | 4 +- .../terra/api/util/world/PaletteUtil.java | 3 +- .../terra/api/world/biome/Generator.java | 3 +- .../terra/api/world/palette/NoisePalette.java | 9 +- .../terra/api/world/palette/Palette.java | 33 ++--- .../api/world/palette/SinglePalette.java | 10 +- .../world/palette/holder/PaletteHolder.java | 7 +- .../palette/holder/PaletteHolderBuilder.java | 11 +- .../terra/config/factories/FloraFactory.java | 3 +- .../config/factories/PaletteFactory.java | 7 +- .../com/dfsek/terra/config/loaders/Types.java | 4 - .../loaders/palette/PaletteHolderLoader.java | 4 +- .../dfsek/terra/config/pack/ConfigPack.java | 135 ++++-------------- .../dfsek/terra/config/pack/WorldConfig.java | 20 +-- .../terra/config/prototype/ConfigType.java | 9 +- .../terra/config/prototype/ProtoConfig.java | 4 +- .../terra/config/templates/BiomeTemplate.java | 27 ++-- .../dfsek/terra/registry/OpenRegistry.java | 6 +- .../registry/config/ConfigTypeRegistry.java | 71 ++++++--- .../registry/config/PaletteRegistry.java | 9 +- .../com/dfsek/terra/world/TerraWorld.java | 2 +- .../world/generation/WorldGenerator.java | 5 +- .../generators/DefaultChunkGenerator2D.java | 2 +- .../generators/DefaultChunkGenerator3D.java | 18 +-- .../population/items/flora/TerraFlora.java | 4 +- .../bukkit/handles/BukkitWorldHandle.java | 2 +- .../terra/bukkit/listeners/TerraListener.java | 5 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 4 +- 29 files changed, 202 insertions(+), 232 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java index f58cbb52b..0ca0c0ad3 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java +++ b/common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java @@ -1,10 +1,12 @@ package com.dfsek.terra.api.util.generic.pair; -public class ImmutablePair { +public final class ImmutablePair { private final L left; private final R right; - public ImmutablePair(L left, R right) { + private static final ImmutablePair NULL = new ImmutablePair<>(null, null); + + private ImmutablePair(L left, R right) { this.left = left; this.right = right; } @@ -21,7 +23,12 @@ public class ImmutablePair { return left; } + @SuppressWarnings("unchecked") + public static ImmutablePair ofNull() { + return (ImmutablePair) NULL; + } + public Pair mutable() { - return new Pair<>(left, right); + return Pair.of(left, right); } } diff --git a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java index dcb0be070..5ec1ede8f 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java +++ b/common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java @@ -4,7 +4,7 @@ public class Pair { private L left; private R right; - public Pair(L left, R right) { + private Pair(L left, R right) { this.left = left; this.right = right; } @@ -30,6 +30,6 @@ public class Pair { } public ImmutablePair immutable() { - return new ImmutablePair<>(left, right); + return ImmutablePair.of(left, right); } } diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index 69edf202e..491341ad9 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -1,14 +1,13 @@ package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.math.samplers.Sampler; public final class PaletteUtil { - public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { + public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { PaletteHolder slant = c.getSlantPalette(); if(slant != null && MathUtil.derivative(sampler, x, y, z) > c.getSlantThreshold()) { return slant.getPalette(y); diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index 539437a71..a72243739 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.Palette; public interface Generator { @@ -35,7 +34,7 @@ public interface Generator { * * @return BlocPalette - The biome's palette. */ - Palette getPalette(int y); + Palette getPalette(int y); NoiseSampler getBiomeNoise(); diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index 3af3d383b..f8d3b20a6 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.world.palette; import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.platform.block.BlockData; import java.util.List; -public class NoisePalette extends Palette { +public class NoisePalette extends Palette { private final NoiseSampler sampler; private final boolean is2D; @@ -14,11 +15,11 @@ public class NoisePalette extends Palette { } @Override - public E get(int layer, double x, double y, double z) { - PaletteLayer paletteLayer; + public BlockData get(int layer, double x, double y, double z) { + PaletteLayer paletteLayer; if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); else { - List> pl = getLayers(); + List pl = getLayers(); if(layer >= pl.size()) paletteLayer = pl.get(pl.size() - 1); else paletteLayer = pl.get(layer); } diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java b/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java index 881cd406c..fb367c191 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.palette; import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.ProbabilityCollection; @@ -11,8 +12,8 @@ import java.util.Random; * A class representation of a "slice" of the world. * Used to get a section of blocks, based on the depth at which they are found. */ -public abstract class Palette { - private final List> pallet = new GlueList<>(); +public abstract class Palette { + private final List pallet = new GlueList<>(); /** * Constructs a blank palette. @@ -21,16 +22,16 @@ public abstract class Palette { } - public com.dfsek.terra.api.world.palette.Palette add(E m, int layers, NoiseSampler sampler) { + public com.dfsek.terra.api.world.palette.Palette add(BlockData m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { - pallet.add(new PaletteLayer<>(m, sampler)); + pallet.add(new PaletteLayer(m, sampler)); } return this; } - public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { + public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { - pallet.add(new PaletteLayer<>(m, sampler)); + pallet.add(new PaletteLayer(m, sampler)); } return this; } @@ -41,25 +42,25 @@ public abstract class Palette { * @param layer - The layer at which to fetch the material. * @return BlockData - The material fetched. */ - public abstract E get(int layer, double x, double y, double z); + public abstract BlockData get(int layer, double x, double y, double z); public int getSize() { return pallet.size(); } - public List> getLayers() { + public List getLayers() { return pallet; } /** * Class representation of a layer of a BlockPalette. */ - public static class PaletteLayer { + public static class PaletteLayer { private final boolean col; // Is layer using a collection? - private ProbabilityCollection collection; + private ProbabilityCollection collection; private final NoiseSampler sampler; - private E m; + private BlockData m; /** * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. @@ -67,7 +68,7 @@ public abstract class Palette { * @param type The collection of materials to choose from. * @param sampler Noise sampler to use */ - public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { + public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { this.sampler = sampler; this.col = true; this.collection = type; @@ -79,7 +80,7 @@ public abstract class Palette { * @param type The material to use. * @param sampler Noise sampler to use */ - public PaletteLayer(E type, NoiseSampler sampler) { + public PaletteLayer(BlockData type, NoiseSampler sampler) { this.sampler = sampler; this.col = false; this.m = type; @@ -94,18 +95,18 @@ public abstract class Palette { * * @return Material - the material.. */ - public E get(Random random) { + public BlockData get(Random random) { if(col) return this.collection.get(random); return m; } - public E get(NoiseSampler random, double x, double y, double z, boolean is2D) { + public BlockData get(NoiseSampler random, double x, double y, double z, boolean is2D) { if(col && is2D) return this.collection.get(random, x, z); else if(col) return this.collection.get(random, x, y, z); return m; } - public ProbabilityCollection getCollection() { + public ProbabilityCollection getCollection() { return collection; } } diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java b/common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java index 06b075a2b..7b2db1fe2 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java @@ -1,14 +1,16 @@ package com.dfsek.terra.api.world.palette; -public class SinglePalette extends Palette { - private final E item; +import com.dfsek.terra.api.platform.block.BlockData; - public SinglePalette(E item) { +public class SinglePalette extends Palette { + private final BlockData item; + + public SinglePalette(BlockData item) { this.item = item; } @Override - public E get(int layer, double x, double y, double z) { + public BlockData get(int layer, double x, double y, double z) { return item; } } diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java index 2b4704cac..743bbba14 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java @@ -1,16 +1,15 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.Palette; public class PaletteHolder { - private final Palette[] palettes; + private final Palette[] palettes; - protected PaletteHolder(Palette[] palettes) { + protected PaletteHolder(Palette[] palettes) { this.palettes = palettes; } - public Palette getPalette(int y) { + public Palette getPalette(int y) { return palettes[y]; } } diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java index 2cc72764b..451567113 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.Palette; import net.jafama.FastMath; @@ -8,19 +7,19 @@ import java.util.Map; import java.util.TreeMap; public class PaletteHolderBuilder { - private final TreeMap> paletteMap = new TreeMap<>(); + private final TreeMap paletteMap = new TreeMap<>(); - public PaletteHolderBuilder add(int y, Palette palette) { + public PaletteHolderBuilder add(int y, Palette palette) { paletteMap.put(y, palette); return this; } @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) public PaletteHolder build() { - Palette[] palettes = new Palette[paletteMap.lastKey() + 1]; + Palette[] palettes = new Palette[paletteMap.lastKey() + 1]; for(int y = 0; y <= FastMath.max(paletteMap.lastKey(), 255); y++) { - Palette d = null; - for(Map.Entry> e : paletteMap.entrySet()) { + Palette d = null; + for(Map.Entry e : paletteMap.entrySet()) { if(e.getKey() >= y) { d = e.getValue(); break; diff --git a/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 279dbf3e4..78c2c288a 100644 --- a/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.Palette; @@ -13,7 +12,7 @@ import com.dfsek.terra.world.population.items.flora.TerraFlora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - Palette palette = new NoisePalette<>(new WhiteNoiseSampler(2403), false); + Palette palette = new NoisePalette(new WhiteNoiseSampler(2403), false); for(PaletteLayerHolder layer : config.getFloraPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } diff --git a/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java index d4983c076..e4d9fbeda 100644 --- a/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java +++ b/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java @@ -1,16 +1,15 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.templates.PaletteTemplate; -public class PaletteFactory implements ConfigFactory> { +public class PaletteFactory implements ConfigFactory { @Override - public Palette build(PaletteTemplate config, TerraPlugin main) { - NoisePalette palette = new NoisePalette<>(config.getNoise().apply(2403L), config.getNoise().getDimensions() == 2); + public Palette build(PaletteTemplate config, TerraPlugin main) { + NoisePalette palette = new NoisePalette(config.getNoise().apply(2403L), config.getNoise().getDimensions() == 2); for(PaletteLayerHolder layer : config.getPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } 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 46c4f0978..595728d60 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 @@ -5,7 +5,6 @@ import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollection; 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 java.lang.reflect.Type; import java.util.Map; @@ -15,7 +14,6 @@ import java.util.Map; */ @SuppressWarnings("unused") public final class Types { - public static final Type BLOCK_DATA_PALETTE_TYPE; public static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; public static final Type FLORA_PROBABILITY_COLLECTION_TYPE; public static final Type TREE_PROBABILITY_COLLECTION_TYPE; @@ -23,7 +21,6 @@ public final class Types { public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP; static { - BLOCK_DATA_PALETTE_TYPE = getType("blockDataPalette"); BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockDataProbabilityCollection"); FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection"); TREE_PROBABILITY_COLLECTION_TYPE = getType("treeProbabilityCollection"); @@ -31,7 +28,6 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private Palette blockDataPalette; private ProbabilityCollection blockDataProbabilityCollection; private ProbabilityCollection floraProbabilityCollection; private ProbabilityCollection treeProbabilityCollection; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java index a0e7929e0..7dc94a21b 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java @@ -3,11 +3,9 @@ package com.dfsek.terra.config.loaders.palette; 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.BlockData; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder; -import com.dfsek.terra.config.loaders.Types; import java.lang.reflect.Type; import java.util.List; @@ -21,7 +19,7 @@ public class PaletteHolderLoader implements TypeLoader { PaletteHolderBuilder builder = new PaletteHolderBuilder(); for(Map layer : palette) { for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(Types.BLOCK_DATA_PALETTE_TYPE, entry.getKey())); + builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); } } return builder.build(); 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 b0dd6c03f..3de4eeb20 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 @@ -8,22 +8,16 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structures.loot.LootTable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseSeeded; 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.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.factories.ConfigFactory; @@ -40,21 +34,13 @@ import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.registry.OpenRegistry; -import com.dfsek.terra.registry.config.BiomeRegistry; -import com.dfsek.terra.registry.config.CarverRegistry; import com.dfsek.terra.registry.config.ConfigTypeRegistry; -import com.dfsek.terra.registry.config.FloraRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.LootRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; -import com.dfsek.terra.registry.config.OreRegistry; -import com.dfsek.terra.registry.config.PaletteRegistry; import com.dfsek.terra.registry.config.ScriptRegistry; -import com.dfsek.terra.registry.config.StructureRegistry; -import com.dfsek.terra.registry.config.TreeRegistry; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.world.population.items.ores.Ore; import org.apache.commons.io.IOUtils; import org.json.simple.parser.ParseException; @@ -73,8 +59,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Supplier; -import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -84,17 +68,12 @@ import java.util.zip.ZipFile; public class ConfigPack implements LoaderRegistrar { private final ConfigPackTemplate template = new ConfigPackTemplate(); - private final BiomeRegistry biomeRegistry = new BiomeRegistry(); - private final StructureRegistry structureRegistry = new StructureRegistry(); - private final PaletteRegistry paletteRegistry; - private final FloraRegistry floraRegistry; - private final OreRegistry oreRegistry = new OreRegistry(); - private final TreeRegistry treeRegistry; + private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); + + private final ScriptRegistry scriptRegistry = new ScriptRegistry(); private final LootRegistry lootRegistry = new LootRegistry(); - private final CarverRegistry carverRegistry = new CarverRegistry(); - private final NoiseRegistry noiseRegistry = new NoiseRegistry(); private final FunctionRegistry functionRegistry = new FunctionRegistry(); @@ -112,10 +91,12 @@ public class ConfigPack implements LoaderRegistrar { public ConfigPack(File folder, TerraPlugin main) throws ConfigException { try { - floraRegistry = new FloraRegistry(main); - paletteRegistry = new PaletteRegistry(main); - treeRegistry = new TreeRegistry(); - this.configTypeRegistry = new ConfigTypeRegistry(this, main); + this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { + OpenRegistry openRegistry = configType.registrySupplier().get(); + selfLoader.registerLoader(configType.getTypeClass(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); + registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); + }); this.loader = new FolderLoader(folder.toPath()); this.main = main; long l = System.nanoTime(); @@ -151,19 +132,18 @@ public class ConfigPack implements LoaderRegistrar { public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException { try { - floraRegistry = new FloraRegistry(main); - paletteRegistry = new PaletteRegistry(main); - treeRegistry = new TreeRegistry(); - this.configTypeRegistry = new ConfigTypeRegistry(this, main); + this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { + OpenRegistry openRegistry = configType.registrySupplier().get(); + selfLoader.registerLoader(configType.getTypeClass(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); + registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); + }); this.loader = new ZIPLoader(file); this.main = main; long l = System.nanoTime(); - register(abstractConfigLoader); register(selfLoader); - main.register(selfLoader); - main.register(abstractConfigLoader); try { ZipEntry pack = null; @@ -202,12 +182,7 @@ public class ConfigPack implements LoaderRegistrar { } private void checkDeadEntries(TerraPlugin main) { - biomeRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in biome registry: '" + id + "'")); - paletteRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in palette registry: '" + id + "'")); - floraRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in flora registry: '" + id + "'")); - carverRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in carver registry: '" + id + "'")); - treeRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in tree registry: '" + id + "'")); - oreRegistry.getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in ore registry: '" + id + "'")); + registryMap.forEach((clazz, pair) -> pair.getLeft().getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } @@ -242,7 +217,7 @@ public class ConfigPack implements LoaderRegistrar { loader.open("", ".yml").thenEntries(entries -> entries.forEach(stream -> configurations.add(new Configuration(stream.getValue(), stream.getKey())))); - Map, List> configs = new HashMap<>(); + Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations) { ProtoConfig config = new ProtoConfig(); @@ -250,7 +225,7 @@ public class ConfigPack implements LoaderRegistrar { configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); } - for(ConfigType configType : configTypeRegistry.entries()) { + for(ConfigType configType : configTypeRegistry.entries()) { for(ConfigTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { ((ConfigType) configType).callback(this, main, config); } @@ -260,16 +235,9 @@ public class ConfigPack implements LoaderRegistrar { main.logger().info("Loaded config pack \"" + template.getID() + "\" v" + template.getVersion() + " by " + template.getAuthor() + " in " + (System.nanoTime() - start) / 1000000D + "ms."); } - public TerraStructure getStructure(String id) { - return structureRegistry.get(id); - } public Set getStructures() { - return new HashSet<>(structureRegistry.entries()); - } - - public List getStructureIDs() { - return structureRegistry.entries().stream().map(terraStructure -> terraStructure.getTemplate().getID()).collect(Collectors.toList()); + return new HashSet<>(getRegistry(TerraStructure.class).entries()); } public ConfigPackTemplate getTemplate() { @@ -280,30 +248,24 @@ public class ConfigPack implements LoaderRegistrar { return varScope; } + @SuppressWarnings("unchecked") + public CheckedRegistry getRegistry(Class clazz) { + return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); + } + @Override public void register(TypeRegistry registry) { registry .registerLoader(ConfigType.class, configTypeRegistry) - .registerLoader(Palette.class, paletteRegistry) - .registerLoader(BiomeBuilder.class, biomeRegistry) - .registerLoader(Flora.class, floraRegistry) - .registerLoader(Ore.class, oreRegistry) - .registerLoader(Tree.class, treeRegistry) .registerLoader(StructureScript.class, scriptRegistry) - .registerLoader(TerraStructure.class, structureRegistry) .registerLoader(LootTable.class, lootRegistry) - .registerLoader(UserDefinedCarver.class, carverRegistry) .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)) .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(biomeRegistry)) - .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(biomeRegistry)); - } - - public Set getCarvers() { - return new HashSet<>(carverRegistry.entries()); + .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) + .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))); } public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { @@ -314,55 +276,20 @@ public class ConfigPack implements LoaderRegistrar { return new CheckedRegistry<>(scriptRegistry); } - public CheckedRegistry getBiomeRegistry() { - return new CheckedRegistry<>(biomeRegistry); - } - - public CheckedRegistry getTreeRegistry() { - return new CheckedRegistry<>(treeRegistry); - } - - public CheckedRegistry> getFunctionRegistry() { - return new CheckedRegistry<>(functionRegistry); - } - - public CheckedRegistry>> getNormalizerRegistry() { - return new CheckedRegistry<>(noiseRegistry); - } - - public CheckedRegistry getCarverRegistry() { - return new CheckedRegistry<>(carverRegistry); - } - - public CheckedRegistry getFloraRegistry() { - return new CheckedRegistry<>(floraRegistry); - } - public CheckedRegistry getLootRegistry() { return new CheckedRegistry<>(lootRegistry); } - public CheckedRegistry getOreRegistry() { - return new CheckedRegistry<>(oreRegistry); - } - public CheckedRegistry> getPaletteRegistry() { - return new CheckedRegistry<>(paletteRegistry); - } - - public CheckedRegistry getStructureRegistry() { - return new CheckedRegistry<>(structureRegistry); - } - - public WorldConfig toWorldConfig(TerraWorld world){ + public WorldConfig toWorldConfig(TerraWorld world) { return new WorldConfig(world, this, main); } - public CheckedRegistry> getConfigTypeRegistry() { - return new CheckedRegistry>(configTypeRegistry) { + public CheckedRegistry> getConfigTypeRegistry() { + return new CheckedRegistry>(configTypeRegistry) { @Override @SuppressWarnings("deprecation") - public void addUnchecked(String identifier, ConfigType value) { + public void addUnchecked(String identifier, ConfigType value) { if(contains(identifier)) throw new UnsupportedOperationException("Cannot override values in ConfigTypeRegistry!"); } }; diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index 2b2c5ed14..40fbe711c 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -1,7 +1,6 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.structures.loot.LootTable; @@ -11,6 +10,7 @@ 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.carving.UserDefinedCarver; +import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.SamplerCache; @@ -29,7 +29,7 @@ public class WorldConfig { private final LockedRegistry floraRegistry; private final LockedRegistry lootRegistry; private final LockedRegistry oreRegistry; - private final LockedRegistry> paletteRegistry; + private final LockedRegistry paletteRegistry; private final LockedRegistry structureRegistry; private final BiomeProvider provider; @@ -44,16 +44,16 @@ public class WorldConfig { this.scriptRegistry = new LockedRegistry<>(pack.getScriptRegistry()); OpenRegistry biomeOpenRegistry = new OpenRegistry<>(); - pack.getBiomeRegistry().forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); + pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); this.biomeRegistry = new LockedRegistry<>(biomeOpenRegistry); - this.carverRegistry = new LockedRegistry<>(pack.getCarverRegistry()); - this.treeRegistry = new LockedRegistry<>(pack.getTreeRegistry()); - this.floraRegistry = new LockedRegistry<>(pack.getFloraRegistry()); + this.carverRegistry = new LockedRegistry<>(pack.getRegistry(UserDefinedCarver.class)); + this.treeRegistry = new LockedRegistry<>(pack.getRegistry(Tree.class)); + this.floraRegistry = new LockedRegistry<>(pack.getRegistry(Flora.class)); this.lootRegistry = new LockedRegistry<>(pack.getLootRegistry()); - this.oreRegistry = new LockedRegistry<>(pack.getOreRegistry()); - this.paletteRegistry = new LockedRegistry<>(pack.getPaletteRegistry()); - this.structureRegistry = new LockedRegistry<>(pack.getStructureRegistry()); + this.oreRegistry = new LockedRegistry<>(pack.getRegistry(Ore.class)); + this.paletteRegistry = new LockedRegistry<>(pack.getRegistry(Palette.class)); + this.structureRegistry = new LockedRegistry<>(pack.getRegistry(TerraStructure.class)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); } @@ -98,7 +98,7 @@ public class WorldConfig { return oreRegistry; } - public LockedRegistry> getPaletteRegistry() { + public LockedRegistry getPaletteRegistry() { return paletteRegistry; } diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java index cf5a08853..4c6f66ec7 100644 --- a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java @@ -4,9 +4,16 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.registry.OpenRegistry; -public interface ConfigType { +import java.util.function.Supplier; + +public interface ConfigType { T getTemplate(ConfigPack pack, TerraPlugin main); void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException; + + Class getTypeClass(); + + Supplier> registrySupplier(); } diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java b/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java index bc1aec46b..329a88113 100644 --- a/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java @@ -8,14 +8,14 @@ public class ProtoConfig implements ConfigTemplate { private String id; @Value("type") - private ConfigType type; + private ConfigType type; public String getId() { return id; } - public ConfigType getType() { + public ConfigType getType() { return type; } } diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 69ee69122..a34a2c8b4 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -13,7 +13,6 @@ import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockType; import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.util.GlueList; @@ -124,7 +123,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("ocean.palette") @Abstractable @Default - private Palette oceanPalette; + private Palette oceanPalette; @Value("elevation.equation") @Default @@ -159,12 +158,12 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("slabs.palettes") @Abstractable @Default - private Map> slabPalettes; + private Map slabPalettes; @Value("slabs.stair-palettes") @Abstractable @Default - private Map> stairPalettes; + private Map stairPalettes; @Value("slant.threshold") @Abstractable @@ -247,14 +246,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return doSlabs; } - public Map> getSlabPalettes() { - return slabPalettes; - } - - public Map> getStairPalettes() { - return stairPalettes; - } - public BiomeTemplate(ConfigPack pack, TerraPlugin main) { this.pack = pack; biomeNoise = new NoiseSeeded() { @@ -268,7 +259,15 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return 2; } }; - oceanPalette = new SinglePalette<>(main.getWorldHandle().createBlockData("minecraft:water")); + oceanPalette = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:water")); + } + + public Map getSlabPalettes() { + return slabPalettes; + } + + public Map getStairPalettes() { + return stairPalettes; } public NoiseSeeded getBiomeNoise() { @@ -291,7 +290,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return seaLevel; } - public Palette getOceanPalette() { + public Palette getOceanPalette() { return oceanPalette; } diff --git a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java index f6b6a3917..3cbe07b0a 100644 --- a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java @@ -21,6 +21,7 @@ import java.util.stream.Collectors; */ public class OpenRegistry implements Registry { private final Map> objects; + private static final Entry NULL = new Entry<>(null); public OpenRegistry() { objects = new HashMap<>(); @@ -72,9 +73,10 @@ public class OpenRegistry implements Registry { return objects.containsKey(identifier); } + @SuppressWarnings("unchecked") @Override public T get(String identifier) { - return objects.get(identifier).getValue(); + return objects.getOrDefault(identifier, (Entry) NULL).getValue(); } @Override @@ -89,7 +91,7 @@ public class OpenRegistry implements Registry { @Override public Collection entries() { - return objects.values().stream().map(Entry::getRaw).collect(Collectors.toSet()); + return objects.values().stream().map(Entry::getRaw).collect(Collectors.toList()); } @Override diff --git a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 6d68e58c9..90dd2a4b4 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -3,7 +3,11 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.carving.UserDefinedCarver; +import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.factories.BiomeFactory; import com.dfsek.terra.config.factories.CarverFactory; import com.dfsek.terra.config.factories.ConfigFactory; @@ -23,25 +27,36 @@ import com.dfsek.terra.config.templates.PaletteTemplate; import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.world.population.items.TerraStructure; +import com.dfsek.terra.world.population.items.ores.Ore; import java.util.LinkedHashMap; -import java.util.function.Function; +import java.util.function.BiConsumer; import java.util.function.Supplier; -public class ConfigTypeRegistry extends OpenRegistry> { - public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main) { +public class ConfigTypeRegistry extends OpenRegistry> { + private final BiConsumer> callback; + + public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered - add("PALETTE", new ConfigBuilder<>(pack.getPaletteRegistry(), new PaletteFactory(), PaletteTemplate::new)); - add("ORE", new ConfigBuilder<>(pack.getOreRegistry(), new OreFactory(), OreTemplate::new)); - add("FLORA", new ConfigBuilder<>(pack.getFloraRegistry(), new FloraFactory(), FloraTemplate::new)); - add("CARVER", new ConfigBuilder<>(pack.getCarverRegistry(), new CarverFactory(pack), CarverTemplate::new)); - add("STRUCTURE", new ConfigBuilder<>(pack.getStructureRegistry(), new StructureFactory(), StructureTemplate::new)); - add("TREE", new ConfigBuilder<>(pack.getTreeRegistry(), new TreeFactory(), TreeTemplate::new)); - add("BIOME", new ConfigBuilder<>(pack.getBiomeRegistry(), new BiomeFactory(pack), () -> new BiomeTemplate(pack, main))); + this.callback = callback; + add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); + add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); + add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main))); + add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); + add("STRUCTURE", new ConfigBuilder<>(new StructureFactory(), StructureTemplate::new, TerraStructure.class, StructureRegistry::new)); + add("TREE", new ConfigBuilder<>(new TreeFactory(), TreeTemplate::new, Tree.class, TreeRegistry::new)); + add("BIOME", new ConfigBuilder<>(new BiomeFactory(pack), () -> new BiomeTemplate(pack, main), BiomeBuilder.class, BiomeRegistry::new)); add("PACK", new PackBuilder()); } - private static final class PackBuilder implements ConfigType { + @Override + protected boolean add(String identifier, Entry> value) { + callback.accept(identifier, value.getValue()); + return super.add(identifier, value); + } + + private static final class PackBuilder implements ConfigType { @Override public ConfigTemplate getTemplate(ConfigPack pack, TerraPlugin main) { @@ -53,17 +68,29 @@ public class ConfigTypeRegistry extends OpenRegistry> { public void callback(ConfigPack pack, TerraPlugin main, ConfigTemplate loadedConfig) { } + + @Override + public Class getTypeClass() { + return ConfigPack.class; + } + + @Override + public Supplier> registrySupplier() { + return OpenRegistry::new; + } } - private static final class ConfigBuilder implements ConfigType { - private final CheckedRegistry registry; + private static final class ConfigBuilder implements ConfigType { private final ConfigFactory factory; private final Supplier provider; + private final Class clazz; + private final Supplier> registrySupplier; - private ConfigBuilder(CheckedRegistry registry, ConfigFactory factory, Supplier provider) { - this.registry = registry; + private ConfigBuilder(ConfigFactory factory, Supplier provider, Class clazz, Supplier> registrySupplier) { this.factory = factory; this.provider = provider; + this.clazz = clazz; + this.registrySupplier = registrySupplier; } @Override @@ -74,7 +101,17 @@ public class ConfigTypeRegistry extends OpenRegistry> { @SuppressWarnings("deprecation") @Override public void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException { - registry.addUnchecked(loadedConfig.getID(), factory.build(loadedConfig, main)); + pack.getRegistry(clazz).addUnchecked(loadedConfig.getID(), factory.build(loadedConfig, main)); + } + + @Override + public Class getTypeClass() { + return clazz; + } + + @Override + public Supplier> registrySupplier() { + return registrySupplier; } } } diff --git a/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java index e54c8ec81..bcdfea683 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java @@ -1,22 +1,21 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.registry.OpenRegistry; -public class PaletteRegistry extends OpenRegistry> { +public class PaletteRegistry extends OpenRegistry { private final TerraPlugin main; + public PaletteRegistry(TerraPlugin main) { this.main = main; } - @Override - public Palette get(String identifier) { + public Palette get(String identifier) { if(identifier.startsWith("BLOCK:")) - return new SinglePalette<>(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. + return new SinglePalette(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. return super.get(identifier); } } 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 bbf0ac9f3..02b0c848a 100644 --- a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -75,7 +75,7 @@ public class TerraWorld { */ public BlockData getUngeneratedBlock(int x, int y, int z) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(x, z); - Palette palette = biome.getGenerator(world).getPalette(y); + Palette palette = biome.getGenerator(world).getPalette(y); Sampler sampler = config.getSamplerCache().get(x, z); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); diff --git a/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java index 971241ca5..2a46d1c2a 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java @@ -1,7 +1,6 @@ package com.dfsek.terra.world.generation; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; @@ -67,7 +66,7 @@ public class WorldGenerator implements Generator { * @return BlockPalette - The biome's palette. */ @Override - public Palette getPalette(int y) { + public Palette getPalette(int y) { return palettes.getPalette(y); } @@ -86,7 +85,7 @@ public class WorldGenerator implements Generator { return blendStep; } - public Palette getSlantPalette(int y) { + public Palette getSlantPalette(int y) { return slantPalettes.getPalette(y); } } diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index c4f384b07..e0124a4a0 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -112,7 +112,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { TerraBiome b = grid.getBiome(xOrig + x, zOrig + z); BiomeTemplate c = ((UserDefinedBiome) b).getConfig(); - Palette seaPalette = c.getOceanPalette(); + Palette seaPalette = c.getOceanPalette(); int height = FastMath.min((int) sampler.sample(x, 0, z), world.getMaxHeight() - 1); diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index f63676161..69e6c8675 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -45,7 +45,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; private final BlockType water; - private final SinglePalette blank; + private final SinglePalette blank; private final List blockPopulators = new ArrayList<>(); private final Carver carver; @@ -63,7 +63,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { carver = new NoiseCarver(new Range(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType(); - blank = new SinglePalette<>(main.getWorldHandle().createBlockData("minecraft:air")); + blank = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:air")); } @Override @@ -124,7 +124,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { BiomeTemplate c = ((UserDefinedBiome) b).getConfig(); int sea = c.getSeaLevel(); - Palette seaPalette = c.getOceanPalette(); + Palette seaPalette = c.getOceanPalette(); boolean justSet = false; BlockData data = null; @@ -162,11 +162,11 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, - Map> stairs, double thresh, Sampler sampler) { + private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map slabs, + Map stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) { if(stairs != null) { - Palette stairPalette = stairs.get(down.getBlockType()); + Palette stairPalette = stairs.get(down.getBlockType()); if(stairPalette != null) { BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); if(stair instanceof Stairs) { @@ -183,11 +183,11 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map> slabs, - Map> stairs, double thresh, Sampler sampler) { + private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map slabs, + Map stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) { if(stairs != null) { - Palette stairPalette = stairs.get(up.getBlockType()); + Palette stairPalette = stairs.get(up.getBlockType()); if(stairPalette != null) { BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); if(stair instanceof Stairs) { 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 0893d1c92..b154c2e91 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 @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; public class TerraFlora implements Flora { - private final Palette floraPalette; + private final Palette floraPalette; private final boolean physics; private final boolean ceiling; @@ -43,7 +43,7 @@ public class TerraFlora implements Flora { private final TerraPlugin main; - public TerraFlora(Palette floraPalette, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, int irrigableOffset, TerraPlugin main) { + public TerraFlora(Palette floraPalette, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, int irrigableOffset, TerraPlugin main) { this.floraPalette = floraPalette; this.physics = physics; this.testRotation = testRotation; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 8f3736103..62747e2e2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -28,6 +28,6 @@ public class BukkitWorldHandle implements WorldHandle { @Override public Pair getSelectedLocation(Player player) { org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); - return new Pair<>(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); + return Pair.of(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 4eb05f91e..f1a205e79 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitTree; import com.dfsek.terra.registry.exception.DuplicateEntryException; @@ -23,8 +24,8 @@ public class TerraListener implements EventListener { for(TreeType value : TreeType.values()) { try { String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); - event.getPack().getTreeRegistry().add(id, new BukkitTree(value, main)); - event.getPack().getTreeRegistry().get(id); // Platform trees should never be marked "dead" + event.getPack().getRegistry(Tree.class).add(id, new BukkitTree(value, main)); + event.getPack().getRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" } catch(DuplicateEntryException ignore) { // If another addon has already registered trees, do nothing. } } 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 57a326726..95b8f1fb5 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 @@ -311,7 +311,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { RegistryKey> floraKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_WORLDGEN, new Identifier("terra", "flora_populator")); Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, floraKey.getValue(), POPULATOR_CONFIGURED_FEATURE); - registry.forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> Registry.register(BuiltinRegistries.BIOME, new Identifier("terra", createBiomeID(pack, id)), createBiome(biome)))); // Register all Terra biomes. + registry.forEach(pack -> pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> Registry.register(BuiltinRegistries.BIOME, new Identifier("terra", createBiomeID(pack, id)), createBiome(biome)))); // Register all Terra biomes. Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC); Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC); @@ -408,7 +408,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @Priority(Priority.LOWEST) @Global public void injectTrees(ConfigPackPreLoadEvent event) { - CheckedRegistry treeRegistry = event.getPack().getTreeRegistry(); + CheckedRegistry treeRegistry = event.getPack().getRegistry(Tree.class); injectTree(treeRegistry, "BROWN_MUSHROOM", ConfiguredFeatures.HUGE_BROWN_MUSHROOM); injectTree(treeRegistry, "RED_MUSHROOM", ConfiguredFeatures.HUGE_RED_MUSHROOM); injectTree(treeRegistry, "JUNGLE", ConfiguredFeatures.MEGA_JUNGLE_TREE); From 4202875675ddca0f5b367b65aa9cc973df77ef8f Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 03:15:44 -0700 Subject: [PATCH 0013/1529] dynamic registris in WorldConfig --- .../biome/arg/BiomeArgumentParser.java | 2 +- .../commands/biome/tab/BiomeTabCompleter.java | 2 +- .../argument/StructureArgumentParser.java | 2 +- .../completer/StructureCompleter.java | 3 +- .../dfsek/terra/config/pack/ConfigPack.java | 4 -- .../dfsek/terra/config/pack/WorldConfig.java | 71 ++++--------------- .../bukkit/listeners/CommonListener.java | 2 +- .../terra/bukkit/listeners/PaperListener.java | 2 +- .../bukkit/listeners/SpigotListener.java | 2 +- 9 files changed, 23 insertions(+), 67 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java index 251036d39..7931b30be 100644 --- a/common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java +++ b/common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java @@ -14,6 +14,6 @@ public class BiomeArgumentParser implements ArgumentParser { @Override public TerraBiome parse(CommandSender sender, String arg) { Player player = (Player) sender; - return main.getWorld(player.getWorld()).getConfig().getBiomeRegistry().get(arg); + return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).get(arg); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java index f2461c532..4476e3613 100644 --- a/common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java +++ b/common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java @@ -17,6 +17,6 @@ public class BiomeTabCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return main.getWorld(player.getWorld()).getConfig().getBiomeRegistry().entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); + return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java index dce50ac65..cf8b3378f 100644 --- a/common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java @@ -13,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser { @Override public TerraStructure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getStructureRegistry().get(arg); + return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(TerraStructure.class).get(arg); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java index a2b5b1dad..cebfa20ab 100644 --- a/common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java +++ b/common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.world.population.items.TerraStructure; import java.util.ArrayList; import java.util.List; @@ -16,6 +17,6 @@ public class StructureCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getStructureRegistry().keys()); + return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getRegistry(TerraStructure.class).keys()); } } 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 3de4eeb20..d9d1e2be9 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 @@ -276,10 +276,6 @@ public class ConfigPack implements LoaderRegistrar { return new CheckedRegistry<>(scriptRegistry); } - public CheckedRegistry getLootRegistry() { - return new CheckedRegistry<>(lootRegistry); - } - public WorldConfig toWorldConfig(TerraWorld world) { return new WorldConfig(world, this, main); diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index 40fbe711c..a9fddf712 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -1,63 +1,54 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.script.StructureScript; 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.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.world.population.items.ores.Ore; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; public class WorldConfig { private final LockedRegistry scriptRegistry; - private final LockedRegistry biomeRegistry; private final SamplerCache samplerCache; - private final LockedRegistry carverRegistry; - private final LockedRegistry treeRegistry; - private final LockedRegistry floraRegistry; - private final LockedRegistry lootRegistry; - private final LockedRegistry oreRegistry; - private final LockedRegistry paletteRegistry; - private final LockedRegistry structureRegistry; private final BiomeProvider provider; private final TerraWorld world; private final ConfigPack pack; + private final Map, LockedRegistry> registryMap = new HashMap<>(); + public WorldConfig(TerraWorld world, ConfigPack pack, TerraPlugin main) { this.world = world; this.pack = pack; this.samplerCache = new SamplerCache(main, world); + + pack.getConfigTypeRegistry().forEach(configType -> registryMap.put(configType.getTypeClass(), new LockedRegistry<>(pack.getRegistry(configType.getTypeClass())))); + this.scriptRegistry = new LockedRegistry<>(pack.getScriptRegistry()); OpenRegistry biomeOpenRegistry = new OpenRegistry<>(); pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); - - this.biomeRegistry = new LockedRegistry<>(biomeOpenRegistry); - this.carverRegistry = new LockedRegistry<>(pack.getRegistry(UserDefinedCarver.class)); - this.treeRegistry = new LockedRegistry<>(pack.getRegistry(Tree.class)); - this.floraRegistry = new LockedRegistry<>(pack.getRegistry(Flora.class)); - this.lootRegistry = new LockedRegistry<>(pack.getLootRegistry()); - this.oreRegistry = new LockedRegistry<>(pack.getRegistry(Ore.class)); - this.paletteRegistry = new LockedRegistry<>(pack.getRegistry(Palette.class)); - this.structureRegistry = new LockedRegistry<>(pack.getRegistry(TerraStructure.class)); + registryMap.put(TerraBiome.class, new LockedRegistry<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); } + @SuppressWarnings("unchecked") + public LockedRegistry getRegistry(Class clazz) { + return (LockedRegistry) registryMap.get(clazz); + } + public TerraWorld getWorld() { return world; } @@ -67,51 +58,19 @@ public class WorldConfig { } public Set getCarvers() { - return new HashSet<>(carverRegistry.entries()); + return new HashSet<>(getRegistry(UserDefinedCarver.class).entries()); } public LockedRegistry getScriptRegistry() { return scriptRegistry; } - public LockedRegistry getBiomeRegistry() { - return biomeRegistry; - } - - public LockedRegistry getTreeRegistry() { - return treeRegistry; - } - - public LockedRegistry getCarverRegistry() { - return carverRegistry; - } - - public LockedRegistry getFloraRegistry() { - return floraRegistry; - } - - public LockedRegistry getLootRegistry() { - return lootRegistry; - } - - public LockedRegistry getOreRegistry() { - return oreRegistry; - } - - public LockedRegistry getPaletteRegistry() { - return paletteRegistry; - } - - public LockedRegistry getStructureRegistry() { - return structureRegistry; - } - public BiomeProvider getProvider() { return provider; } public Set getStructures() { - return new HashSet<>(structureRegistry.entries()); + return new HashSet<>(getRegistry(TerraStructure.class).entries()); } public ConfigPackTemplate getTemplate() { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 5c6d31183..9e2a65407 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -52,7 +52,7 @@ public class CommonListener implements Listener { Block block = e.getLocation().getBlock(); BlockData data = block.getBlockData(); block.setType(Material.AIR); - Tree tree = c.getTreeRegistry().get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); + Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); if(!tree.plant(new Location(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 3945451f4..aebdd017d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -23,7 +23,7 @@ public class PaperListener implements Listener { String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld())); - TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get(name)); + TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get(name)); if(config != null) { AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin()), 0, 500, location -> { if(location != null) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index fe4681e61..0260bf215 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -37,7 +37,7 @@ public class SpigotListener implements Listener { if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return; TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); EnderSignal signal = (EnderSignal) entity; - TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD")); + TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD")); if(config != null) { main.getDebugLogger().info("Overriding Ender Signal..."); AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> { From e671ef783f48341194b57cc463c35885cc6241a7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 20:56:15 -0700 Subject: [PATCH 0014/1529] completely dynamic registries --- .../structures/script/StructureScript.java | 8 +- .../script/builders/LootFunctionBuilder.java | 7 +- .../builders/StructureFunctionBuilder.java | 7 +- .../script/functions/LootFunction.java | 6 +- .../script/functions/StructureFunction.java | 6 +- .../terra/api/util/seeded/NoiseProvider.java | 9 + .../argument/ScriptArgumentParser.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../sampler/NoiseSamplerBuilderLoader.java | 7 +- .../dfsek/terra/config/pack/ConfigPack.java | 70 ++-- .../dfsek/terra/config/pack/WorldConfig.java | 7 - .../terra/registry/config/NoiseRegistry.java | 7 +- .../src/test/java/biome/DistributionTest.java | 352 ------------------ common/src/test/java/biome/ImageTest.java | 218 ----------- 14 files changed, 73 insertions(+), 635 deletions(-) create mode 100644 common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java delete mode 100644 common/src/test/java/biome/DistributionTest.java delete mode 100644 common/src/test/java/biome/ImageTest.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 108b3b101..b4f9439a6 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -3,10 +3,13 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.Parser; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.Block; import com.dfsek.terra.api.structures.parser.lang.Returnable; +import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.builders.BinaryNumberFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.BiomeFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.BlockFunctionBuilder; @@ -29,9 +32,6 @@ import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.structures.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; -import com.dfsek.terra.registry.config.FunctionRegistry; -import com.dfsek.terra.registry.config.LootRegistry; -import com.dfsek.terra.registry.config.ScriptRegistry; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; @@ -49,7 +49,7 @@ public class StructureScript { private final TerraPlugin main; private String tempID; - public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry registry, LootRegistry lootRegistry, FunctionRegistry functionRegistry) throws ParseException { + public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { Parser parser; try { parser = new Parser(IOUtils.toString(inputStream)); diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java index d5e46d9d3..b894743a7 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java @@ -1,21 +1,22 @@ package com.dfsek.terra.api.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.functions.LootFunction; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.registry.config.LootRegistry; import java.util.List; public class LootFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - private final LootRegistry registry; + private final Registry registry; private final StructureScript script; - public LootFunctionBuilder(TerraPlugin main, LootRegistry registry, StructureScript script) { + public LootFunctionBuilder(TerraPlugin main, Registry registry, StructureScript script) { this.main = main; this.registry = registry; this.script = script; diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java index 2b0be8468..918fec245 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java @@ -1,21 +1,22 @@ package com.dfsek.terra.api.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.functions.StructureFunction; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.registry.config.ScriptRegistry; import java.util.List; import java.util.stream.Collectors; public class StructureFunctionBuilder implements FunctionBuilder { - private final ScriptRegistry registry; + private final Registry registry; private final TerraPlugin main; - public StructureFunctionBuilder(ScriptRegistry registry, TerraPlugin main) { + public StructureFunctionBuilder(Registry registry, TerraPlugin main) { this.registry = registry; this.main = main; } diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index 42add8070..ddbc064cd 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -13,20 +14,19 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.structure.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.registry.config.LootRegistry; import net.jafama.FastMath; import java.util.Map; public class LootFunction implements Function { - private final LootRegistry registry; + private final Registry registry; private final Returnable data; private final Returnable x, y, z; private final Position position; private final TerraPlugin main; private final StructureScript script; - public LootFunction(LootRegistry registry, Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position, StructureScript script) { + public LootFunction(Registry registry, Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position, StructureScript script) { this.registry = registry; this.position = position; this.data = data; diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 7b9b38830..c0378d60e 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -13,21 +14,20 @@ import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.structures.structure.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.registry.config.ScriptRegistry; import net.jafama.FastMath; import java.util.List; import java.util.Map; public class StructureFunction implements Function { - private final ScriptRegistry registry; + private final Registry registry; private final Returnable id; private final Returnable x, y, z; private final Position position; private final TerraPlugin main; private final List> rotations; - public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, List> rotations, ScriptRegistry registry, Position position, TerraPlugin main) { + public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, List> rotations, Registry registry, Position position, TerraPlugin main) { this.registry = registry; this.id = id; this.position = position; diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java new file mode 100644 index 000000000..90b04c3f1 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.api.util.seeded; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + +@FunctionalInterface +public interface NoiseProvider extends Supplier> { +} diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index 3797c08cd..f7d23dee8 100644 --- a/common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -13,6 +13,6 @@ public class ScriptArgumentParser implements ArgumentParser { @Override public StructureScript parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getScriptRegistry().get(arg); + return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index 24f927baa..81e6eba02 100644 --- a/common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -16,6 +16,6 @@ public class ScriptCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getScriptRegistry().entries().stream().map(StructureScript::getId).collect(Collectors.toList()); + return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(StructureScript::getId).collect(Collectors.toList()); } } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java index 65ebf9d38..919ace8f7 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java @@ -6,8 +6,9 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.registry.config.NoiseRegistry; import java.lang.reflect.Type; import java.util.Locale; @@ -15,9 +16,9 @@ import java.util.Map; @SuppressWarnings("unchecked") public class NoiseSamplerBuilderLoader implements TypeLoader { - private final NoiseRegistry noiseRegistry; + private final Registry noiseRegistry; - public NoiseSamplerBuilderLoader(NoiseRegistry noiseRegistry) { + public NoiseSamplerBuilderLoader(Registry noiseRegistry) { this.noiseRegistry = noiseRegistry; } 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 d9d1e2be9..07ea5b52a 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,14 +13,16 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; +import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; +import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; -import com.dfsek.terra.config.factories.ConfigFactory; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.Loader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -32,7 +34,6 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; -import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; @@ -68,33 +69,21 @@ import java.util.zip.ZipFile; public class ConfigPack implements LoaderRegistrar { private final ConfigPackTemplate template = new ConfigPackTemplate(); - private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); - - - private final ScriptRegistry scriptRegistry = new ScriptRegistry(); - private final LootRegistry lootRegistry = new LootRegistry(); - - private final NoiseRegistry noiseRegistry = new NoiseRegistry(); - private final FunctionRegistry functionRegistry = new FunctionRegistry(); - private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Scope varScope = new Scope(); - private final TerraPlugin main; private final Loader loader; - private final BiomeProvider.BiomeProviderBuilder biomeProviderBuilder; - private final ConfigTypeRegistry configTypeRegistry; + private final ConfigTypeRegistry configTypeRegistry; + private final Map, ImmutablePair, CheckedRegistry>> registryMap = newRegistryMap(); public ConfigPack(File folder, TerraPlugin main) throws ConfigException { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); - selfLoader.registerLoader(configType.getTypeClass(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); }); this.loader = new FolderLoader(folder.toPath()); @@ -134,8 +123,6 @@ public class ConfigPack implements LoaderRegistrar { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); - selfLoader.registerLoader(configType.getTypeClass(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); }); this.loader = new ZIPLoader(file); @@ -177,15 +164,35 @@ public class ConfigPack implements LoaderRegistrar { toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } - public static void buildAll(ConfigFactory factory, OpenRegistry registry, List configTemplates, TerraPlugin main) throws LoadException { - for(C template : configTemplates) registry.add(template.getID(), factory.build(template, main)); + @SuppressWarnings({"unchecked", "rawtypes"}) + private Map, ImmutablePair, CheckedRegistry>> newRegistryMap() { + Map, ImmutablePair, CheckedRegistry>> map = new HashMap, ImmutablePair, CheckedRegistry>>() { + private static final long serialVersionUID = 4015855819914064466L; + + @Override + public ImmutablePair, CheckedRegistry> put(Class key, ImmutablePair, CheckedRegistry> value) { + selfLoader.registerLoader(key, value.getLeft()); + abstractConfigLoader.registerLoader(key, value.getLeft()); + return super.put(key, value); + } + }; + + putPair(map, NoiseProvider.class, new NoiseRegistry()); + putPair(map, FunctionBuilder.class, (OpenRegistry) (Object) new FunctionRegistry()); + putPair(map, LootTable.class, new LootRegistry()); + putPair(map, StructureScript.class, new ScriptRegistry()); + + return map; + } + + private void putPair(Map, ImmutablePair, CheckedRegistry>> map, Class key, OpenRegistry l) { + map.put(key, ImmutablePair.of(l, new CheckedRegistry<>(l))); } private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> pair.getLeft().getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } - @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this)); @@ -197,8 +204,8 @@ public class ConfigPack implements LoaderRegistrar { loader.open("structures/data", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try(InputStream stream = entry.getValue()) { - StructureScript structureScript = new StructureScript(stream, main, scriptRegistry, lootRegistry, functionRegistry); - scriptRegistry.add(structureScript.getId(), structureScript); + StructureScript structureScript = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); + getOpenRegistry(StructureScript.class).add(structureScript.getId(), structureScript); } catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) { throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); } @@ -206,7 +213,7 @@ public class ConfigPack implements LoaderRegistrar { }).close().open("structures/loot", ".json").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - lootRegistry.add(entry.getKey(), new LootTable(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); + getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTable(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); } catch(ParseException | IOException | NullPointerException e) { throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); } @@ -253,29 +260,28 @@ public class ConfigPack implements LoaderRegistrar { return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); } + @SuppressWarnings("unchecked") + protected OpenRegistry getOpenRegistry(Class clazz) { + return (OpenRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getLeft(); + } + @Override public void register(TypeRegistry registry) { registry .registerLoader(ConfigType.class, configTypeRegistry) - .registerLoader(StructureScript.class, scriptRegistry) - .registerLoader(LootTable.class, lootRegistry) .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)) - .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) - .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))); + .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) + .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class))); } public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { return biomeProviderBuilder; } - public CheckedRegistry getScriptRegistry() { - return new CheckedRegistry<>(scriptRegistry); - } - public WorldConfig toWorldConfig(TerraWorld world) { return new WorldConfig(world, this, main); diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index a9fddf712..11f473efd 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.carving.UserDefinedCarver; @@ -18,7 +17,6 @@ import java.util.Map; import java.util.Set; public class WorldConfig { - private final LockedRegistry scriptRegistry; private final SamplerCache samplerCache; private final BiomeProvider provider; @@ -35,7 +33,6 @@ public class WorldConfig { pack.getConfigTypeRegistry().forEach(configType -> registryMap.put(configType.getTypeClass(), new LockedRegistry<>(pack.getRegistry(configType.getTypeClass())))); - this.scriptRegistry = new LockedRegistry<>(pack.getScriptRegistry()); OpenRegistry biomeOpenRegistry = new OpenRegistry<>(); pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); @@ -61,10 +58,6 @@ public class WorldConfig { return new HashSet<>(getRegistry(UserDefinedCarver.class).entries()); } - public LockedRegistry getScriptRegistry() { - return scriptRegistry; - } - public BiomeProvider getProvider() { return provider; } diff --git a/common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index ccbfee9ca..ac0bc4b48 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,6 +1,5 @@ package com.dfsek.terra.registry.config; -import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.math.noise.samplers.noise.random.GaussianNoiseSampler; import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2SSampler; @@ -9,7 +8,7 @@ import com.dfsek.terra.api.math.noise.samplers.noise.simplex.PerlinSampler; import com.dfsek.terra.api.math.noise.samplers.noise.simplex.SimplexSampler; import com.dfsek.terra.api.math.noise.samplers.noise.value.ValueCubicSampler; import com.dfsek.terra.api.math.noise.samplers.noise.value.ValueSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.KernelTemplate; @@ -26,9 +25,7 @@ import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.Linear import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; import com.dfsek.terra.registry.OpenRegistry; -import java.util.function.Supplier; - -public class NoiseRegistry extends OpenRegistry>> { +public class NoiseRegistry extends OpenRegistry { public NoiseRegistry() { add("LINEAR", LinearNormalizerTemplate::new); add("NORMAL", NormalNormalizerTemplate::new); diff --git a/common/src/test/java/biome/DistributionTest.java b/common/src/test/java/biome/DistributionTest.java deleted file mode 100644 index 711aba9c7..000000000 --- a/common/src/test/java/biome/DistributionTest.java +++ /dev/null @@ -1,352 +0,0 @@ -package biome; - -import com.dfsek.tectonic.abstraction.AbstractConfigLoader; -import com.dfsek.tectonic.annotations.Abstractable; -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; -import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.util.logging.JavaLogger; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.biome.Generator; -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.builder.BiomeBuilder; -import com.dfsek.terra.config.fileloaders.FolderLoader; -import com.dfsek.terra.config.lang.Language; -import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; -import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.loaders.config.biome.BiomeProviderBuilderLoader; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.BiomePipelineTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProviderTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; -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.config.templates.BiomeTemplate; -import com.dfsek.terra.registry.config.BiomeRegistry; -import com.dfsek.terra.registry.config.NoiseRegistry; -import com.dfsek.terra.world.TerraWorld; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.image.BufferedImage; -import java.awt.image.ColorModel; -import java.awt.image.WritableRaster; -import java.io.File; -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ThreadLocalRandom; -import java.util.logging.Logger; - -public class DistributionTest { - private static final TerraPlugin MAIN = new TerraPlugin() { - @Override - public WorldHandle getWorldHandle() { - return null; - } - - @Override - public TerraWorld getWorld(World world) { - return null; - } - - @Override - public com.dfsek.terra.api.util.logging.Logger logger() { - return new JavaLogger(Logger.getLogger("Terra")); - } - - @Override - public PluginConfig getTerraConfig() { - return new PluginConfig(); - } - - @Override - public File getDataFolder() { - return null; - } - - @Override - public boolean isDebug() { - return false; - } - - @Override - public Language getLanguage() { - return null; - } - - @Override - public CheckedRegistry getConfigRegistry() { - return null; - } - - @Override - public LockedRegistry getAddons() { - return null; - } - - @Override - public boolean reload() { - return true; - } - - @Override - public ItemHandle getItemHandle() { - return null; - } - - @Override - public void saveDefaultConfig() { - - } - - @Override - public String platformName() { - return null; - } - - @Override - public DebugLogger getDebugLogger() { - return new DebugLogger(new JavaLogger(Logger.getLogger("Terra"))); - } - - @Override - public EventManager getEventManager() { - return null; - } - - @Override - public void register(TypeRegistry registry) { - - } - }; - - - private static BiomeProvider getProvider(long seed) throws ConfigException, IOException { - System.out.println(seed); - File pack = new File("/home/dfsek/Documents/Terra/platforms/bukkit/target/server/plugins/Terra/packs/default/"); - FolderLoader folderLoader = new FolderLoader(pack.toPath()); - - AbstractConfigLoader loader = new AbstractConfigLoader(); - new GenericLoaders(MAIN).register(loader); - - BiomeRegistry biomeRegistry = new BiomeRegistry(); - folderLoader.open("biomes", ".yml").then(inputStreams -> ConfigPack.buildAll((template, main) -> template, biomeRegistry, loader.load(inputStreams, TestBiome::new), MAIN)); - - BiomeProviderTemplate template = new BiomeProviderTemplate(); - ConfigLoader pipeLoader = new ConfigLoader() - .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) - .registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) - .registerLoader(BiomeBuilder.class, biomeRegistry) - .registerLoader(BufferedImage.class, new BufferedImageLoader(folderLoader)) - .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) - .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(MAIN)) - .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(biomeRegistry)); - new GenericLoaders(MAIN).register(pipeLoader); - - pipeLoader.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(new NoiseRegistry())); - - pipeLoader.load(template, folderLoader.get("pack.yml")); - return template.getBiomeProviderBuilder().build(seed); - } - - public static void main(String... args) throws ConfigException, IOException { - JFrame testFrame = new JFrame("Biome Viewer"); - - - final BiomeProvider[] provider = {getProvider(2403)}; - - - int size = 1024; - final BufferedImage[] image = {new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB)}; - for(int x = 0; x < size; x++) { - for(int z = 0; z < size; z++) { - image[0].setRGB(x, z, provider[0].getBiome(x, z).getColor()); - } - } - - JLabel img = new JLabel(new ImageIcon(image[0])); - - testFrame.add(img); - testFrame.pack(); - img.addMouseListener(new MouseListener() { - @Override - public void mouseClicked(MouseEvent e) { - BufferedImage newImage = deepCopy(image[0]); - Graphics graphics = newImage.getGraphics(); - graphics.setColor(Color.WHITE); - graphics.fillRect(0, 0, 512, 24); - graphics.setColor(Color.BLACK); - graphics.setFont(new Font("Monospace", Font.BOLD, 20)); - graphics.drawString(provider[0].getBiome(e.getX(), e.getY()).toString(), 0, 20); - - graphics.setColor(Color.WHITE); - graphics.fillOval(e.getX() - 2, e.getY() - 2, 12, 12); - graphics.setColor(Color.BLACK); - graphics.fillOval(e.getX(), e.getY(), 8, 8); - - img.setIcon(new ImageIcon(newImage)); - } - - @Override - public void mousePressed(MouseEvent e) { - - } - - @Override - public void mouseReleased(MouseEvent e) { - - } - - @Override - public void mouseEntered(MouseEvent e) { - - } - - @Override - public void mouseExited(MouseEvent e) { - - } - }); - - testFrame.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - if(e.getKeyChar() == 's') { - long l = System.nanoTime(); - try { - provider[0] = getProvider(ThreadLocalRandom.current().nextLong()); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - image[0] = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); - for(int x = 0; x < size; x++) { - for(int z = 0; z < size; z++) { - image[0].setRGB(x, z, provider[0].getBiome(x, z).getColor()); - } - } - long n = System.nanoTime(); - double t = n - l; - System.out.println("Time: " + t / 1000000 + "ms"); - img.setIcon(new ImageIcon(image[0])); - } - } - - @Override - public void keyPressed(KeyEvent e) { - - } - - @Override - public void keyReleased(KeyEvent e) { - - } - }); - - testFrame.setResizable(false); - testFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - testFrame.setVisible(true); - - } - - private static BufferedImage deepCopy(BufferedImage bi) { - ColorModel cm = bi.getColorModel(); - boolean isAlphaPremultiplied = cm.isAlphaPremultiplied(); - WritableRaster raster = bi.copyData(null); - return new BufferedImage(cm, raster, isAlphaPremultiplied, null); - } - - private static final class BiomeProviderTemplate implements ConfigTemplate { - @Value("biomes") - BiomeProvider.BiomeProviderBuilder biomeProviderBuilder; - - public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { - return biomeProviderBuilder; - } - } - - private static final class TestBiome extends AbstractableTemplate implements TerraBiome, ValidatedConfigTemplate, BiomeBuilder { - - @Value("color") - @Default - @Abstractable - private int color; - - @Value("tags") - @Abstractable - @Default - private Set tags = new HashSet<>(); - - @Value("id") - private String id; - - @Override - public ProbabilityCollection getVanillaBiomes() { - return null; - } - - @Override - public BiomeTemplate getTemplate() { - return null; - } - - @Override - public Generator getGenerator(World w) { - return null; - } - - @Override - public int getColor() { - return color; - } - - @Override - public Set getTags() { - return tags; - } - - @Override - public boolean validate() { - color += (255 << 24); // Alpha adjustment - tags.add("BIOME:" + id); - return true; - } - - @Override - public String getID() { - return id; - } - - @Override - public String toString() { - return id; - } - - @Override - public TestBiome apply(Long aLong) { - return this; - } - } -} diff --git a/common/src/test/java/biome/ImageTest.java b/common/src/test/java/biome/ImageTest.java deleted file mode 100644 index ddc96dafc..000000000 --- a/common/src/test/java/biome/ImageTest.java +++ /dev/null @@ -1,218 +0,0 @@ -package biome; - -import com.dfsek.tectonic.abstraction.AbstractConfigLoader; -import com.dfsek.tectonic.annotations.Abstractable; -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.Generator; -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; -import com.dfsek.terra.registry.OpenRegistry; -import org.junit.jupiter.api.Test; - -import javax.imageio.ImageIO; -import javax.swing.*; -import java.awt.*; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.image.BufferedImage; -import java.awt.image.ColorModel; -import java.awt.image.WritableRaster; -import java.io.File; -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ThreadLocalRandom; - -public class ImageTest { - private static ImageBiomeProvider getProvider(long seed) throws ConfigException, IOException { - System.out.println(seed); - File pack = new File("/home/dfsek/Documents/Terra/platforms/bukkit/target/server/plugins/Terra/packs/default/"); - FolderLoader folderLoader = new FolderLoader(pack.toPath()); - - AbstractConfigLoader loader = new AbstractConfigLoader(); - - OpenRegistry biomeRegistry = new OpenRegistry() { - }; - folderLoader.open("biomes", ".yml").then(inputStreams -> ConfigPack.buildAll((template, main) -> template, biomeRegistry, loader.load(inputStreams, TestBiome::new), null)); - - return new ImageBiomeProvider(biomeRegistry.entries(), ImageIO.read(ImageTest.class.getResourceAsStream("/map.jpg")), 1, ImageBiomeProvider.Align.CENTER); - } - - @Test - public static void main(String... args) throws ConfigException, IOException { - JFrame testFrame = new JFrame("Biome Viewer"); - - - final BiomeProvider[] provider = {getProvider(2403)}; - - - int size = 1024; - final BufferedImage[] image = {new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB)}; - for(int x = 0; x < size; x++) { - for(int z = 0; z < size; z++) { - image[0].setRGB(x, z, provider[0].getBiome(x, z).getColor()); - } - } - - JLabel img = new JLabel(new ImageIcon(image[0])); - - testFrame.add(img); - testFrame.pack(); - img.addMouseListener(new MouseListener() { - @Override - public void mouseClicked(MouseEvent e) { - BufferedImage newImage = deepCopy(image[0]); - Graphics graphics = newImage.getGraphics(); - graphics.setColor(Color.WHITE); - graphics.fillRect(0, 0, 512, 24); - graphics.setColor(Color.BLACK); - graphics.setFont(new Font("Monospace", Font.BOLD, 20)); - graphics.drawString(provider[0].getBiome(e.getX(), e.getY()).toString(), 0, 20); - - graphics.setColor(Color.WHITE); - graphics.fillOval(e.getX() - 2, e.getY() - 2, 12, 12); - graphics.setColor(Color.BLACK); - graphics.fillOval(e.getX(), e.getY(), 8, 8); - - img.setIcon(new ImageIcon(newImage)); - } - - @Override - public void mousePressed(MouseEvent e) { - - } - - @Override - public void mouseReleased(MouseEvent e) { - - } - - @Override - public void mouseEntered(MouseEvent e) { - - } - - @Override - public void mouseExited(MouseEvent e) { - - } - }); - - testFrame.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - if(e.getKeyChar() == 's') { - try { - provider[0] = getProvider(ThreadLocalRandom.current().nextLong()); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - image[0] = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); - for(int x = 0; x < size; x++) { - for(int z = 0; z < size; z++) { - image[0].setRGB(x, z, provider[0].getBiome(x, z).getColor()); - } - } - img.setIcon(new ImageIcon(image[0])); - } - } - - @Override - public void keyPressed(KeyEvent e) { - - } - - @Override - public void keyReleased(KeyEvent e) { - - } - }); - - testFrame.setResizable(false); - testFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - testFrame.setVisible(true); - - } - - private static BufferedImage deepCopy(BufferedImage bi) { - ColorModel cm = bi.getColorModel(); - boolean isAlphaPremultiplied = cm.isAlphaPremultiplied(); - WritableRaster raster = bi.copyData(null); - return new BufferedImage(cm, raster, isAlphaPremultiplied, null); - } - - private static final class BiomeProviderTemplate implements ConfigTemplate { - @Value("biome-pipeline") - BiomeProvider.BiomeProviderBuilder biomeProviderBuilder; - - public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { - return biomeProviderBuilder; - } - } - - private static final class TestBiome extends AbstractableTemplate implements TerraBiome, ValidatedConfigTemplate { - - @Value("color") - @Default - @Abstractable - private int color; - - @Value("tags") - @Abstractable - @Default - private Set tags = new HashSet<>(); - - @Value("id") - private String id; - - @Override - public ProbabilityCollection getVanillaBiomes() { - return null; - } - - @Override - public Generator getGenerator(World w) { - return null; - } - - @Override - public int getColor() { - return color; - } - - @Override - public Set getTags() { - return tags; - } - - @Override - public boolean validate() { - color += (255 << 24); // Alpha adjustment - tags.add("BIOME:" + id); - return true; - } - - @Override - public String getID() { - return id; - } - - @Override - public String toString() { - return id; - } - } -} From 89267ce8cbdfa8d9cfae16f442ce026d0c0510d1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 22:54:55 -0700 Subject: [PATCH 0015/1529] basic profiler implementation --- .../java/com/dfsek/terra/profiler/Frame.java | 24 +++++++ .../com/dfsek/terra/profiler/Profiler.java | 21 ++++++ .../dfsek/terra/profiler/ProfilerImpl.java | 70 +++++++++++++++++++ .../com/dfsek/terra/profiler/Timings.java | 56 +++++++++++++++ .../exception/MalformedStackException.java | 17 +++++ .../profiler/exception/ProfilerException.java | 17 +++++ .../src/test/java/profiler/ProfilerTest.java | 45 ++++++++++++ 7 files changed, 250 insertions(+) create mode 100644 common/src/main/java/com/dfsek/terra/profiler/Frame.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/Profiler.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/Timings.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java create mode 100644 common/src/test/java/profiler/ProfilerTest.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/Frame.java b/common/src/main/java/com/dfsek/terra/profiler/Frame.java new file mode 100644 index 000000000..7b7be66b5 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/Frame.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.profiler; + +public class Frame { + private final String id; + private final long start; + + public Frame(String id) { + this.id = id; + this.start = System.nanoTime(); + } + + public String getId() { + return id; + } + + public long getStart() { + return start; + } + + @Override + public String toString() { + return id; + } +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java new file mode 100644 index 000000000..ce0fa48c9 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.profiler; + +import java.util.Map; + +public interface Profiler { + ProfilerImpl INSTANCE = new ProfilerImpl(); + + static Profiler getInstance() { + return INSTANCE; + } + + void push(String frame); + + void pop(String frame); + + void start(); + + void stop(); + + Map getTimings(); +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java new file mode 100644 index 000000000..c1410842c --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -0,0 +1,70 @@ +package com.dfsek.terra.profiler; + +import com.dfsek.terra.profiler.exception.MalformedStackException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Stack; + +public class ProfilerImpl implements Profiler { + private static final ThreadLocal> THREAD_STACK = ThreadLocal.withInitial(Stack::new); + private static final ThreadLocal> TIMINGS = ThreadLocal.withInitial(HashMap::new); + private final List> accessibleThreadMaps = new ArrayList<>(); + private volatile boolean running = false; + + + protected ProfilerImpl() { + + } + + @Override + public void push(String frame) { + if(running) THREAD_STACK.get().push(new Frame(frame)); + } + + @Override + public void pop(String frame) { + if(running) { + long time = System.nanoTime(); + Stack stack = THREAD_STACK.get(); + + Map timingsMap = TIMINGS.get(); + + if(timingsMap.size() == 0) { + synchronized(accessibleThreadMaps) { + accessibleThreadMaps.add(timingsMap); + } + } + + Timings bottom = timingsMap.computeIfAbsent(stack.get(0).getId(), id -> new Timings()); + + for(int i = 1; i < stack.size(); i++) { + bottom = bottom.getSubItem(stack.get(i).getId()); + } + + Frame top = stack.pop(); + if(!top.getId().equals(frame)) throw new MalformedStackException("Expected " + frame + ", found " + top); + + bottom.addTime(time - top.getStart()); + } + } + + @Override + public void start() { + running = true; + } + + @Override + public void stop() { + running = false; + } + + @Override + public Map getTimings() { + Map map = new HashMap<>(); + accessibleThreadMaps.forEach(map::putAll); + return map; + } +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/src/main/java/com/dfsek/terra/profiler/Timings.java new file mode 100644 index 000000000..383211ef6 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/Timings.java @@ -0,0 +1,56 @@ +package com.dfsek.terra.profiler; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Timings { + private final Map subItems = new HashMap<>(); + + private final List timings = new ArrayList<>(); + + public void addTime(long time) { + timings.add(time); + } + + public List getTimings() { + return timings; + } + + public double average() { + return (double) timings.stream().reduce(0L, Long::sum) / timings.size(); + } + + public long max() { + return timings.stream().mapToLong(Long::longValue).max().orElse(0L); + } + + public long min() { + return timings.stream().mapToLong(Long::longValue).min().orElse(0L); + } + + public Timings getSubItem(String id) { + return subItems.computeIfAbsent(id, s -> new Timings()); + } + + public String toString(int indent) { + StringBuilder builder = new StringBuilder(); + + builder.append("Avg ").append(average() / 1000000).append("ms"); + + subItems.forEach((id, timings) -> { + builder.append('\n'); + for(int i = 0; i <= indent; i++) { + builder.append('\t'); + } + builder.append(id).append(": ").append(timings.toString(indent + 1)); + }); + return builder.toString(); + } + + @Override + public String toString() { + return toString(0); + } +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java b/common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java new file mode 100644 index 000000000..0ae345a0f --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.profiler.exception; + +public class MalformedStackException extends ProfilerException { + private static final long serialVersionUID = -3009539681021691054L; + + public MalformedStackException(String message) { + super(message); + } + + public MalformedStackException(String message, Throwable cause) { + super(message, cause); + } + + public MalformedStackException(Throwable cause) { + super(cause); + } +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java b/common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java new file mode 100644 index 000000000..27c6d734f --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.profiler.exception; + +public class ProfilerException extends RuntimeException { + private static final long serialVersionUID = 8206737998791649002L; + + public ProfilerException(String message) { + super(message); + } + + public ProfilerException(String message, Throwable cause) { + super(message, cause); + } + + public ProfilerException(Throwable cause) { + super(cause); + } +} diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/src/test/java/profiler/ProfilerTest.java new file mode 100644 index 000000000..1660310f8 --- /dev/null +++ b/common/src/test/java/profiler/ProfilerTest.java @@ -0,0 +1,45 @@ +package profiler; + +import com.dfsek.terra.profiler.Profiler; + +public class ProfilerTest { + //@Test + public static void main(String... a) throws InterruptedException { + Profiler.INSTANCE.start(); + for(int i = 0; i < 100; i++) { + doThing(); + } + + for(int i = 0; i < 100; i++) { + doThirdOtherThing(); + } + + for(int i = 0; i < 100; i++) { + doOtherThing(); + } + Profiler.INSTANCE.stop(); + Profiler.INSTANCE.getTimings().forEach((id, timings) -> { + System.out.println(id + ": " + timings.toString()); + }); + } + + private static void doThing() throws InterruptedException { + Profiler.INSTANCE.push("thing"); + Thread.sleep(1); + doOtherThing(); + Profiler.INSTANCE.pop("thing"); + } + + private static void doOtherThing() throws InterruptedException { + Profiler.INSTANCE.push("thing2"); + Thread.sleep(2); + doThirdOtherThing(); + Profiler.INSTANCE.pop("thing2"); + } + + private static void doThirdOtherThing() throws InterruptedException { + Profiler.INSTANCE.push("thing3"); + Thread.sleep(2); + Profiler.INSTANCE.pop("thing3"); + } +} From 7b3b34162740f3e25d83e447dffedbfada19758a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 23:08:32 -0700 Subject: [PATCH 0016/1529] improve data output --- .../src/main/java/com/dfsek/terra/api/TerraPlugin.java | 3 +++ .../main/java/com/dfsek/terra/profiler/Profiler.java | 4 ---- .../java/com/dfsek/terra/profiler/ProfilerImpl.java | 2 +- .../main/java/com/dfsek/terra/profiler/Timings.java | 10 ++++++---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java index fb9f87613..aeeb5e814 100644 --- a/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -12,6 +12,7 @@ import com.dfsek.terra.api.util.logging.Logger; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.profiler.Profiler; import com.dfsek.terra.world.TerraWorld; import java.io.File; @@ -64,4 +65,6 @@ public interface TerraPlugin extends LoaderRegistrar { default void runPossiblyUnsafeTask(Runnable task) { task.run(); } + + Profiler getProfiler(); } diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java index ce0fa48c9..d2f625c43 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java @@ -5,10 +5,6 @@ import java.util.Map; public interface Profiler { ProfilerImpl INSTANCE = new ProfilerImpl(); - static Profiler getInstance() { - return INSTANCE; - } - void push(String frame); void pop(String frame); diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index c1410842c..b84986e3d 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -15,7 +15,7 @@ public class ProfilerImpl implements Profiler { private volatile boolean running = false; - protected ProfilerImpl() { + public ProfilerImpl() { } diff --git a/common/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/src/main/java/com/dfsek/terra/profiler/Timings.java index 383211ef6..e632e4cf0 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Timings.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Timings.java @@ -34,23 +34,25 @@ public class Timings { return subItems.computeIfAbsent(id, s -> new Timings()); } - public String toString(int indent) { + public String toString(int indent, Timings parent) { StringBuilder builder = new StringBuilder(); - builder.append("Avg ").append(average() / 1000000).append("ms"); + builder.append((double) min() / 1000000).append("ms min / ").append(average() / 1000000).append("ms avg / ") + .append((double) max() / 1000000).append("ms max (").append(timings.size()).append(" samples, ") + .append((average() / parent.average()) * 100).append("% of parent)"); subItems.forEach((id, timings) -> { builder.append('\n'); for(int i = 0; i <= indent; i++) { builder.append('\t'); } - builder.append(id).append(": ").append(timings.toString(indent + 1)); + builder.append(id).append(": ").append(timings.toString(indent + 1, this)); }); return builder.toString(); } @Override public String toString() { - return toString(0); + return toString(0, this); } } From 4eadbb7d83ab08287cc4cfca61c267f70d9c49e2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 11 Apr 2021 23:24:44 -0700 Subject: [PATCH 0017/1529] improve performance in deep operations --- .../dfsek/terra/profiler/ProfilerImpl.java | 35 ++++++++++++------- .../src/test/java/profiler/ProfilerTest.java | 2 +- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index b84986e3d..5e4998010 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -10,8 +10,8 @@ import java.util.Stack; public class ProfilerImpl implements Profiler { private static final ThreadLocal> THREAD_STACK = ThreadLocal.withInitial(Stack::new); - private static final ThreadLocal> TIMINGS = ThreadLocal.withInitial(HashMap::new); - private final List> accessibleThreadMaps = new ArrayList<>(); + private static final ThreadLocal>> TIMINGS = ThreadLocal.withInitial(HashMap::new); + private final List>> accessibleThreadMaps = new ArrayList<>(); private volatile boolean running = false; @@ -21,7 +21,10 @@ public class ProfilerImpl implements Profiler { @Override public void push(String frame) { - if(running) THREAD_STACK.get().push(new Frame(frame)); + if(running) { + Stack stack = THREAD_STACK.get(); + stack.push(new Frame(stack.size() == 0 ? frame : stack.peek().getId() + "." + frame)); + } } @Override @@ -30,7 +33,7 @@ public class ProfilerImpl implements Profiler { long time = System.nanoTime(); Stack stack = THREAD_STACK.get(); - Map timingsMap = TIMINGS.get(); + Map> timingsMap = TIMINGS.get(); if(timingsMap.size() == 0) { synchronized(accessibleThreadMaps) { @@ -38,16 +41,13 @@ public class ProfilerImpl implements Profiler { } } - Timings bottom = timingsMap.computeIfAbsent(stack.get(0).getId(), id -> new Timings()); - - for(int i = 1; i < stack.size(); i++) { - bottom = bottom.getSubItem(stack.get(i).getId()); - } - Frame top = stack.pop(); - if(!top.getId().equals(frame)) throw new MalformedStackException("Expected " + frame + ", found " + top); + if((stack.size() != 0 && !top.getId().endsWith("." + frame)) || (stack.size() == 0 && !top.getId().equals(frame))) + throw new MalformedStackException("Expected " + frame + ", found " + top); - bottom.addTime(time - top.getStart()); + List timings = timingsMap.computeIfAbsent(top.getId(), id -> new ArrayList<>()); + + timings.add(time - top.getStart()); } } @@ -64,7 +64,16 @@ public class ProfilerImpl implements Profiler { @Override public Map getTimings() { Map map = new HashMap<>(); - accessibleThreadMaps.forEach(map::putAll); + accessibleThreadMaps.forEach(smap -> { + smap.forEach((key, list) -> { + String[] keys = key.split("\\."); + Timings timings = map.computeIfAbsent(keys[0], id -> new Timings()); + for(int i = 1; i < keys.length; i++) { + timings = timings.getSubItem(keys[i]); + } + list.forEach(timings::addTime); + }); + }); return map; } } diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/src/test/java/profiler/ProfilerTest.java index 1660310f8..813e08eae 100644 --- a/common/src/test/java/profiler/ProfilerTest.java +++ b/common/src/test/java/profiler/ProfilerTest.java @@ -6,7 +6,7 @@ public class ProfilerTest { //@Test public static void main(String... a) throws InterruptedException { Profiler.INSTANCE.start(); - for(int i = 0; i < 100; i++) { + for(int i = 0; i < 1000; i++) { doThing(); } From b3e3c28276095ff401c29f5bdae4bee0a69943e0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 00:05:53 -0700 Subject: [PATCH 0018/1529] implement TerraPlugin#getProfier --- .../com/dfsek/terra/profiler/Profiler.java | 2 -- .../dfsek/terra/profiler/ProfilerImpl.java | 22 +++++++++---------- .../src/test/java/profiler/ProfilerTest.java | 20 +++++++++-------- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 9 ++++++++ .../dfsek/terra/fabric/TerraFabricPlugin.java | 10 +++++++++ .../com/dfsek/terra/StandalonePlugin.java | 9 ++++++++ .../dfsek/terra/sponge/TerraSpongePlugin.java | 6 +++++ 7 files changed, 56 insertions(+), 22 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java index d2f625c43..9d984fcf6 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java @@ -3,8 +3,6 @@ package com.dfsek.terra.profiler; import java.util.Map; public interface Profiler { - ProfilerImpl INSTANCE = new ProfilerImpl(); - void push(String frame); void pop(String frame); diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index 5e4998010..23f00d495 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -13,10 +13,12 @@ public class ProfilerImpl implements Profiler { private static final ThreadLocal>> TIMINGS = ThreadLocal.withInitial(HashMap::new); private final List>> accessibleThreadMaps = new ArrayList<>(); private volatile boolean running = false; + private static boolean instantiated = false; public ProfilerImpl() { - + if(instantiated) throw new IllegalStateException("Only one instance of Profiler may exist!"); + instantiated = true; } @Override @@ -64,16 +66,14 @@ public class ProfilerImpl implements Profiler { @Override public Map getTimings() { Map map = new HashMap<>(); - accessibleThreadMaps.forEach(smap -> { - smap.forEach((key, list) -> { - String[] keys = key.split("\\."); - Timings timings = map.computeIfAbsent(keys[0], id -> new Timings()); - for(int i = 1; i < keys.length; i++) { - timings = timings.getSubItem(keys[i]); - } - list.forEach(timings::addTime); - }); - }); + accessibleThreadMaps.forEach(smap -> smap.forEach((key, list) -> { + String[] keys = key.split("\\."); + Timings timings = map.computeIfAbsent(keys[0], id -> new Timings()); + for(int i = 1; i < keys.length; i++) { + timings = timings.getSubItem(keys[i]); + } + list.forEach(timings::addTime); + })); return map; } } diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/src/test/java/profiler/ProfilerTest.java index 813e08eae..b60ea32e5 100644 --- a/common/src/test/java/profiler/ProfilerTest.java +++ b/common/src/test/java/profiler/ProfilerTest.java @@ -1,11 +1,13 @@ package profiler; import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.profiler.ProfilerImpl; public class ProfilerTest { + private static final Profiler PROFILER = new ProfilerImpl(); //@Test public static void main(String... a) throws InterruptedException { - Profiler.INSTANCE.start(); + PROFILER.start(); for(int i = 0; i < 1000; i++) { doThing(); } @@ -17,29 +19,29 @@ public class ProfilerTest { for(int i = 0; i < 100; i++) { doOtherThing(); } - Profiler.INSTANCE.stop(); - Profiler.INSTANCE.getTimings().forEach((id, timings) -> { + PROFILER.stop(); + PROFILER.getTimings().forEach((id, timings) -> { System.out.println(id + ": " + timings.toString()); }); } private static void doThing() throws InterruptedException { - Profiler.INSTANCE.push("thing"); + PROFILER.push("thing"); Thread.sleep(1); doOtherThing(); - Profiler.INSTANCE.pop("thing"); + PROFILER.pop("thing"); } private static void doOtherThing() throws InterruptedException { - Profiler.INSTANCE.push("thing2"); + PROFILER.push("thing2"); Thread.sleep(2); doThirdOtherThing(); - Profiler.INSTANCE.pop("thing2"); + PROFILER.pop("thing2"); } private static void doThirdOtherThing() throws InterruptedException { - Profiler.INSTANCE.push("thing3"); + PROFILER.push("thing3"); Thread.sleep(2); - Profiler.INSTANCE.pop("thing3"); + PROFILER.pop("thing3"); } } 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 e1254e51e..e65a918fc 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 @@ -40,6 +40,8 @@ import com.dfsek.terra.config.PluginConfig; 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.profiler.Profiler; +import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; @@ -64,6 +66,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private final Map worldMap = new HashMap<>(); private final Map worlds = new HashMap<>(); + private final Profiler profiler = new ProfilerImpl(); + private final ConfigRegistry registry = new ConfigRegistry(); private final CheckedRegistry checkedRegistry = new CheckedRegistry<>(registry); @@ -141,6 +145,11 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { Bukkit.getScheduler().runTask(this, task); } + @Override + public Profiler getProfiler() { + return profiler; + } + @Override public void onDisable() { BukkitChunkGeneratorWrapper.saveAll(); 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 95b8f1fb5..6b7359713 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 @@ -46,6 +46,8 @@ import com.dfsek.terra.fabric.world.TerraBiomeSource; import com.dfsek.terra.fabric.world.features.PopulatorFeature; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; +import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.exception.DuplicateEntryException; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; @@ -105,6 +107,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final Map worldMap = new HashMap<>(); private final EventManager eventManager = new TerraEventManager(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); + + private final Profiler profiler = new ProfilerImpl(); + private final Logger logger = new Logger() { private final org.apache.logging.log4j.Logger logger = LogManager.getLogger(); @@ -389,6 +394,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return eventManager; } + @Override + public Profiler getProfiler() { + return profiler; + } + @Addon("Terra-Fabric") @Author("Terra") @Version("1.0.0") 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 a1dd2e4c9..ff426a5c0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -21,6 +21,8 @@ import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; +import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; @@ -39,6 +41,8 @@ public class StandalonePlugin implements TerraPlugin { private final RawWorldHandle worldHandle = new RawWorldHandle(); private final EventManager eventManager = new TerraEventManager(this); + private final Profiler profiler = new ProfilerImpl(); + @Override public WorldHandle getWorldHandle() { return worldHandle; @@ -147,4 +151,9 @@ public class StandalonePlugin implements TerraPlugin { public EventManager getEventManager() { return eventManager; } + + @Override + public Profiler getProfiler() { + return profiler; + } } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 78baf45d5..536850875 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -14,6 +14,7 @@ import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; @@ -138,4 +139,9 @@ public class TerraSpongePlugin implements TerraPlugin { public EventManager getEventManager() { return eventManager; } + + @Override + public Profiler getProfiler() { + return null; + } } From f4716cb28fe9432c5d630212b460aae5b6cd6642 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 00:07:22 -0700 Subject: [PATCH 0019/1529] add autocloseable option --- common/src/main/java/com/dfsek/terra/profiler/Profiler.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java index 9d984fcf6..b2b2a578e 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java @@ -12,4 +12,9 @@ public interface Profiler { void stop(); Map getTimings(); + + default AutoCloseable profile(String frame) { + push(frame); + return () -> pop(frame); + } } From 9c1a35f444261dcefbb3354d9d236dc92733c83f Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 00:24:13 -0700 Subject: [PATCH 0020/1529] implement new profiler --- .../profiler/ProfileQueryCommand.java | 13 +-- .../profiler/ProfileResetCommand.java | 12 +-- .../profiler/ProfileStartCommand.java | 12 +-- .../commands/profiler/ProfileStopCommand.java | 12 +-- .../com/dfsek/terra/profiler/DataHolder.java | 36 -------- .../com/dfsek/terra/profiler/DataType.java | 24 ----- .../java/com/dfsek/terra/profiler/Desire.java | 10 --- .../com/dfsek/terra/profiler/Measurement.java | 87 ------------------- .../dfsek/terra/profiler/ProfileFrame.java | 14 +++ .../dfsek/terra/profiler/ProfileFuture.java | 18 ---- .../com/dfsek/terra/profiler/Profiler.java | 8 +- .../dfsek/terra/profiler/WorldProfiler.java | 85 ------------------ .../com/dfsek/terra/world/TerraWorld.java | 6 -- .../generators/DefaultChunkGenerator2D.java | 4 +- .../generators/DefaultChunkGenerator3D.java | 4 +- .../terra/world/population/CavePopulator.java | 6 +- .../world/population/FloraPopulator.java | 4 +- .../terra/world/population/OrePopulator.java | 4 +- .../world/population/StructurePopulator.java | 5 +- .../terra/world/population/TreePopulator.java | 4 +- .../BukkitChunkGeneratorWrapper.java | 13 --- .../bukkit/population/PopulationManager.java | 16 +--- 22 files changed, 47 insertions(+), 350 deletions(-) delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/DataHolder.java delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/DataType.java delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/Desire.java delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/Measurement.java create mode 100644 common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/ProfileFuture.java delete mode 100644 common/src/main/java/com/dfsek/terra/profiler/WorldProfiler.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java index 16f383b2d..eb54976e5 100644 --- a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java +++ b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java @@ -4,16 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.world.TerraWorld; @Command -@WorldCommand -@PlayerCommand @DebugCommand public class ProfileQueryCommand implements CommandTemplate { @Inject @@ -21,8 +15,9 @@ public class ProfileQueryCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - Player player = (Player) sender; - TerraWorld world = main.getWorld(player.getWorld()); - player.sendMessage(world.getProfiler().getResultsFormatted()); + StringBuilder data = new StringBuilder("Terra Profiler data dump: \n"); + main.getProfiler().getTimings().forEach((id, timings) -> data.append(id).append(": ").append(timings.toString()).append('\n')); + main.logger().info(data.toString()); + sender.sendMessage("Profiler data dumped to console."); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java index 1a4c47e6e..2e5a97d6d 100644 --- a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java +++ b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java @@ -4,16 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.world.TerraWorld; @Command -@WorldCommand -@PlayerCommand @DebugCommand public class ProfileResetCommand implements CommandTemplate { @Inject @@ -21,9 +15,7 @@ public class ProfileResetCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - Player player = (Player) sender; - TerraWorld world = main.getWorld(player.getWorld()); - world.getProfiler().reset(); - player.sendMessage("Profiler reset."); + main.getProfiler().reset(); + sender.sendMessage("Profiler reset."); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java index 36dcec85b..63c28c472 100644 --- a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java +++ b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java @@ -4,16 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.world.TerraWorld; @Command -@WorldCommand -@PlayerCommand @DebugCommand public class ProfileStartCommand implements CommandTemplate { @Inject @@ -21,9 +15,7 @@ public class ProfileStartCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - Player player = (Player) sender; - TerraWorld world = main.getWorld(player.getWorld()); - world.getProfiler().setProfiling(true); - player.sendMessage("Profiling enabled."); + main.getProfiler().start(); + sender.sendMessage("Profiling enabled."); } } diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java index 64e46fe39..baa5aeab3 100644 --- a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java +++ b/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java @@ -4,16 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.world.TerraWorld; @Command -@WorldCommand -@PlayerCommand @DebugCommand public class ProfileStopCommand implements CommandTemplate { @Inject @@ -21,9 +15,7 @@ public class ProfileStopCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - Player player = (Player) sender; - TerraWorld world = main.getWorld(player.getWorld()); - world.getProfiler().setProfiling(false); - player.sendMessage("Profiling disabled."); + main.getProfiler().stop(); + sender.sendMessage("Profiling disabled."); } } diff --git a/common/src/main/java/com/dfsek/terra/profiler/DataHolder.java b/common/src/main/java/com/dfsek/terra/profiler/DataHolder.java deleted file mode 100644 index e90671e7f..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/DataHolder.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.profiler; - -/** - * Class to hold a profiler data value. Contains formatting method to highlight value based on desired range. - */ -public class DataHolder { - private final long desired; - private final DataType type; - private final double desiredRangePercent; - - /** - * Constructs a DataHolder with a DataType and a desired value, including a percentage around the desired value considered acceptable - * - * @param type The type of data held in this instance. - * @param desired The desired value. This should be the average value of whatever is being measured. - * @param desiredRangePercent The percentage around the desired value to be considered acceptable. - */ - public DataHolder(DataType type, long desired, double desiredRangePercent) { - this.desired = desired; - this.type = type; - this.desiredRangePercent = desiredRangePercent; - } - - /** - * Returns a String, formatted with Bungee ChatColors.
- * GREEN if the value is better than desired and outside of acceptable range.
- * YELLOW if the value is better or worse than desired, and within acceptable range.
- * RED if the value is worse than desired and outside of acceptable range.
- * - * @param data The data to format. - * @return String - The formatted data. - */ - public String getFormattedData(long data) { - return type.getFormatted(data); - } -} diff --git a/common/src/main/java/com/dfsek/terra/profiler/DataType.java b/common/src/main/java/com/dfsek/terra/profiler/DataType.java deleted file mode 100644 index eaaad91ea..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/DataType.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.profiler; - -import net.jafama.FastMath; - -public enum DataType { - PERIOD_MILLISECONDS(Desire.LOW, 1000000, "ms"), PERIOD_NANOSECONDS(Desire.LOW, 1, "ns"); - private final Desire desire; - private final long divisor; - private final String unit; - - DataType(Desire d, long divisor, String unit) { - this.desire = d; - this.divisor = divisor; - this.unit = unit; - } - - public String getFormatted(long value) { - return (double) FastMath.round(((double) value / divisor) * 100D) / 100D + unit; - } - - public Desire getDesire() { - return desire; - } -} diff --git a/common/src/main/java/com/dfsek/terra/profiler/Desire.java b/common/src/main/java/com/dfsek/terra/profiler/Desire.java deleted file mode 100644 index df1488138..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/Desire.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.profiler; - - -/** - * Enum to represent the "goal" of a value, whether it is desirable for the value to be high (e.g. Frequency), or low (e.g. Period) - */ -public enum Desire { - LOW, HIGH - -} diff --git a/common/src/main/java/com/dfsek/terra/profiler/Measurement.java b/common/src/main/java/com/dfsek/terra/profiler/Measurement.java deleted file mode 100644 index 3bae77f52..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/Measurement.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.dfsek.terra.profiler; - -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.util.GlueList; -import net.jafama.FastMath; - -import java.math.BigInteger; -import java.util.LinkedList; -import java.util.List; - -/** - * Class to record and hold all data for a single type of measurement performed by the profiler. - */ -public class Measurement { - private final List measurements = new LinkedList<>(); - private final long desirable; - private final DataType type; - private long min = Long.MAX_VALUE; - private long max = Long.MIN_VALUE; - - /** - * Constructs a new Measurement with a desired value and DataType. - * - * @param desirable The desired value of the measurement. - * @param type The type of data the measurement is holding. - */ - public Measurement(long desirable, DataType type) { - this.desirable = desirable; - this.type = type; - } - - public void record(long value) { - max = FastMath.max(value, max); - min = FastMath.min(value, min); - measurements.add(value); - } - - public int size() { - return measurements.size(); - } - - public ProfileFuture beginMeasurement() { - ProfileFuture future = new ProfileFuture(); - long current = System.nanoTime(); - future.thenRun(() -> record(System.nanoTime() - current)); - return future; - } - - public void reset() { - min = Long.MAX_VALUE; - max = Long.MIN_VALUE; - measurements.clear(); - } - - public DataHolder getDataHolder() { - return new DataHolder(type, desirable, 0.25); - } - - public long getMin() { - if(min == Long.MAX_VALUE) return 0; - return min; - } - - public long getMax() { - if(max == Long.MIN_VALUE) return 0; - return max; - } - - public long average() { - BigInteger running = BigInteger.valueOf(0); - List mTemp = new GlueList<>(measurements); - for(Long l : mTemp) { - running = running.add(BigInteger.valueOf(l)); - } - if(measurements.size() == 0) return 0; - return running.divide(BigInteger.valueOf(measurements.size())).longValue(); - } - - public double getStdDev() { - return MathUtil.standardDeviation(new GlueList<>(measurements)); - } - - public int entries() { - return measurements.size(); - } - -} diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java b/common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java new file mode 100644 index 000000000..bf5c64dab --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java @@ -0,0 +1,14 @@ +package com.dfsek.terra.profiler; + +public class ProfileFrame implements AutoCloseable { + private final Runnable action; + + public ProfileFrame(Runnable action) { + this.action = action; + } + + @Override + public void close() { + action.run(); + } +} diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfileFuture.java b/common/src/main/java/com/dfsek/terra/profiler/ProfileFuture.java deleted file mode 100644 index fdecac8f8..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/ProfileFuture.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.profiler; - -import java.util.concurrent.CompletableFuture; - -public class ProfileFuture extends CompletableFuture implements AutoCloseable { - public ProfileFuture() { - super(); - } - - public boolean complete() { - return super.complete(true); - } - - @Override - public void close() { - this.complete(); - } -} diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java index b2b2a578e..226b8860e 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Profiler.java @@ -13,8 +13,12 @@ public interface Profiler { Map getTimings(); - default AutoCloseable profile(String frame) { + default ProfileFrame profile(String frame) { push(frame); - return () -> pop(frame); + return new ProfileFrame(() -> pop(frame)); + } + + default void reset() { + // todo: impl } } diff --git a/common/src/main/java/com/dfsek/terra/profiler/WorldProfiler.java b/common/src/main/java/com/dfsek/terra/profiler/WorldProfiler.java deleted file mode 100644 index a1ea04908..000000000 --- a/common/src/main/java/com/dfsek/terra/profiler/WorldProfiler.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.dfsek.terra.profiler; - -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.world.TerraWorld; -import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; -import net.jafama.FastMath; - -import java.util.Map; - -public class WorldProfiler { - private final BiMap measures = HashBiMap.create(); - private final World world; - private boolean isProfiling; - - public WorldProfiler(World w) { - if(!TerraWorld.isTerraWorld(w)) - throw new IllegalArgumentException("Attempted to instantiate profiler on non-Terra managed world!"); - this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime") - .addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "FloraTime") - .addMeasurement(new Measurement(10000000, DataType.PERIOD_MILLISECONDS), "TreeTime") - .addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime") - .addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime") - .addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime"); - - isProfiling = false; - this.world = w; - } - - public String getResultsFormatted() { - if(! isProfiling) return "Profiler is not currently running."; - StringBuilder result = new StringBuilder("Gaea World Profiler Results (Min / Avg / Max / Std Dev): \n"); - for(Map.Entry e : measures.entrySet()) { - result - .append(e.getKey()) - .append(": ") - .append(e.getValue().getDataHolder().getFormattedData(e.getValue().getMin())) - .append(" / ") - .append(e.getValue().getDataHolder().getFormattedData(e.getValue().average())) - .append(" / ") - .append(e.getValue().getDataHolder().getFormattedData(e.getValue().getMax())) - .append(" / ") - .append((double) FastMath.round((e.getValue().getStdDev() / 1000000) * 100D) / 100D) - .append("ms") - .append(" (x").append(e.getValue().size()).append(")\n"); - } - return result.toString(); - } - - public void reset() { - for(Map.Entry e : measures.entrySet()) { - e.getValue().reset(); - } - } - - public com.dfsek.terra.profiler.WorldProfiler addMeasurement(Measurement m, String name) { - measures.put(name, m); - return this; - } - - public void setMeasurement(String id, long value) { - if(isProfiling) measures.get(id).record(value); - } - - public ProfileFuture measure(String id) { - if(isProfiling) return measures.get(id).beginMeasurement(); - else return null; - } - - public String getID(Measurement m) { - return measures.inverse().get(m); - } - - public boolean isProfiling() { - return isProfiling; - } - - public void setProfiling(boolean enabled) { - this.isProfiling = enabled; - } - - public World getWorld() { - return world; - } -} 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 02b0c848a..32b2c1421 100644 --- a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -13,7 +13,6 @@ import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.profiler.WorldProfiler; import com.dfsek.terra.world.generation.math.samplers.Sampler; import net.jafama.FastMath; @@ -21,7 +20,6 @@ public class TerraWorld { private final BiomeProvider provider; private final WorldConfig config; private final boolean safe; - private final WorldProfiler profiler; private final World world; private final BlockData air; @@ -31,7 +29,6 @@ public class TerraWorld { this.world = w; config = c.toWorldConfig(this); this.provider = config.getProvider(); - profiler = new WorldProfiler(w); air = main.getWorldHandle().createBlockData("minecraft:air"); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); safe = true; @@ -61,9 +58,6 @@ public class TerraWorld { return safe; } - public WorldProfiler getProfiler() { - return profiler; - } /** * Get a block at an ungenerated location diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index e0124a4a0..4797ba463 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; @@ -94,7 +94,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { TerraWorld tw = main.getWorld(world); BiomeProvider grid = tw.getBiomeProvider(); - try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_2d")) { if(!tw.isSafe()) return chunk; int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 69e6c8675..4e4c17e81 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -23,7 +23,7 @@ import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; @@ -106,7 +106,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { TerraWorld tw = main.getWorld(world); BiomeProvider grid = tw.getBiomeProvider(); - try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_3d")) { if(!tw.isSafe()) return chunk; int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); diff --git a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index ee3aa0553..361469fa4 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; @@ -38,7 +38,7 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { TerraWorld tw = main.getWorld(world); WorldHandle handle = main.getWorldHandle(); BlockData AIR = handle.createBlockData("minecraft:air"); - try(ProfileFuture ignored = tw.getProfiler().measure("CaveTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); if(!tw.isSafe()) return; WorldConfig config = tw.getConfig(); @@ -93,7 +93,7 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { if(template.getShift().get(entry.getValue().getBlockType()).contains(mut.getBlock().getBlockData().getBlockType())) { mut.getBlock().setBlockData(shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); } - } catch(NullPointerException ignore) { + } catch(NullPointerException ignored) { } } for(Block b : updateNeeded) { 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 4bb62c2db..b3ad924cd 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 @@ -8,7 +8,7 @@ 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.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; @@ -32,7 +32,7 @@ public class FloraPopulator implements TerraBlockPopulator { @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); - try(ProfileFuture ignored = tw.getProfiler().measure("FloraTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("flora")) { if(tw.getConfig().getTemplate().disableCarvers()) return; if(!tw.isSafe()) return; 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 d6a0f7779..89c2b8157 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 @@ -10,7 +10,7 @@ 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.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; @@ -27,7 +27,7 @@ public class OrePopulator implements TerraBlockPopulator { @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); - try(ProfileFuture ignored = tw.getProfiler().measure("OreTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("ore")) { if(tw.getConfig().getTemplate().disableCarvers()) return; if(!tw.isSafe()) return; 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 4a0ae6826..4566d22ca 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 @@ -11,9 +11,8 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; @@ -32,7 +31,7 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); - try(ProfileFuture ignored = tw.getProfiler().measure("StructureTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("structure")) { if(tw.getConfig().getTemplate().disableCarvers()) return; int cx = (chunk.getX() << 4); 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 5700da165..6b9cd8044 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 @@ -8,7 +8,7 @@ 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.profiler.ProfileFuture; +import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; @@ -32,7 +32,7 @@ public class TreePopulator implements TerraBlockPopulator { @SuppressWarnings("try") public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); - try(ProfileFuture ignored = tw.getProfiler().measure("TreeTime")) { + try(ProfileFrame ignore = main.getProfiler().profile("tree")) { if(tw.getConfig().getTemplate().disableCarvers()) return; if(!tw.isSafe()) return; 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 96ae67747..cae7325db 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 @@ -3,19 +3,11 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; 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.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; -import com.dfsek.terra.world.population.TreePopulator; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; @@ -24,13 +16,10 @@ import org.jetbrains.annotations.NotNull; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Random; -import java.util.stream.Collectors; public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { @@ -76,8 +65,6 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener e.printStackTrace(); } popMap.put(w, popMan); - main.getWorld(w).getProfiler().addMeasurement(new Measurement(15000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime"); - popMan.attachProfiler(main.getWorld(w).getProfiler()); needsLoad = false; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 9b9c7a100..e7d67d224 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -5,12 +5,10 @@ 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.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.profiler.ProfileFuture; -import com.dfsek.terra.profiler.WorldProfiler; +import com.dfsek.terra.profiler.ProfileFrame; import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; @@ -26,22 +24,12 @@ public class PopulationManager extends BlockPopulator { private final TerraChunkGenerator generator; private final HashSet needsPop = new HashSet<>(); private final TerraPlugin main; - private WorldProfiler profiler; public PopulationManager(TerraChunkGenerator generator, TerraPlugin main) { this.generator = generator; this.main = main; } - private ProfileFuture measure() { - if(profiler != null) return profiler.measure("PopulationManagerTime"); - return null; - } - - public void attachProfiler(WorldProfiler p) { - this.profiler = p; - } - @SuppressWarnings("unchecked") public synchronized void saveBlocks(World w) throws IOException { File f = new File(Gaea.getGaeaFolder(w), "chunks.bin"); @@ -79,7 +67,7 @@ public class PopulationManager extends BlockPopulator { @Override public void populate(org.bukkit.@NotNull World world, @NotNull Random random, org.bukkit.@NotNull Chunk source) { - try(ProfileFuture ignored = measure()) { + try(ProfileFrame ignore = main.getProfiler().profile("popman")) { Chunk chunk = BukkitAdapter.adapt(source); needsPop.add(new ChunkCoordinate(chunk)); int x = chunk.getX(); From f78ee70609a76c11c26e5a58f318d9bb950a9a0b Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 00:45:52 -0700 Subject: [PATCH 0021/1529] implement terrascript profiling --- .../structures/script/StructureScript.java | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index b4f9439a6..13c1ae36f 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -32,6 +32,7 @@ import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.structures.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; +import com.dfsek.terra.profiler.ProfileFrame; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; @@ -105,21 +106,27 @@ public class StructureScript { * @return Whether generation was successful */ public boolean execute(Location location, Random random, Rotation rotation) { - StructureBuffer buffer = new StructureBuffer(location); - boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); - buffer.paste(); - return level; + try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { + StructureBuffer buffer = new StructureBuffer(location); + boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); + buffer.paste(); + return level; + } } public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) { - StructureBuffer buffer = computeBuffer(location, random, rotation); - buffer.paste(chunk); - return buffer.succeeded(); + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { + StructureBuffer buffer = computeBuffer(location, random, rotation); + buffer.paste(chunk); + return buffer.succeeded(); + } } public boolean test(Location location, Random random, Rotation rotation) { - StructureBuffer buffer = computeBuffer(location, random, rotation); - return buffer.succeeded(); + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { + StructureBuffer buffer = computeBuffer(location, random, rotation); + return buffer.succeeded(); + } } private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { @@ -135,12 +142,16 @@ public class StructureScript { } public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); + } } public boolean executeDirect(Location location, Random random, Rotation rotation) { - DirectBuffer buffer = new DirectBuffer(location); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { + DirectBuffer buffer = new DirectBuffer(location); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); + } } public String getId() { From aaf0830d66b7306034e87c2dd7461df0eadb6f7c Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 00:46:00 -0700 Subject: [PATCH 0022/1529] fix % parent issue --- common/src/main/java/com/dfsek/terra/profiler/Timings.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/src/main/java/com/dfsek/terra/profiler/Timings.java index e632e4cf0..22ef0f003 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Timings.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Timings.java @@ -30,6 +30,10 @@ public class Timings { return timings.stream().mapToLong(Long::longValue).min().orElse(0L); } + public double sum() { + return timings.stream().mapToDouble(Long::doubleValue).sum(); + } + public Timings getSubItem(String id) { return subItems.computeIfAbsent(id, s -> new Timings()); } @@ -39,7 +43,7 @@ public class Timings { builder.append((double) min() / 1000000).append("ms min / ").append(average() / 1000000).append("ms avg / ") .append((double) max() / 1000000).append("ms max (").append(timings.size()).append(" samples, ") - .append((average() / parent.average()) * 100).append("% of parent)"); + .append((sum() / parent.sum()) * 100).append("% of parent)"); subItems.forEach((id, timings) -> { builder.append('\n'); From 31b55ca682919a0d05078e7b8e1042e5df07ba01 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 01:16:26 -0700 Subject: [PATCH 0023/1529] fancy unicode symbols B) --- .../com/dfsek/terra/profiler/Timings.java | 25 +++++++++++++------ .../src/test/java/profiler/ProfilerTest.java | 8 ++++++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/src/main/java/com/dfsek/terra/profiler/Timings.java index 22ef0f003..3875285b3 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/Timings.java +++ b/common/src/main/java/com/dfsek/terra/profiler/Timings.java @@ -1,9 +1,12 @@ package com.dfsek.terra.profiler; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; public class Timings { private final Map subItems = new HashMap<>(); @@ -38,25 +41,33 @@ public class Timings { return subItems.computeIfAbsent(id, s -> new Timings()); } - public String toString(int indent, Timings parent) { + public String toString(int indent, Timings parent, Set branches) { StringBuilder builder = new StringBuilder(); builder.append((double) min() / 1000000).append("ms min / ").append(average() / 1000000).append("ms avg / ") .append((double) max() / 1000000).append("ms max (").append(timings.size()).append(" samples, ") .append((sum() / parent.sum()) * 100).append("% of parent)"); - subItems.forEach((id, timings) -> { + List frames = new ArrayList<>(); + Set newBranches = new HashSet<>(branches); + newBranches.add(indent); + subItems.forEach((id, timings) -> frames.add(id + ": " + timings.toString(indent + 1, this, newBranches))); + + for(int i = 0; i < frames.size(); i++) { builder.append('\n'); - for(int i = 0; i <= indent; i++) { - builder.append('\t'); + for(int j = 0; j < indent; j++) { + if(branches.contains(j)) builder.append("│ "); + else builder.append(" "); } - builder.append(id).append(": ").append(timings.toString(indent + 1, this)); - }); + if(i == frames.size() - 1 && !frames.get(i).contains("\n")) builder.append("└───"); + else builder.append("├───"); + builder.append(frames.get(i)); + } return builder.toString(); } @Override public String toString() { - return toString(0, this); + return toString(1, this, Collections.emptySet()); } } diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/src/test/java/profiler/ProfilerTest.java index b60ea32e5..86ad4e5a1 100644 --- a/common/src/test/java/profiler/ProfilerTest.java +++ b/common/src/test/java/profiler/ProfilerTest.java @@ -29,6 +29,7 @@ public class ProfilerTest { PROFILER.push("thing"); Thread.sleep(1); doOtherThing(); + thing4(); PROFILER.pop("thing"); } @@ -36,6 +37,7 @@ public class ProfilerTest { PROFILER.push("thing2"); Thread.sleep(2); doThirdOtherThing(); + thing4(); PROFILER.pop("thing2"); } @@ -44,4 +46,10 @@ public class ProfilerTest { Thread.sleep(2); PROFILER.pop("thing3"); } + + private static void thing4() throws InterruptedException { + PROFILER.push("thing4"); + Thread.sleep(2); + PROFILER.pop("thing4"); + } } From 339413c0deaa720d8d4357b74fe822ed8ad7782d Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 08:46:56 -0700 Subject: [PATCH 0024/1529] profile more things --- .../loaders/config/OreHolderLoader.java | 2 +- .../terra/world/population/CavePopulator.java | 66 ++++++++++--------- .../terra/world/population/OrePopulator.java | 12 ++-- .../terra/world/population/TreePopulator.java | 3 +- .../world/population/items/ores/Ore.java | 1 - .../population/items/ores/OreHolder.java | 17 +++-- .../dfsek/terra/bukkit/world/BukkitTree.java | 6 +- .../dfsek/terra/fabric/world/FabricTree.java | 10 ++- 8 files changed, 68 insertions(+), 49 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java index 71b021fa3..08f682171 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java @@ -18,7 +18,7 @@ public class OreHolderLoader implements TypeLoader { Map map = (Map) o; for(Map.Entry entry : map.entrySet()) { - holder.add(configLoader.loadClass(Ore.class, entry.getKey()), (OreConfig) configLoader.loadType(OreConfig.class, entry.getValue())); + holder.add(configLoader.loadClass(Ore.class, entry.getKey()), configLoader.loadClass(OreConfig.class, entry.getValue()), entry.getKey()); } return holder; diff --git a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 361469fa4..8b6e0bab0 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -49,38 +49,40 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { Map shiftCandidate = new HashMap<>(); Set updateNeeded = new HashSet<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { - Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); - BlockData m = b.getBlockData(); - BlockType re = m.getBlockType(); - switch(type) { - case CENTER: - if(template.getInner().canReplace(re)) { - b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); - } - break; - case WALL: - if(template.getOuter().canReplace(re)) { - b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); - } - break; - case TOP: - if(template.getTop().canReplace(re)) { - b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); - } - break; - case BOTTOM: - if(template.getBottom().canReplace(re)) { - b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); - } - break; + try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { + Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); + BlockData m = b.getBlockData(); + BlockType re = m.getBlockType(); + switch(type) { + case CENTER: + if(template.getInner().canReplace(re)) { + b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + } + break; + case WALL: + if(template.getOuter().canReplace(re)) { + b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + } + break; + case TOP: + if(template.getTop().canReplace(re)) { + b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + } + break; + case BOTTOM: + if(template.getBottom().canReplace(re)) { + b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false); + if(template.getUpdate().contains(re)) updateNeeded.add(b); + if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + } + break; + } } }); for(Map.Entry entry : shiftCandidate.entrySet()) { 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 89c2b8157..2e9c042c9 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 @@ -40,11 +40,13 @@ public class OrePopulator implements TerraBlockPopulator { BiomeTemplate config = ((UserDefinedBiome) b).getConfig(); int finalCx = cx; int finalCz = cz; - config.getOreHolder().forEach((ore, oreConfig) -> { - int amount = oreConfig.getAmount().get(random); - for(int i = 0; i < amount; i++) { - Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, oreConfig.getHeight().get(random), random.nextInt(16) + 16 * finalCz); - ore.generate(location, chunk, random); + config.getOreHolder().forEach((id, orePair) -> { + try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { + int amount = orePair.getRight().getAmount().get(random); + for(int i = 0; i < amount; i++) { + Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); + orePair.getLeft().generate(location, chunk, random); + } } }); } 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 6b9cd8044..9cb63c96e 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 @@ -42,8 +42,9 @@ public class TreePopulator implements TerraBlockPopulator { for(int z = 0; z < 16; z += 2) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); for(TreeLayer layer : biome.getConfig().getTrees()) { - if(layer.getDensity() >= random.nextDouble() * 100) + if(layer.getDensity() >= random.nextDouble() * 100) { layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); + } } } } 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 541a7dacf..e7f3faedd 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 @@ -16,7 +16,6 @@ public abstract class Ore { protected TerraPlugin main; public Ore(BlockData material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main) { - this.material = material; this.replaceable = replaceable; this.applyGravity = applyGravity; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java index e7cc81d5c..43e461895 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import java.util.List; import java.util.function.BiConsumer; @@ -11,22 +12,24 @@ import java.util.function.BiConsumer; public class OreHolder { private final List entries = new GlueList<>(); - public void forEach(BiConsumer consumer) { - entries.forEach(entry -> consumer.accept(entry.getOre(), entry.getConfig())); + public void forEach(BiConsumer> consumer) { + entries.forEach(entry -> consumer.accept(entry.getId(), ImmutablePair.of(entry.getOre(), entry.getConfig()))); } - public OreHolder add(Ore ore, OreConfig config) { - entries.add(new Entry(ore, config)); + public OreHolder add(Ore ore, OreConfig config, String id) { + entries.add(new Entry(ore, config, id)); return this; } private static final class Entry { private final Ore ore; private final OreConfig config; + private final String id; - private Entry(Ore ore, OreConfig config) { + private Entry(Ore ore, OreConfig config, String id) { this.ore = ore; this.config = config; + this.id = id; } public OreConfig getConfig() { @@ -36,5 +39,9 @@ public class OreHolder { public Ore getOre() { return ore; } + + public String getId() { + return id; + } } } 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 b502639a4..5464963b8 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 @@ -5,8 +5,10 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.profiler.ProfileFrame; import org.bukkit.TreeType; +import java.util.Locale; import java.util.Random; public class BukkitTree implements Tree { @@ -41,7 +43,9 @@ public class BukkitTree implements Tree { @Override public boolean plant(Location l, Random r) { - return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); + try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { + return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); + } } @Override 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 3a9567a15..c8415ad1b 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 @@ -6,11 +6,13 @@ import com.dfsek.terra.api.util.collections.MaterialSet; 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.profiler.ProfileFrame; import net.minecraft.util.math.BlockPos; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.ConfiguredFeature; +import java.util.Locale; import java.util.Random; public class FabricTree implements Tree { @@ -22,9 +24,11 @@ public class FabricTree implements Tree { @Override public boolean plant(Location l, Random r) { - FabricWorldAccess fabricWorldAccess = ((FabricWorldAccess) l.getWorld()); - ChunkGenerator generatorWrapper = ((FabricChunkGenerator) fabricWorldAccess.getGenerator()).getHandle(); - return delegate.generate((StructureWorldAccess) fabricWorldAccess.getHandle(), generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); + try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { + FabricWorldAccess fabricWorldAccess = ((FabricWorldAccess) l.getWorld()); + ChunkGenerator generatorWrapper = ((FabricChunkGenerator) fabricWorldAccess.getGenerator()).getHandle(); + return delegate.generate((StructureWorldAccess) fabricWorldAccess.getHandle(), generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); + } } @Override From bd3136ca92ef8e46f0bf983b2bb782432af93bae Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 09:19:03 -0700 Subject: [PATCH 0025/1529] fix stack size assumption at profiler start --- .../com/dfsek/terra/profiler/ProfilerImpl.java | 15 +++++++++++---- common/src/test/java/profiler/ProfilerTest.java | 10 +++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index 23f00d495..0ffd824e1 100644 --- a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -1,5 +1,6 @@ package com.dfsek.terra.profiler; +import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.profiler.exception.MalformedStackException; import java.util.ArrayList; @@ -15,6 +16,8 @@ public class ProfilerImpl implements Profiler { private volatile boolean running = false; private static boolean instantiated = false; + private static final ThreadLocal SAFE = ThreadLocal.withInitial(() -> false); + private static final ThreadLocal STACK_SIZE = ThreadLocal.withInitial(() -> new MutableInteger(0)); public ProfilerImpl() { if(instantiated) throw new IllegalStateException("Only one instance of Profiler may exist!"); @@ -23,15 +26,18 @@ public class ProfilerImpl implements Profiler { @Override public void push(String frame) { - if(running) { + STACK_SIZE.get().increment(); + if(running && SAFE.get()) { Stack stack = THREAD_STACK.get(); - stack.push(new Frame(stack.size() == 0 ? frame : stack.peek().getId() + "." + frame)); - } + stack.push(new Frame(stack.isEmpty() ? frame : stack.peek().getId() + "." + frame)); + } else SAFE.set(false); } @Override public void pop(String frame) { - if(running) { + MutableInteger size = STACK_SIZE.get(); + size.decrement(); + if(running && SAFE.get()) { long time = System.nanoTime(); Stack stack = THREAD_STACK.get(); @@ -51,6 +57,7 @@ public class ProfilerImpl implements Profiler { timings.add(time - top.getStart()); } + if(size.get() == 0) SAFE.set(true); } @Override diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/src/test/java/profiler/ProfilerTest.java index 86ad4e5a1..b4d97856d 100644 --- a/common/src/test/java/profiler/ProfilerTest.java +++ b/common/src/test/java/profiler/ProfilerTest.java @@ -7,7 +7,7 @@ public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); //@Test public static void main(String... a) throws InterruptedException { - PROFILER.start(); + //PROFILER.start(); for(int i = 0; i < 1000; i++) { doThing(); } @@ -20,6 +20,14 @@ public class ProfilerTest { doOtherThing(); } PROFILER.stop(); + PROFILER.push("thing"); + PROFILER.push("thing2"); + PROFILER.start(); + PROFILER.pop("thing2"); + PROFILER.pop("thing"); + PROFILER.push("thing4"); + PROFILER.pop("thing4"); + PROFILER.getTimings().forEach((id, timings) -> { System.out.println(id + ": " + timings.toString()); }); From aa0de88821d65270c99edfd1136aae8671cd70f2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 12 Apr 2021 09:19:26 -0700 Subject: [PATCH 0026/1529] @SuppressWarnings go brrr --- .../terra/api/structures/script/StructureScript.java | 8 +++++++- .../java/com/dfsek/terra/api/transform/Transformer.java | 1 + common/src/test/java/structure/ParserTest.java | 3 ++- .../dfsek/terra/bukkit/population/PopulationManager.java | 1 + .../java/com/dfsek/terra/bukkit/world/BukkitTree.java | 1 + .../dfsek/terra/bukkit/world/block/state/BukkitSign.java | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 13c1ae36f..6b0e9de19 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -40,6 +40,7 @@ import org.apache.commons.io.IOUtils; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.Charset; import java.util.Random; import java.util.concurrent.ExecutionException; @@ -53,7 +54,7 @@ public class StructureScript { public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { Parser parser; try { - parser = new Parser(IOUtils.toString(inputStream)); + parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); } catch(IOException e) { throw new RuntimeException(e); } @@ -105,6 +106,7 @@ public class StructureScript { * @param rotation Rotation of structure * @return Whether generation was successful */ + @SuppressWarnings("try") public boolean execute(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { StructureBuffer buffer = new StructureBuffer(location); @@ -114,6 +116,7 @@ public class StructureScript { } } + @SuppressWarnings("try") public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); @@ -122,6 +125,7 @@ public class StructureScript { } } + @SuppressWarnings("try") public boolean test(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); @@ -141,12 +145,14 @@ public class StructureScript { } } + @SuppressWarnings("try") public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); } } + @SuppressWarnings("try") public boolean executeDirect(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { DirectBuffer buffer = new DirectBuffer(location); diff --git a/common/src/main/java/com/dfsek/terra/api/transform/Transformer.java b/common/src/main/java/com/dfsek/terra/api/transform/Transformer.java index 30ce77b6f..efd801dd8 100644 --- a/common/src/main/java/com/dfsek/terra/api/transform/Transformer.java +++ b/common/src/main/java/com/dfsek/terra/api/transform/Transformer.java @@ -53,6 +53,7 @@ public class Transformer { private final LinkedHashMap, List>> transforms = new LinkedHashMap<>(); @SafeVarargs + @SuppressWarnings("varargs") public final Builder addTransform(Transform transform, Validator... validators) { transforms.put(transform, Arrays.asList(validators)); return this; diff --git a/common/src/test/java/structure/ParserTest.java b/common/src/test/java/structure/ParserTest.java index 1b18d2a3c..fd1ff30c1 100644 --- a/common/src/test/java/structure/ParserTest.java +++ b/common/src/test/java/structure/ParserTest.java @@ -13,6 +13,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; import java.io.IOException; +import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,7 +21,7 @@ import java.util.Map; public class ParserTest { @Test public void parse() throws IOException, ParseException { - Parser parser = new Parser(IOUtils.toString(getClass().getResourceAsStream("/test.tesf"))); + Parser parser = new Parser(IOUtils.toString(getClass().getResourceAsStream("/test.tesf"), Charset.defaultCharset())); parser.registerFunction("test", new FunctionBuilder() { @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index e7d67d224..583aa0fb9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -66,6 +66,7 @@ public class PopulationManager extends BlockPopulator { } @Override + @SuppressWarnings("try") public void populate(org.bukkit.@NotNull World world, @NotNull Random random, org.bukkit.@NotNull Chunk source) { try(ProfileFrame ignore = main.getProfiler().profile("popman")) { Chunk chunk = BukkitAdapter.adapt(source); 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 5464963b8..41445619f 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 @@ -42,6 +42,7 @@ public class BukkitTree implements Tree { } @Override + @SuppressWarnings("try") public boolean plant(Location l, Random r) { try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index fe19fac78..05625cc1a 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.platform.block.state.SerialState; import com.dfsek.terra.api.platform.block.state.Sign; import org.jetbrains.annotations.NotNull; +@SuppressWarnings("deprecation") public class BukkitSign extends BukkitBlockState implements Sign { protected BukkitSign(org.bukkit.block.Sign block) { super(block); From 5542dee7b70184f9712c78b3792d53f6172d3882 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Thu, 29 Apr 2021 10:03:04 +1000 Subject: [PATCH 0027/1529] Implement multiple slant thresholds --- .../terra/api/util/world/PaletteUtil.java | 13 ++++---- .../api/world/palette/slant/SlantHolder.java | 24 +++++++++++++++ .../dfsek/terra/config/GenericLoaders.java | 3 ++ .../config/builder/GeneratorBuilder.java | 7 +++-- .../builder/UserDefinedBiomeBuilder.java | 2 +- .../palette/slant/SlantHolderLoader.java | 30 +++++++++++++++++++ .../terra/config/templates/BiomeTemplate.java | 18 ++++------- .../world/generation/WorldGenerator.java | 9 ++---- 8 files changed, 78 insertions(+), 28 deletions(-) create mode 100644 common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java create mode 100644 common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index 491341ad9..c0247814c 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -2,16 +2,19 @@ package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.math.samplers.Sampler; public final class PaletteUtil { public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { - PaletteHolder slant = c.getSlantPalette(); - if(slant != null && MathUtil.derivative(sampler, x, y, z) > c.getSlantThreshold()) { - return slant.getPalette(y); + + SlantHolder slant = c.getSlant(); + double slope = MathUtil.derivative(sampler, x, y, z); + if (slant != null && slope > slant.getMinSlope()) { + return slant.getPalette(slope).getPalette(y); } + return c.getPalette().getPalette(y); } -} +} \ No newline at end of file diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java new file mode 100644 index 000000000..d74da5eb3 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.api.world.palette.slant; + +import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.palette.holder.PaletteHolder; + +import java.util.TreeMap; + +public class SlantHolder { + private final TreeMap layers; + private final double minSlope; + + public SlantHolder(TreeMap layers, double minSlope) { + this.layers = layers; + this.minSlope = minSlope; + } + + public PaletteHolder getPalette(double slope) { + return layers.floorEntry(slope).getValue(); + } + + public double getMinSlope() { + return minSlope; + } +} 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 0726b8d97..5667a8efb 100644 --- a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -20,6 +20,7 @@ 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.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; @@ -49,6 +50,7 @@ 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.config.loaders.palette.slant.SlantHolderLoader; 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; @@ -72,6 +74,7 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) + .registerLoader(SlantHolder.class, new SlantHolderLoader()) .registerLoader(FloraLayer.class, new FloraLayerLoader()) .registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf(o.toString())) .registerLoader(OreConfig.class, new OreConfigLoader()) diff --git a/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java b/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java index 798e91245..17a3c9222 100644 --- a/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java +++ b/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.math.noise.samplers.ExpressionSampler; import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.world.generation.WorldGenerator; @@ -31,7 +32,7 @@ public class GeneratorBuilder { private PaletteHolder palettes; - private PaletteHolder slantPalettes; + private SlantHolder slantPalettes; private boolean preventInterpolation; @@ -121,11 +122,11 @@ public class GeneratorBuilder { this.palettes = palettes; } - public PaletteHolder getSlantPalettes() { + public SlantHolder getSlantPalettes() { return slantPalettes; } - public void setSlantPalettes(PaletteHolder slantPalettes) { + public void setSlantPalettes(SlantHolder slantPalettes) { this.slantPalettes = slantPalettes; } diff --git a/common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index a4a39e3e3..5dca280c9 100644 --- a/common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -54,7 +54,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { throw new RuntimeException(e); } - WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlantPalette(), noise, elevation, carving, template.getBiomeNoise().apply(seed), template.getElevationWeight(), + WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlant(), noise, elevation, carving, template.getBiomeNoise().apply(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java new file mode 100644 index 000000000..8828197f4 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.config.loaders.palette.slant; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.api.world.palette.slant.SlantHolder; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +@SuppressWarnings("unchecked") +public class SlantHolderLoader implements TypeLoader { + @Override + public SlantHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + List> layers = (List>) o; + TreeMap slantLayers = new TreeMap<>(); + double minThreshold = Double.MAX_VALUE; + + for(Map layer : layers) { + double threshold = ((Number) layer.get("threshold")).doubleValue(); + if (threshold < minThreshold) minThreshold = threshold; + slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); + } + + return new SlantHolder(slantLayers, minThreshold); + } +} diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index a34a2c8b4..baff39e3b 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -21,6 +21,7 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPack; @@ -67,10 +68,10 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Abstractable private PaletteHolder palette; - @Value("slant.palette") + @Value("slant") @Abstractable @Default - private PaletteHolder slantPalette = null; + private SlantHolder slant = null; @Value("vanilla") @Abstractable @@ -165,11 +166,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Default private Map stairPalettes; - @Value("slant.threshold") - @Abstractable - @Default - private double slantThreshold = 0.1; - @Value("interpolate-elevation") @Abstractable @Default @@ -230,8 +226,8 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return extend; } - public double getSlantThreshold() { - return slantThreshold; + public SlantHolder getSlant() { + return slant; } public double getSlabThreshold() { @@ -306,10 +302,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return trees; } - public PaletteHolder getSlantPalette() { - return slantPalette; - } - public ProbabilityCollection getVanilla() { return vanilla; } diff --git a/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java index 2a46d1c2a..f4b80c410 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java @@ -4,12 +4,13 @@ import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.api.world.palette.slant.SlantHolder; public class WorldGenerator implements Generator { @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) private final PaletteHolder palettes; @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) - private final PaletteHolder slantPalettes; + private final SlantHolder slantPalettes; private final NoiseSampler noise; private final NoiseSampler elevation; @@ -21,7 +22,7 @@ public class WorldGenerator implements Generator { private final int blendStep; private final double blendWeight; - public WorldGenerator(PaletteHolder palettes, PaletteHolder slantPalettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { + public WorldGenerator(PaletteHolder palettes, SlantHolder slantPalettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { this.palettes = palettes; this.slantPalettes = slantPalettes; this.noise = noise; @@ -84,8 +85,4 @@ public class WorldGenerator implements Generator { public int getBlendStep() { return blendStep; } - - public Palette getSlantPalette(int y) { - return slantPalettes.getPalette(y); - } } From df2c6541923ef1cbb47c1637809b1a15a7949568 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Thu, 29 Apr 2021 16:42:00 +1000 Subject: [PATCH 0028/1529] Only calculate slope if slant is defined --- .../java/com/dfsek/terra/api/util/world/PaletteUtil.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index c0247814c..d79fe1e9a 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -10,9 +10,11 @@ public final class PaletteUtil { public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { SlantHolder slant = c.getSlant(); - double slope = MathUtil.derivative(sampler, x, y, z); - if (slant != null && slope > slant.getMinSlope()) { - return slant.getPalette(slope).getPalette(y); + if (slant != null) { + double slope = MathUtil.derivative(sampler, x, y, z); + if (slope > slant.getMinSlope()) { + return slant.getPalette(slope).getPalette(y); + } } return c.getPalette().getPalette(y); From f7ea81cb5198b905b0ab03bbef5375073a0917f5 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Sun, 2 May 2021 11:21:51 +1000 Subject: [PATCH 0029/1529] Add new debug options to plugin config --- .../java/com/dfsek/terra/api/TerraPlugin.java | 2 - .../api/command/TerraCommandManager.java | 4 +- .../com/dfsek/terra/config/PluginConfig.java | 38 ++++++++++++++++--- common/src/main/resources/config.yml | 6 ++- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 10 ++--- .../dfsek/terra/fabric/TerraFabricPlugin.java | 8 ++-- .../com/dfsek/terra/StandalonePlugin.java | 5 --- .../dfsek/terra/sponge/TerraSpongePlugin.java | 5 --- 8 files changed, 46 insertions(+), 32 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java index aeeb5e814..679139663 100644 --- a/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -31,8 +31,6 @@ public interface TerraPlugin extends LoaderRegistrar { File getDataFolder(); - boolean isDebug(); - Language getLanguage(); CheckedRegistry getConfigRegistry(); diff --git a/common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java index 482aefba9..e58bd236f 100644 --- a/common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java +++ b/common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java @@ -55,8 +55,8 @@ public class TerraCommandManager implements CommandManager { private void execute(CommandHolder commandHolder, CommandSender sender, List args) throws CommandException { Class commandClass = commandHolder.clazz; - if(commandClass.isAnnotationPresent(DebugCommand.class) && !main.isDebug()) { - sender.sendMessage("Command must be executed with debug mode enabled."); + if(commandClass.isAnnotationPresent(DebugCommand.class) && !main.getTerraConfig().isDebugCommands()) { + sender.sendMessage("Command must be executed with debug commands enabled."); return; } diff --git a/common/src/main/java/com/dfsek/terra/config/PluginConfig.java b/common/src/main/java/com/dfsek/terra/config/PluginConfig.java index e1112dcf4..4efba0ecc 100644 --- a/common/src/main/java/com/dfsek/terra/config/PluginConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/PluginConfig.java @@ -18,9 +18,21 @@ import java.util.jar.JarFile; @SuppressWarnings("FieldMayBeFinal") public class PluginConfig implements ConfigTemplate { - @Value("debug") + @Value("debug.commands") @Default - private boolean debug = false; + private boolean debugCommands = false; + + @Value("debug.log") + @Default + private boolean debugLog = false; + + @Value("debug.profiler") + @Default + private boolean debugProfiler = false; + + @Value("debug.script") + @Default + private boolean debugScript = false; @Value("language") @Default @@ -80,15 +92,31 @@ public class PluginConfig implements ConfigTemplate { } catch(ConfigException | IOException e) { e.printStackTrace(); } - logger.info("DebugLogger: " + isDebug()); + + if(isDebugCommands()) logger.info("Debug commands enabled."); + if(isDebugLogging()) logger.info("Debug logging enabled."); + if(isDebugProfiler()) logger.info("Debug profiler enabled."); + if(isDebugScript()) logger.info("Script debug blocks enabled."); } public String getLanguage() { return language; } - public boolean isDebug() { - return debug; + public boolean isDebugCommands() { + return debugCommands; + } + + public boolean isDebugLogging() { + return debugLog; + } + + public boolean isDebugProfiler() { + return debugProfiler; + } + + public boolean isDebugScript() { + return debugScript; } public long getDataSaveInterval() { diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index adb7d8522..21e811d94 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -1,4 +1,8 @@ -debug: false +debug: + commands: false + log: false + profiler: false + script: false data-save: PT6M language: "en_us" dump-default: true 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 e65a918fc..d4cc682fb 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 @@ -171,7 +171,9 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { config.load(this); // Load master config.yml LangUtil.load(config.getLanguage(), this); // Load language. - debugLogger.setDebug(isDebug()); + + debugLogger.setDebug(config.isDebugLogging()); + if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll()) { getLogger().severe("Failed to load addons. Please correct addon installations to continue."); @@ -253,12 +255,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { })); } - @Override - public boolean isDebug() { - return config.isDebug(); - } - - @Override public Language getLanguage() { return LangUtil.getLanguage(); 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 6b7359713..06d24752b 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 @@ -177,11 +177,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return dataFolder; } - @Override - public boolean isDebug() { - return true; - } - @Override public Language getLanguage() { return LangUtil.getLanguage(); @@ -303,6 +298,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { LangUtil.load(config.getLanguage(), this); logger.info("Initializing Terra..."); + debugLogger.setDebug(config.isDebugLogging()); + if(config.isDebugProfiler()) profiler.start(); + if(!addonRegistry.loadAll()) { throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); } 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 ff426a5c0..8cf274b36 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -68,11 +68,6 @@ public class StandalonePlugin implements TerraPlugin { return new File("."); } - @Override - public boolean isDebug() { - return true; - } - @Override public Language getLanguage() { try { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 536850875..e15135a51 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -86,11 +86,6 @@ public class TerraSpongePlugin implements TerraPlugin { return privateConfigDir.toFile(); } - @Override - public boolean isDebug() { - return true; - } - @Override public Language getLanguage() { try { From 97aa9d9a91632a7636c4c334954831b5d756f0ee Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 9 May 2021 22:28:52 -0700 Subject: [PATCH 0030/1529] resolve merge conflicts --- gradle.properties | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 19 +++---------------- .../FabricChunkGeneratorWrapper.java | 2 +- .../dfsek/terra/forge/TerraForgePlugin.java | 4 ++-- 4 files changed, 7 insertions(+), 20 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1fca82ba1..94dc0b5ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,4 +7,4 @@ org.gradle.parallel=true org.gradle.caching=true org.gradle.warning.mode=all #org.gradle.logging.level=info -org.gradle.configureondemand=true +#org.gradle.configureondemand=true 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 d8a673511..e53cd4df0 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 @@ -37,25 +37,13 @@ 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.config.templates.BiomeTemplate; -import com.dfsek.terra.fabric.inventory.FabricItemHandle; -import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor; -import com.dfsek.terra.fabric.world.FabricAdapter; -import com.dfsek.terra.fabric.world.FabricBiome; -import com.dfsek.terra.fabric.world.FabricTree; -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.FabricChunkGenerator; -import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; -import com.dfsek.terra.profiler.Profiler; -import com.dfsek.terra.profiler.ProfilerImpl; +import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.PopulatorFeature; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor; -import com.dfsek.terra.fabric.generation.TerraBiomeSource; -import com.dfsek.terra.fabric.generation.PopulatorFeature; -import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.exception.DuplicateEntryException; @@ -80,7 +68,6 @@ import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; -import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; 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 efac7ee53..39a4f9fd5 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 @@ -92,7 +92,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener public BlockPos locateStructure(ServerWorld world, StructureFeature feature, BlockPos center, int radius, boolean skipExistingChunks) { String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getId(feature)).toString(); TerraWorld terraWorld = TerraFabricPlugin.getInstance().getWorld((World) world); - TerraStructure located = pack.getStructure(pack.getTemplate().getLocatable().get(name)); + TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getTemplate().getLocatable().get(name)); if(located != null) { CompletableFuture result = new CompletableFuture<>(); AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center).toLocation((World) world), 0, 500, location -> { diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java index b7cab9f61..fe0d33cf1 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java @@ -201,7 +201,7 @@ public class TerraForgePlugin implements TerraPlugin { @SubscribeEvent public static void register(RegistryEvent.Register event) { INSTANCE.setup(); // Setup now because we need the biomes, and this event happens after blocks n stuff - INSTANCE.getConfigRegistry().forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> event.getRegistry().register(INSTANCE.createBiome(biome)))); // Register all Terra biomes. + INSTANCE.getConfigRegistry().forEach(pack -> pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> event.getRegistry().register(INSTANCE.createBiome(biome)))); // Register all Terra biomes. } @SubscribeEvent @@ -448,7 +448,7 @@ public class TerraForgePlugin implements TerraPlugin { @Priority(Priority.LOWEST) @Global public void injectTrees(ConfigPackPreLoadEvent event) { - CheckedRegistry treeRegistry = event.getPack().getTreeRegistry(); + CheckedRegistry treeRegistry = event.getPack().getRegistry(Tree.class); injectTree(treeRegistry, "BROWN_MUSHROOM", Features.HUGE_BROWN_MUSHROOM); injectTree(treeRegistry, "RED_MUSHROOM", Features.HUGE_RED_MUSHROOM); injectTree(treeRegistry, "JUNGLE", Features.MEGA_JUNGLE_TREE); From 77bb04e91fc21ebf04994c42be21579f7dedb7d2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 9 May 2021 22:34:44 -0700 Subject: [PATCH 0031/1529] fix structure completer --- .../src/main/java/com/dfsek/terra/config/pack/ConfigPack.java | 4 ++++ .../main/java/com/dfsek/terra/config/pack/WorldConfig.java | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) 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 07ea5b52a..f8d2775fc 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 @@ -193,6 +193,10 @@ public class ConfigPack implements LoaderRegistrar { registryMap.forEach((clazz, pair) -> pair.getLeft().getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } + protected Map, ImmutablePair, CheckedRegistry>> getRegistryMap() { + return registryMap; + } + @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this)); diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index 11f473efd..c3be03456 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -31,8 +31,7 @@ public class WorldConfig { this.pack = pack; this.samplerCache = new SamplerCache(main, world); - pack.getConfigTypeRegistry().forEach(configType -> registryMap.put(configType.getTypeClass(), new LockedRegistry<>(pack.getRegistry(configType.getTypeClass())))); - + pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistry<>(pair.getLeft()))); OpenRegistry biomeOpenRegistry = new OpenRegistry<>(); pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); From 596ac1c389cf5ce27c60b06af7434f105bc501c5 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Tue, 11 May 2021 15:47:37 +1000 Subject: [PATCH 0032/1529] Remove isDebug from forge --- .../main/java/com/dfsek/terra/forge/TerraForgePlugin.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java index fe0d33cf1..92aaba20b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java @@ -332,11 +332,6 @@ public class TerraForgePlugin implements TerraPlugin { return dataFolder; } - @Override - public boolean isDebug() { - return true; - } - @Override public Language getLanguage() { return LangUtil.getLanguage(); From 1209842bcd94084f04c887bec9d8d3867b177d54 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Tue, 11 May 2021 15:48:28 +1000 Subject: [PATCH 0033/1529] Implement ignorable functions to parser --- .../terra/api/structures/parser/Parser.java | 15 ++++++++++++- .../parser/lang/functions/Function.java | 21 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java b/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java index 9f4ff96db..c6434fbad 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java @@ -52,6 +52,7 @@ import java.util.Map; public class Parser { private final String data; private final Map>> functions = new HashMap<>(); + private final List ignoredFunctions = new GlueList<>(); private String id; @@ -64,6 +65,11 @@ public class Parser { return this; } + public Parser ignoreFunction(String name) { + ignoredFunctions.add(name); + return this; + } + public String getID() { return id; } @@ -339,7 +345,10 @@ public class Parser { while(tokens.hasNext()) { Token token = tokens.get(); if(token.getType().equals(Token.Type.BLOCK_END)) break; // Stop parsing at block end. - parsedItems.add(parseItem(tokens, parsedVariables, loop)); + Item parsedItem = parseItem(tokens, parsedVariables, loop); + if (parsedItem != Function.NULL) { + parsedItems.add(parsedItem); + } if(tokens.hasNext() && !token.isLoopLike()) ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); } return new Block(parsedItems, first.getPosition()); @@ -398,6 +407,10 @@ public class Parser { ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); // Remove body end if(fullStatement) ParserUtil.checkType(tokens.get(), Token.Type.STATEMENT_END); + + if(ignoredFunctions.contains(identifier.getContent())) { + return Function.NULL; + } if(functions.containsKey(identifier.getContent())) { FunctionBuilder builder = functions.get(identifier.getContent()); diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java b/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java index aaa826d12..c22d9fae9 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java @@ -1,6 +1,27 @@ package com.dfsek.terra.api.structures.parser.lang.functions; +import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; +import com.dfsek.terra.api.structures.parser.lang.variables.Variable; +import com.dfsek.terra.api.structures.tokenizer.Position; + +import java.util.Map; public interface Function extends Returnable { + Function NULL = new Function() { + @Override + public ReturnType returnType() { + return null; + } + + @Override + public Object apply(ImplementationArguments implementationArguments, Map> variableMap) { + return null; + } + + @Override + public Position getPosition() { + return null; + } + }; } From 9b52277d9abc297f905b41fb265b08201ead23ba Mon Sep 17 00:00:00 2001 From: Astrashh Date: Tue, 11 May 2021 15:48:40 +1000 Subject: [PATCH 0034/1529] Add debugBlock function --- .../dfsek/terra/api/structures/script/StructureScript.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 43c80e7f9..6608f3ffd 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -66,6 +66,7 @@ public class StructureScript { parser.registerFunction("block", new BlockFunctionBuilder(main, false)) .registerFunction("dynamicBlock", new BlockFunctionBuilder(main, true)) + .registerFunction("debugBlock", new BlockFunctionBuilder(main, false)) .registerFunction("check", new CheckFunctionBuilder(main)) .registerFunction("structure", new StructureFunctionBuilder(registry, main)) .registerFunction("randomInt", new RandomFunctionBuilder()) @@ -101,6 +102,10 @@ public class StructureScript { .registerFunction("max", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) .registerFunction("min", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); + if(!main.getTerraConfig().isDebugScript()) { + parser.ignoreFunction("debugBlock"); + } + block = parser.parse(); this.id = parser.getID(); tempID = id; From 4908c7bb731183ac715eec8dc031d78c2a66a5b2 Mon Sep 17 00:00:00 2001 From: Astrashh Date: Sat, 22 May 2021 23:10:47 +1000 Subject: [PATCH 0035/1529] Remove script sub-directory requirement --- .../src/main/java/com/dfsek/terra/config/pack/ConfigPack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f8d2775fc..eb731d054 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 @@ -205,7 +205,7 @@ public class ConfigPack implements LoaderRegistrar { varScope.create(var.getKey(), var.getValue()); } - loader.open("structures/data", ".tesf").thenEntries(entries -> { + loader.open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try(InputStream stream = entry.getValue()) { StructureScript structureScript = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); From 10f633be9afd1f0d72bdda025e8a2838005b277c Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 22 Jun 2021 22:09:46 -0700 Subject: [PATCH 0036/1529] resolve merge conflicts --- .../java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 10 +++------- .../fabric/generation/FabricChunkGeneratorWrapper.java | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) 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 735886486..77ff1b952 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 @@ -33,6 +33,7 @@ import com.dfsek.terra.api.util.logging.Logger; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfig; +import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; @@ -182,11 +183,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return dataFolder; } - @Override - public boolean isDebug() { - return config.isDebug(); - } - @Override public Language getLanguage() { return LangUtil.getLanguage(); @@ -349,7 +345,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { try { - event.getPack().getTreeRegistry().add(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + event.getPack().getRegistry(Tree.class).add(entry.getKey().getValue().toString(), (Tree) entry.getValue()); debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); } catch(DuplicateEntryException ignored) { } @@ -377,7 +373,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public void injectBiomes(BiomeRegistrationEvent event) { logger.info("Registering biomes..."); Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + configRegistry.forEach(pack -> pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. logger.info("Biomes registered."); } 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 cae1e2f90..e3e4b18d9 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 @@ -115,7 +115,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener if(!pack.getTemplate().disableStructures()) { String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getId(feature)).toString(); TerraWorld terraWorld = TerraFabricPlugin.getInstance().getWorld((World) world); - TerraStructure located = pack.getStructure(pack.getTemplate().getLocatable().get(name)); + TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getTemplate().getLocatable().get(name)); if(located != null) { CompletableFuture result = new CompletableFuture<>(); AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center).toLocation((World) world), 0, 500, location -> { From cf214cc27455b1d581991633a7b24232d2f7225b Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 22 Jun 2021 23:56:34 -0700 Subject: [PATCH 0037/1529] split common --- common/{ => api}/build.gradle.kts | 0 common/implementation/build.gradle.kts | 59 ++++++++++++++++++ .../dfsek/terra/addon/AddonClassLoader.java | 0 .../java/com/dfsek/terra/addon/AddonPool.java | 0 .../com/dfsek/terra/addon/PreLoadAddon.java | 0 .../addon/exception/AddonLoadException.java | 0 .../CircularDependencyException.java | 0 .../exception/DependencyMissingException.java | 0 .../com/dfsek/terra/api/LoaderRegistrar.java | 0 .../java/com/dfsek/terra/api/TerraPlugin.java | 0 .../dfsek/terra/api/addons/TerraAddon.java | 0 .../terra/api/addons/annotations/Addon.java | 0 .../terra/api/addons/annotations/Author.java | 0 .../terra/api/addons/annotations/Depends.java | 0 .../terra/api/addons/annotations/Version.java | 0 .../terra/api/command/CommandManager.java | 0 .../terra/api/command/CommandTemplate.java | 0 .../terra/api/command/ExecutionState.java | 0 .../api/command/TerraCommandManager.java | 0 .../api/command/annotation/Argument.java | 0 .../terra/api/command/annotation/Command.java | 0 .../api/command/annotation/Subcommand.java | 0 .../terra/api/command/annotation/Switch.java | 0 .../annotation/inject/ArgumentTarget.java | 0 .../annotation/inject/SwitchTarget.java | 0 .../command/annotation/type/DebugCommand.java | 0 .../annotation/type/PlayerCommand.java | 0 .../command/annotation/type/WorldCommand.java | 0 .../terra/api/command/arg/ArgumentParser.java | 0 .../api/command/arg/DoubleArgumentParser.java | 0 .../command/arg/IntegerArgumentParser.java | 0 .../api/command/arg/StringArgumentParser.java | 0 .../command/exception/CommandException.java | 0 .../command/exception/ExecutionException.java | 0 .../exception/InvalidArgumentsException.java | 0 .../exception/MalformedCommandException.java | 0 .../exception/SwitchFormatException.java | 0 .../api/command/tab/NothingCompleter.java | 0 .../terra/api/command/tab/TabCompleter.java | 0 .../dfsek/terra/api/event/EventListener.java | 0 .../dfsek/terra/api/event/EventManager.java | 0 .../terra/api/event/TerraEventManager.java | 0 .../terra/api/event/annotations/Global.java | 0 .../terra/api/event/annotations/Priority.java | 0 .../api/event/events/AbstractCancellable.java | 0 .../terra/api/event/events/Cancellable.java | 0 .../dfsek/terra/api/event/events/Event.java | 0 .../terra/api/event/events/PackEvent.java | 0 .../events/config/ConfigPackLoadEvent.java | 0 .../config/ConfigPackPostLoadEvent.java | 0 .../events/config/ConfigPackPreLoadEvent.java | 0 .../events/world/TerraWorldLoadEvent.java | 0 .../world/generation/EntitySpawnEvent.java | 0 .../world/generation/LootPopulateEvent.java | 0 .../dfsek/terra/api/injection/Injector.java | 0 .../api/injection/annotations/Inject.java | 0 .../exception/InjectionException.java | 0 .../com/dfsek/terra/api/math/GridSpawn.java | 0 .../com/dfsek/terra/api/math/MathUtil.java | 0 .../java/com/dfsek/terra/api/math/Range.java | 0 .../terra/api/math/noise/NoiseSampler.java | 0 .../noise/normalizer/ClampNormalizer.java | 0 .../noise/normalizer/LinearNormalizer.java | 0 .../noise/normalizer/NormalNormalizer.java | 0 .../api/math/noise/normalizer/Normalizer.java | 0 .../noise/samplers/DomainWarpedSampler.java | 0 .../noise/samplers/ExpressionSampler.java | 0 .../api/math/noise/samplers/ImageSampler.java | 0 .../math/noise/samplers/KernelSampler.java | 0 .../noise/samplers/noise/CellularSampler.java | 0 .../noise/samplers/noise/ConstantSampler.java | 0 .../samplers/noise/ExpressionFunction.java | 0 .../samplers/noise/GaborNoiseSampler.java | 0 .../noise/samplers/noise/NoiseFunction.java | 0 .../noise/fractal/BrownianMotionSampler.java | 0 .../noise/fractal/FractalNoiseFunction.java | 0 .../noise/fractal/PingPongSampler.java | 0 .../noise/fractal/RidgedFractalSampler.java | 0 .../noise/random/GaussianNoiseSampler.java | 0 .../noise/random/WhiteNoiseSampler.java | 0 .../noise/simplex/OpenSimplex2SSampler.java | 0 .../noise/simplex/OpenSimplex2Sampler.java | 0 .../samplers/noise/simplex/PerlinSampler.java | 0 .../noise/simplex/SimplexSampler.java | 0 .../noise/simplex/SimplexStyleSampler.java | 0 .../noise/value/ValueCubicSampler.java | 0 .../samplers/noise/value/ValueSampler.java | 0 .../samplers/noise/value/ValueStyleNoise.java | 0 .../api/math/paralithic/BlankFunction.java | 0 .../defined/UserDefinedFunction.java | 0 .../math/paralithic/noise/NoiseFunction.java | 0 .../math/paralithic/noise/NoiseFunction2.java | 0 .../math/paralithic/noise/NoiseFunction3.java | 0 .../terra/api/math/pixel/Distribution.java | 0 .../dfsek/terra/api/math/pixel/Polygon.java | 0 .../dfsek/terra/api/math/pixel/Rectangle.java | 0 .../dfsek/terra/api/math/vector/Location.java | 0 .../dfsek/terra/api/math/vector/Vector2.java | 0 .../dfsek/terra/api/math/vector/Vector3.java | 0 .../dfsek/terra/api/math/voxel/Cylinder.java | 0 .../terra/api/math/voxel/DeformedSphere.java | 0 .../dfsek/terra/api/math/voxel/Sphere.java | 0 .../com/dfsek/terra/api/math/voxel/Tube.java | 0 .../terra/api/math/voxel/VoxelGeometry.java | 0 .../terra/api/platform/CommandSender.java | 0 .../com/dfsek/terra/api/platform/Handle.java | 0 .../dfsek/terra/api/platform/block/Axis.java | 0 .../dfsek/terra/api/platform/block/Block.java | 0 .../terra/api/platform/block/BlockData.java | 0 .../terra/api/platform/block/BlockFace.java | 0 .../terra/api/platform/block/BlockType.java | 0 .../block/data/AnaloguePowerable.java | 0 .../api/platform/block/data/Bisected.java | 0 .../api/platform/block/data/Directional.java | 0 .../platform/block/data/MultipleFacing.java | 0 .../api/platform/block/data/Orientable.java | 0 .../terra/api/platform/block/data/Rail.java | 0 .../api/platform/block/data/RedstoneWire.java | 0 .../api/platform/block/data/Rotatable.java | 0 .../terra/api/platform/block/data/Slab.java | 0 .../terra/api/platform/block/data/Stairs.java | 0 .../terra/api/platform/block/data/Wall.java | 0 .../api/platform/block/data/Waterlogged.java | 0 .../block/data/properties/Property.java | 5 ++ .../api/platform/block/state/BlockState.java | 0 .../api/platform/block/state/Container.java | 0 .../api/platform/block/state/MobSpawner.java | 0 .../api/platform/block/state/SerialState.java | 0 .../terra/api/platform/block/state/Sign.java | 0 .../terra/api/platform/entity/Entity.java | 0 .../terra/api/platform/entity/EntityType.java | 0 .../terra/api/platform/entity/Player.java | 0 .../terra/api/platform/handle/ItemHandle.java | 0 .../api/platform/handle/WorldHandle.java | 0 .../inventory/BlockInventoryHolder.java | 0 .../api/platform/inventory/Inventory.java | 0 .../platform/inventory/InventoryHolder.java | 0 .../terra/api/platform/inventory/Item.java | 0 .../api/platform/inventory/ItemStack.java | 0 .../platform/inventory/item/Damageable.java | 0 .../platform/inventory/item/Enchantment.java | 0 .../api/platform/inventory/item/ItemMeta.java | 0 .../terra/api/platform/package-info.java | 0 .../dfsek/terra/api/platform/world/Biome.java | 0 .../terra/api/platform/world/BiomeGrid.java | 0 .../dfsek/terra/api/platform/world/Chunk.java | 0 .../terra/api/platform/world/ChunkAccess.java | 0 .../dfsek/terra/api/platform/world/Tree.java | 0 .../dfsek/terra/api/platform/world/World.java | 0 .../world/generator/BlockPopulator.java | 0 .../platform/world/generator/ChunkData.java | 0 .../world/generator/ChunkGenerator.java | 0 .../world/generator/GeneratorWrapper.java | 0 .../terra/api/registry/CheckedRegistry.java | 0 .../terra/api/registry/LockedRegistry.java | 0 .../dfsek/terra/api/registry/Registry.java | 0 .../terra/api/structures/loot/Entry.java | 0 .../terra/api/structures/loot/LootTable.java | 0 .../dfsek/terra/api/structures/loot/Pool.java | 0 .../loot/functions/AmountFunction.java | 0 .../loot/functions/DamageFunction.java | 0 .../loot/functions/EnchantFunction.java | 0 .../loot/functions/LootFunction.java | 0 .../terra/api/structures/parser/Parser.java | 0 .../api/structures/parser/ParserUtil.java | 0 .../parser/exceptions/ParseException.java | 0 .../api/structures/parser/lang/Block.java | 0 .../parser/lang/ImplementationArguments.java | 0 .../api/structures/parser/lang/Item.java | 0 .../api/structures/parser/lang/Keyword.java | 0 .../structures/parser/lang/Returnable.java | 0 .../api/structures/parser/lang/Statement.java | 0 .../lang/constants/BooleanConstant.java | 0 .../lang/constants/ConstantExpression.java | 0 .../lang/constants/NumericConstant.java | 0 .../parser/lang/constants/StringConstant.java | 0 .../parser/lang/functions/Function.java | 0 .../lang/functions/FunctionBuilder.java | 0 .../lang/functions/def/FunctionBlock.java | 0 .../lang/keywords/flow/BreakKeyword.java | 0 .../lang/keywords/flow/ContinueKeyword.java | 0 .../lang/keywords/flow/FailKeyword.java | 0 .../lang/keywords/flow/ReturnKeyword.java | 0 .../lang/keywords/looplike/ForKeyword.java | 0 .../lang/keywords/looplike/IfKeyword.java | 0 .../lang/keywords/looplike/WhileKeyword.java | 0 .../lang/operations/BinaryOperation.java | 0 .../lang/operations/BooleanAndOperation.java | 0 .../lang/operations/BooleanNotOperation.java | 0 .../lang/operations/BooleanOrOperation.java | 0 .../operations/ConcatenationOperation.java | 0 .../lang/operations/DivisionOperation.java | 0 .../lang/operations/ModuloOperation.java | 0 .../operations/MultiplicationOperation.java | 0 .../lang/operations/NegationOperation.java | 0 .../operations/NumberAdditionOperation.java | 0 .../lang/operations/SubtractionOperation.java | 0 .../lang/operations/UnaryOperation.java | 0 .../statements/EqualsStatement.java | 0 .../GreaterOrEqualsThanStatement.java | 0 .../statements/GreaterThanStatement.java | 0 .../statements/LessThanOrEqualsStatement.java | 0 .../statements/LessThanStatement.java | 0 .../statements/NotEqualsStatement.java | 0 .../parser/lang/variables/Assignment.java | 0 .../lang/variables/BooleanVariable.java | 0 .../parser/lang/variables/Declaration.java | 0 .../parser/lang/variables/Getter.java | 0 .../parser/lang/variables/NumberVariable.java | 0 .../parser/lang/variables/StringVariable.java | 0 .../parser/lang/variables/Variable.java | 0 .../structures/script/StructureScript.java | 0 .../script/TerraImplementationArguments.java | 0 .../builders/BinaryNumberFunctionBuilder.java | 0 .../script/builders/BiomeFunctionBuilder.java | 0 .../script/builders/BlockFunctionBuilder.java | 0 .../builders/CheckBlockFunctionBuilder.java | 0 .../script/builders/CheckFunctionBuilder.java | 0 .../builders/EntityFunctionBuilder.java | 0 .../builders/GetMarkFunctionBuilder.java | 0 .../script/builders/LootFunctionBuilder.java | 0 .../script/builders/PullFunctionBuilder.java | 0 .../builders/RandomFunctionBuilder.java | 0 .../builders/RecursionsFunctionBuilder.java | 0 .../builders/SetMarkFunctionBuilder.java | 0 .../script/builders/StateFunctionBuilder.java | 0 .../builders/StructureFunctionBuilder.java | 0 .../builders/UnaryBooleanFunctionBuilder.java | 0 .../builders/UnaryNumberFunctionBuilder.java | 0 .../builders/UnaryStringFunctionBuilder.java | 0 .../builders/ZeroArgFunctionBuilder.java | 0 .../functions/AbstractBlockFunction.java | 0 .../script/functions/BiomeFunction.java | 0 .../script/functions/BlockFunction.java | 0 .../script/functions/CheckBlockFunction.java | 0 .../script/functions/CheckFunction.java | 0 .../functions/DynamicBlockFunction.java | 0 .../script/functions/EntityFunction.java | 0 .../script/functions/GetMarkFunction.java | 0 .../script/functions/LootFunction.java | 0 .../script/functions/PullFunction.java | 0 .../script/functions/RandomFunction.java | 0 .../script/functions/RecursionsFunction.java | 0 .../script/functions/SetMarkFunction.java | 0 .../script/functions/StateFunction.java | 0 .../script/functions/StructureFunction.java | 0 .../api/structures/structure/Rotation.java | 0 .../structures/structure/RotationUtil.java | 0 .../structures/structure/buffer/Buffer.java | 0 .../api/structures/structure/buffer/Cell.java | 0 .../structure/buffer/DirectBuffer.java | 0 .../structure/buffer/IntermediateBuffer.java | 0 .../structure/buffer/StructureBuffer.java | 0 .../structure/buffer/items/BufferedBlock.java | 0 .../buffer/items/BufferedEntity.java | 0 .../structure/buffer/items/BufferedItem.java | 0 .../buffer/items/BufferedLootApplication.java | 0 .../buffer/items/BufferedPulledBlock.java | 0 .../items/BufferedStateManipulator.java | 0 .../terra/api/structures/tokenizer/Char.java | 0 .../api/structures/tokenizer/Lookahead.java | 0 .../api/structures/tokenizer/Position.java | 0 .../terra/api/structures/tokenizer/Token.java | 0 .../api/structures/tokenizer/Tokenizer.java | 0 .../tokenizer/exceptions/EOFException.java | 0 .../tokenizer/exceptions/FormatException.java | 0 .../exceptions/TokenizerException.java | 0 .../transform/AttemptsFailedException.java | 0 .../terra/api/transform/MapTransform.java | 0 .../dfsek/terra/api/transform/Transform.java | 0 .../api/transform/TransformException.java | 0 .../terra/api/transform/Transformer.java | 0 .../dfsek/terra/api/transform/Validator.java | 0 .../com/dfsek/terra/api/util/FastRandom.java | 0 .../com/dfsek/terra/api/util/GlueList.java | 0 .../com/dfsek/terra/api/util/JarUtil.java | 0 .../dfsek/terra/api/util/ReflectionUtil.java | 0 .../api/util/collections/MaterialSet.java | 0 .../collections/ProbabilityCollection.java | 0 .../terra/api/util/generic/either/Either.java | 0 .../api/util/generic/pair/ImmutablePair.java | 0 .../terra/api/util/generic/pair/Pair.java | 0 .../terra/api/util/hash/HashIntrinsic.java | 0 .../api/util/hash/HashMapDoubleDouble.java | 0 .../terra/api/util/logging/DebugLogger.java | 0 .../terra/api/util/logging/JavaLogger.java | 0 .../dfsek/terra/api/util/logging/Logger.java | 0 .../api/util/mutable/MutableBoolean.java | 0 .../terra/api/util/mutable/MutableDouble.java | 0 .../api/util/mutable/MutableInteger.java | 0 .../terra/api/util/mutable/MutableNumber.java | 0 .../api/util/mutable/MutablePrimitive.java | 0 .../terra/api/util/mutable/package-info.java | 0 .../terra/api/util/seeded/NoiseProvider.java | 0 .../terra/api/util/seeded/NoiseSeeded.java | 0 .../terra/api/util/seeded/SeededBuilder.java | 0 .../terra/api/util/seeded/SourceSeeded.java | 0 .../terra/api/util/seeded/StageSeeded.java | 0 .../terra/api/util/world/PaletteUtil.java | 0 .../terra/api/util/world/PopulationUtil.java | 0 .../terra/api/world/biome/Generator.java | 0 .../terra/api/world/biome/TerraBiome.java | 0 .../api/world/biome/UserDefinedBiome.java | 0 .../api/world/biome/pipeline/BiomeHolder.java | 0 .../world/biome/pipeline/BiomePipeline.java | 0 .../biome/pipeline/TerraBiomeHolder.java | 0 .../biome/pipeline/expand/BiomeExpander.java | 0 .../pipeline/expand/FractalExpander.java | 0 .../biome/pipeline/mutator/BiomeMutator.java | 0 .../pipeline/mutator/BorderListMutator.java | 0 .../biome/pipeline/mutator/BorderMutator.java | 0 .../pipeline/mutator/ReplaceListMutator.java | 0 .../pipeline/mutator/ReplaceMutator.java | 0 .../biome/pipeline/mutator/SmoothMutator.java | 0 .../biome/pipeline/source/BiomeSource.java | 0 .../biome/pipeline/source/RandomSource.java | 0 .../biome/pipeline/stages/ExpanderStage.java | 0 .../biome/pipeline/stages/MutatorStage.java | 0 .../world/biome/pipeline/stages/Stage.java | 0 .../world/biome/provider/BiomeProvider.java | 0 .../biome/provider/ImageBiomeProvider.java | 0 .../biome/provider/SingleBiomeProvider.java | 0 .../biome/provider/StandardBiomeProvider.java | 0 .../dfsek/terra/api/world/carving/Carver.java | 0 .../dfsek/terra/api/world/carving/Worm.java | 0 .../dfsek/terra/api/world/flora/Flora.java | 0 .../api/world/generation/Chunkified.java | 0 .../world/generation/TerraBlockPopulator.java | 0 .../world/generation/TerraChunkGenerator.java | 0 .../api/world/locate/AsyncBiomeFinder.java | 0 .../api/world/locate/AsyncFeatureFinder.java | 0 .../world/locate/AsyncStructureFinder.java | 0 .../terra/api/world/palette/NoisePalette.java | 0 .../terra/api/world/palette/Palette.java | 0 .../api/world/palette/SinglePalette.java | 0 .../world/palette/holder/PaletteHolder.java | 0 .../palette/holder/PaletteHolderBuilder.java | 0 .../palette/holder/PaletteLayerHolder.java | 0 .../api/world/palette/slant/SlantHolder.java | 0 .../com/dfsek/terra/carving/CarverCache.java | 0 .../dfsek/terra/carving/CarverPalette.java | 0 .../terra/carving/UserDefinedCarver.java | 0 .../dfsek/terra/commands/AddonsCommand.java | 0 .../com/dfsek/terra/commands/CommandUtil.java | 0 .../dfsek/terra/commands/GetBlockCommand.java | 0 .../dfsek/terra/commands/PacksCommand.java | 0 .../dfsek/terra/commands/ReloadCommand.java | 0 .../dfsek/terra/commands/VersionCommand.java | 0 .../terra/commands/biome/BiomeCommand.java | 0 .../commands/biome/BiomeInfoCommand.java | 0 .../commands/biome/BiomeLocateCommand.java | 0 .../biome/arg/BiomeArgumentParser.java | 0 .../commands/biome/tab/BiomeTabCompleter.java | 0 .../geometry/DeformedSphereCommand.java | 0 .../commands/geometry/GeometryCommand.java | 0 .../commands/geometry/SphereCommand.java | 0 .../terra/commands/geometry/TubeCommand.java | 0 .../commands/profiler/ProfileCommand.java | 0 .../profiler/ProfileQueryCommand.java | 0 .../profiler/ProfileResetCommand.java | 0 .../profiler/ProfileStartCommand.java | 0 .../commands/profiler/ProfileStopCommand.java | 0 .../commands/structure/SpawnCommand.java | 0 .../commands/structure/StructureCommand.java | 0 .../structure/StructureExportCommand.java | 0 .../structure/StructureLoadCommand.java | 0 .../structure/StructureLocateCommand.java | 0 .../argument/ScriptArgumentParser.java | 0 .../argument/StructureArgumentParser.java | 0 .../completer/RotationCompleter.java | 0 .../structure/completer/ScriptCompleter.java | 0 .../completer/StructureCompleter.java | 0 .../dfsek/terra/config/GenericLoaders.java | 0 .../com/dfsek/terra/config/PluginConfig.java | 0 .../terra/config/builder/BiomeBuilder.java | 0 .../config/builder/GeneratorBuilder.java | 0 .../builder/UserDefinedBiomeBuilder.java | 0 .../dfsek/terra/config/dummy/DummyWorld.java | 0 .../terra/config/factories/BiomeFactory.java | 0 .../terra/config/factories/CarverFactory.java | 0 .../terra/config/factories/ConfigFactory.java | 0 .../terra/config/factories/FloraFactory.java | 0 .../terra/config/factories/OreFactory.java | 0 .../config/factories/PaletteFactory.java | 0 .../config/factories/StructureFactory.java | 0 .../terra/config/factories/TreeFactory.java | 0 .../fileloaders/ExceptionalConsumer.java | 0 .../config/fileloaders/FolderLoader.java | 0 .../terra/config/fileloaders/Loader.java | 0 .../terra/config/fileloaders/ZIPLoader.java | 0 .../com/dfsek/terra/config/lang/LangUtil.java | 0 .../com/dfsek/terra/config/lang/Language.java | 0 .../com/dfsek/terra/config/lang/Message.java | 0 .../terra/config/lang/MultiLineMessage.java | 0 .../terra/config/lang/SingleLineMessage.java | 0 .../config/loaders/LinkedHashMapLoader.java | 0 .../config/loaders/MaterialSetLoader.java | 0 .../loaders/ProbabilityCollectionLoader.java | 0 .../terra/config/loaders/RangeLoader.java | 0 .../com/dfsek/terra/config/loaders/Types.java | 0 .../loaders/config/BufferedImageLoader.java | 0 .../loaders/config/FloraLayerLoader.java | 0 .../loaders/config/GridSpawnLoader.java | 0 .../loaders/config/OreConfigLoader.java | 0 .../loaders/config/OreHolderLoader.java | 0 .../loaders/config/TreeLayerLoader.java | 0 .../biome/BiomeProviderBuilderLoader.java | 0 .../config/biome/SourceBuilderLoader.java | 0 .../config/biome/StageBuilderLoader.java | 0 .../provider/BiomePipelineTemplate.java | 0 .../provider/BiomeProviderTemplate.java | 0 .../provider/ImageProviderTemplate.java | 0 .../provider/SingleBiomeProviderTemplate.java | 0 .../templates/source/NoiseSourceTemplate.java | 0 .../templates/source/SourceTemplate.java | 0 .../biome/templates/stage/StageTemplate.java | 0 .../stage/expander/ExpanderStageTemplate.java | 0 .../mutator/BorderListMutatorTemplate.java | 0 .../stage/mutator/BorderMutatorTemplate.java | 0 .../stage/mutator/MutatorStageTemplate.java | 0 .../mutator/ReplaceListMutatorTemplate.java | 0 .../stage/mutator/ReplaceMutatorTemplate.java | 0 .../stage/mutator/SmoothMutatorTemplate.java | 0 .../config/function/FunctionTemplate.java | 0 .../sampler/NoiseSamplerBuilderLoader.java | 0 .../sampler/templates/DomainWarpTemplate.java | 0 .../templates/ImageSamplerTemplate.java | 0 .../sampler/templates/KernelTemplate.java | 0 .../sampler/templates/SamplerTemplate.java | 0 .../noise/CellularNoiseTemplate.java | 0 .../noise/ConstantNoiseTemplate.java | 0 .../noise/ExpressionFunctionTemplate.java | 0 .../templates/noise/GaborNoiseTemplate.java | 0 .../templates/noise/NoiseTemplate.java | 0 .../templates/noise/SimpleNoiseTemplate.java | 0 .../noise/fractal/BrownianMotionTemplate.java | 0 .../noise/fractal/FractalTemplate.java | 0 .../noise/fractal/PingPongTemplate.java | 0 .../noise/fractal/RidgedFractalTemplate.java | 0 .../normalizer/ClampNormalizerTemplate.java | 0 .../normalizer/LinearNormalizerTemplate.java | 0 .../normalizer/NormalNormalizerTemplate.java | 0 .../normalizer/NormalizerTemplate.java | 0 .../loaders/palette/CarverPaletteLoader.java | 0 .../loaders/palette/PaletteHolderLoader.java | 0 .../loaders/palette/PaletteLayerLoader.java | 0 .../palette/slant/SlantHolderLoader.java | 0 .../dfsek/terra/config/pack/ConfigPack.java | 0 .../config/pack/ConfigPackPostTemplate.java | 0 .../terra/config/pack/ConfigPackTemplate.java | 0 .../dfsek/terra/config/pack/WorldConfig.java | 0 .../terra/config/prototype/ConfigType.java | 0 .../terra/config/prototype/ProtoConfig.java | 0 .../templates/AbstractableTemplate.java | 0 .../terra/config/templates/BiomeTemplate.java | 0 .../config/templates/CarverTemplate.java | 0 .../terra/config/templates/FloraTemplate.java | 0 .../terra/config/templates/OreTemplate.java | 0 .../config/templates/PaletteTemplate.java | 0 .../config/templates/StructureTemplate.java | 0 .../terra/config/templates/TreeTemplate.java | 0 .../java/com/dfsek/terra/profiler/Frame.java | 0 .../dfsek/terra/profiler/ProfileFrame.java | 0 .../com/dfsek/terra/profiler/Profiler.java | 0 .../dfsek/terra/profiler/ProfilerImpl.java | 0 .../com/dfsek/terra/profiler/Timings.java | 0 .../exception/MalformedStackException.java | 0 .../profiler/exception/ProfilerException.java | 0 .../dfsek/terra/registry/OpenRegistry.java | 0 .../terra/registry/config/BiomeRegistry.java | 0 .../terra/registry/config/CarverRegistry.java | 0 .../registry/config/ConfigTypeRegistry.java | 0 .../terra/registry/config/FloraRegistry.java | 0 .../registry/config/FunctionRegistry.java | 0 .../terra/registry/config/LootRegistry.java | 0 .../terra/registry/config/NoiseRegistry.java | 0 .../terra/registry/config/OreRegistry.java | 0 .../registry/config/PaletteRegistry.java | 0 .../terra/registry/config/ScriptRegistry.java | 0 .../registry/config/StructureRegistry.java | 0 .../terra/registry/config/TreeRegistry.java | 0 .../exception/DuplicateEntryException.java | 0 .../terra/registry/master/AddonRegistry.java | 0 .../terra/registry/master/ConfigRegistry.java | 0 .../java/com/dfsek/terra/world/Carver.java | 0 .../com/dfsek/terra/world/TerraWorld.java | 0 .../terra/world/carving/NoiseCarver.java | 0 .../world/generation/WorldGenerator.java | 0 .../generators/DefaultChunkGenerator2D.java | 0 .../generators/DefaultChunkGenerator3D.java | 0 .../world/generation/math/SamplerCache.java | 0 .../math/interpolation/ChunkInterpolator.java | 0 .../interpolation/ChunkInterpolator2D.java | 0 .../interpolation/ChunkInterpolator3D.java | 0 .../interpolation/ElevationInterpolator.java | 0 .../math/interpolation/Interpolator.java | 0 .../math/interpolation/Interpolator3.java | 0 .../generation/math/samplers/Sampler.java | 0 .../generation/math/samplers/Sampler2D.java | 0 .../generation/math/samplers/Sampler3D.java | 0 .../terra/world/population/CavePopulator.java | 0 .../world/population/FloraPopulator.java | 0 .../terra/world/population/OrePopulator.java | 0 .../world/population/StructurePopulator.java | 0 .../terra/world/population/TreePopulator.java | 0 .../population/items/PlaceableLayer.java | 0 .../population/items/TerraStructure.java | 0 .../population/items/flora/BlockFlora.java | 0 .../population/items/flora/ConstantFlora.java | 0 .../population/items/flora/FloraLayer.java | 0 .../population/items/flora/TerraFlora.java | 0 .../items/ores/DeformedSphereOre.java | 0 .../world/population/items/ores/Ore.java | 0 .../population/items/ores/OreConfig.java | 0 .../population/items/ores/OreHolder.java | 0 .../population/items/ores/VanillaOre.java | 0 .../population/items/tree/TerraTree.java | 0 .../population/items/tree/TreeLayer.java | 0 .../src/main/resources/config.yml | 0 .../src/main/resources/lang/afr_sa.yml | 0 .../src/main/resources/lang/cs_cz.yml | 0 .../src/main/resources/lang/da.yml | 0 .../src/main/resources/lang/de_de.yml | 0 .../src/main/resources/lang/en_us.yml | 0 .../src/main/resources/lang/es.yml | 0 .../src/main/resources/lang/it_it.yml | 0 .../src/main/resources/lang/ja_jp.yml | 0 .../src/main/resources/lang/nl_NL.yml | 0 .../src/main/resources/lang/pl.yml | 0 .../src/main/resources/lang/ru.yml | 0 .../src/main/resources/lang/zh_cn.yml | 0 .../src/test/java/biome/DistributionTest.java | 0 .../src/test/java/biome/ImageTest.java | 0 .../src/test/java/command/CommandTest.java | 0 .../test/java/noise/ColorConfigTemplate.java | 0 .../test/java/noise/NoiseConfigTemplate.java | 0 .../src/test/java/noise/NoiseTool.java | 0 .../src/test/java/profiler/ProfilerTest.java | 0 .../test/java/structure/LookaheadTest.java | 0 .../src/test/java/structure/ParserTest.java | 0 .../src/test/resources/config.yml | 0 .../src/test/resources/map.jpg | Bin .../src/test/resources/test.tesf | 0 platforms/bukkit/build.gradle.kts | 2 +- platforms/fabric/build.gradle.kts | 2 +- platforms/region/build.gradle.kts | 2 +- platforms/sponge/build.gradle.kts | 2 +- settings.gradle.kts | 3 +- 548 files changed, 70 insertions(+), 5 deletions(-) rename common/{ => api}/build.gradle.kts (100%) create mode 100644 common/implementation/build.gradle.kts rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/AddonPool.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/TerraPlugin.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/CommandManager.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/ExecutionState.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/Command.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/EventListener.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/EventManager.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/annotations/Global.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/Event.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/injection/Injector.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/GridSpawn.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/MathUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/Range.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/vector/Location.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/CommandSender.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/Handle.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/Axis.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/Block.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java (100%) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/entity/Player.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/package-info.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/Biome.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/Tree.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/World.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/registry/Registry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/MapTransform.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/Transform.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/TransformException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/Transformer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/transform/Validator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/FastRandom.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/GlueList.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/JarUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/logging/Logger.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/Generator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/carving/Carver.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/carving/Worm.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/flora/Flora.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/Palette.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/carving/CarverCache.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/carving/CarverPalette.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/AddonsCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/CommandUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/PacksCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/ReloadCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/VersionCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/GenericLoaders.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/PluginConfig.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/OreFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/lang/LangUtil.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/lang/Language.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/lang/Message.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/Types.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/Frame.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/Profiler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/Timings.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/OpenRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/Carver.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/TerraWorld.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/CavePopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/OrePopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/TreePopulator.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java (100%) rename common/{ => implementation}/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java (100%) rename common/{ => implementation}/src/main/resources/config.yml (100%) rename common/{ => implementation}/src/main/resources/lang/afr_sa.yml (100%) rename common/{ => implementation}/src/main/resources/lang/cs_cz.yml (100%) rename common/{ => implementation}/src/main/resources/lang/da.yml (100%) rename common/{ => implementation}/src/main/resources/lang/de_de.yml (100%) rename common/{ => implementation}/src/main/resources/lang/en_us.yml (100%) rename common/{ => implementation}/src/main/resources/lang/es.yml (100%) rename common/{ => implementation}/src/main/resources/lang/it_it.yml (100%) rename common/{ => implementation}/src/main/resources/lang/ja_jp.yml (100%) rename common/{ => implementation}/src/main/resources/lang/nl_NL.yml (100%) rename common/{ => implementation}/src/main/resources/lang/pl.yml (100%) rename common/{ => implementation}/src/main/resources/lang/ru.yml (100%) rename common/{ => implementation}/src/main/resources/lang/zh_cn.yml (100%) rename common/{ => implementation}/src/test/java/biome/DistributionTest.java (100%) rename common/{ => implementation}/src/test/java/biome/ImageTest.java (100%) rename common/{ => implementation}/src/test/java/command/CommandTest.java (100%) rename common/{ => implementation}/src/test/java/noise/ColorConfigTemplate.java (100%) rename common/{ => implementation}/src/test/java/noise/NoiseConfigTemplate.java (100%) rename common/{ => implementation}/src/test/java/noise/NoiseTool.java (100%) rename common/{ => implementation}/src/test/java/profiler/ProfilerTest.java (100%) rename common/{ => implementation}/src/test/java/structure/LookaheadTest.java (100%) rename common/{ => implementation}/src/test/java/structure/ParserTest.java (100%) rename common/{ => implementation}/src/test/resources/config.yml (100%) rename common/{ => implementation}/src/test/resources/map.jpg (100%) rename common/{ => implementation}/src/test/resources/test.tesf (100%) diff --git a/common/build.gradle.kts b/common/api/build.gradle.kts similarity index 100% rename from common/build.gradle.kts rename to common/api/build.gradle.kts diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/implementation/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java diff --git a/common/src/main/java/com/dfsek/terra/addon/AddonPool.java b/common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/AddonPool.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java diff --git a/common/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java diff --git a/common/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java diff --git a/common/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java diff --git a/common/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java rename to common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java diff --git a/common/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java b/common/implementation/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java rename to common/implementation/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java diff --git a/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/api/TerraPlugin.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/TerraPlugin.java rename to common/implementation/src/main/java/com/dfsek/terra/api/TerraPlugin.java diff --git a/common/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java b/common/implementation/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java rename to common/implementation/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java diff --git a/common/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java b/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java rename to common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java diff --git a/common/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java b/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java rename to common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java diff --git a/common/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java b/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java rename to common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java diff --git a/common/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java b/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java rename to common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/CommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/CommandManager.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/ExecutionState.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/ExecutionState.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/Command.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Command.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/Command.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Command.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/EventListener.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventListener.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/EventListener.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/EventListener.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManager.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/EventManager.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/EventManager.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/annotations/Global.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Global.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/annotations/Global.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Global.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/Event.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/Event.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/Event.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/Event.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java diff --git a/common/src/main/java/com/dfsek/terra/api/injection/Injector.java b/common/implementation/src/main/java/com/dfsek/terra/api/injection/Injector.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/injection/Injector.java rename to common/implementation/src/main/java/com/dfsek/terra/api/injection/Injector.java diff --git a/common/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java b/common/implementation/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java rename to common/implementation/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java diff --git a/common/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java b/common/implementation/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/GridSpawn.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/MathUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/MathUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/MathUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/MathUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/Range.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/Range.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/Range.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/Range.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/vector/Location.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Location.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/vector/Location.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Location.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java diff --git a/common/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/CommandSender.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/CommandSender.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/CommandSender.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/CommandSender.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/Handle.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/Handle.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/Handle.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/Handle.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/Axis.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/Axis.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/Block.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Block.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/Block.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Block.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java new file mode 100644 index 000000000..95bfeca93 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.platform.block.data.properties; + +public interface Property { + +} diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/entity/Player.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/entity/Player.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/package-info.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/package-info.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/Biome.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/Biome.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/Tree.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Tree.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/Tree.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Tree.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/World.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/World.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/World.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/World.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java diff --git a/common/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java rename to common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java diff --git a/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/api/registry/Registry.java b/common/implementation/src/main/java/com/dfsek/terra/api/registry/Registry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/registry/Registry.java rename to common/implementation/src/main/java/com/dfsek/terra/api/registry/Registry.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java diff --git a/common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/MapTransform.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/MapTransform.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/Transform.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transform.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/Transform.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/Transform.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/TransformException.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/TransformException.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformException.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/Transformer.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transformer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/Transformer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/Transformer.java diff --git a/common/src/main/java/com/dfsek/terra/api/transform/Validator.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/Validator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/transform/Validator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/Validator.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/FastRandom.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/FastRandom.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/GlueList.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/GlueList.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/JarUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/JarUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/JarUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/JarUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/logging/Logger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/Logger.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/logging/Logger.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/logging/Logger.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/Generator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/Generator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/Generator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/carving/Carver.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/carving/Carver.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/carving/Worm.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/flora/Flora.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/flora/Flora.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/carving/CarverCache.java rename to common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/carving/CarverPalette.java rename to common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java diff --git a/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java rename to common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java diff --git a/common/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/AddonsCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/CommandUtil.java b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/CommandUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java diff --git a/common/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/PacksCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/ReloadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/ReloadCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/VersionCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/VersionCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java diff --git a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/GenericLoaders.java rename to common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java diff --git a/common/src/main/java/com/dfsek/terra/config/PluginConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfig.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/PluginConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/config/PluginConfig.java diff --git a/common/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java rename to common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java diff --git a/common/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java rename to common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java rename to common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java diff --git a/common/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java rename to common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java diff --git a/common/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java diff --git a/common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java diff --git a/common/src/main/java/com/dfsek/terra/config/lang/Language.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/lang/Language.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java diff --git a/common/src/main/java/com/dfsek/terra/config/lang/Message.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/lang/Message.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java diff --git a/common/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java diff --git a/common/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/Types.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java rename to common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java diff --git a/common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java rename to common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/Frame.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/Frame.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/Profiler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/Profiler.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/Profiler.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/Timings.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/Timings.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/Timings.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java diff --git a/common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java rename to common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java diff --git a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java b/common/implementation/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java diff --git a/common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java diff --git a/common/src/main/java/com/dfsek/terra/world/Carver.java b/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/Carver.java rename to common/implementation/src/main/java/com/dfsek/terra/world/Carver.java diff --git a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/TerraWorld.java rename to common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java diff --git a/common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java b/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java rename to common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java diff --git a/common/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 similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java similarity index 100% rename from common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java rename to common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java diff --git a/common/src/main/resources/config.yml b/common/implementation/src/main/resources/config.yml similarity index 100% rename from common/src/main/resources/config.yml rename to common/implementation/src/main/resources/config.yml diff --git a/common/src/main/resources/lang/afr_sa.yml b/common/implementation/src/main/resources/lang/afr_sa.yml similarity index 100% rename from common/src/main/resources/lang/afr_sa.yml rename to common/implementation/src/main/resources/lang/afr_sa.yml diff --git a/common/src/main/resources/lang/cs_cz.yml b/common/implementation/src/main/resources/lang/cs_cz.yml similarity index 100% rename from common/src/main/resources/lang/cs_cz.yml rename to common/implementation/src/main/resources/lang/cs_cz.yml diff --git a/common/src/main/resources/lang/da.yml b/common/implementation/src/main/resources/lang/da.yml similarity index 100% rename from common/src/main/resources/lang/da.yml rename to common/implementation/src/main/resources/lang/da.yml diff --git a/common/src/main/resources/lang/de_de.yml b/common/implementation/src/main/resources/lang/de_de.yml similarity index 100% rename from common/src/main/resources/lang/de_de.yml rename to common/implementation/src/main/resources/lang/de_de.yml diff --git a/common/src/main/resources/lang/en_us.yml b/common/implementation/src/main/resources/lang/en_us.yml similarity index 100% rename from common/src/main/resources/lang/en_us.yml rename to common/implementation/src/main/resources/lang/en_us.yml diff --git a/common/src/main/resources/lang/es.yml b/common/implementation/src/main/resources/lang/es.yml similarity index 100% rename from common/src/main/resources/lang/es.yml rename to common/implementation/src/main/resources/lang/es.yml diff --git a/common/src/main/resources/lang/it_it.yml b/common/implementation/src/main/resources/lang/it_it.yml similarity index 100% rename from common/src/main/resources/lang/it_it.yml rename to common/implementation/src/main/resources/lang/it_it.yml diff --git a/common/src/main/resources/lang/ja_jp.yml b/common/implementation/src/main/resources/lang/ja_jp.yml similarity index 100% rename from common/src/main/resources/lang/ja_jp.yml rename to common/implementation/src/main/resources/lang/ja_jp.yml diff --git a/common/src/main/resources/lang/nl_NL.yml b/common/implementation/src/main/resources/lang/nl_NL.yml similarity index 100% rename from common/src/main/resources/lang/nl_NL.yml rename to common/implementation/src/main/resources/lang/nl_NL.yml diff --git a/common/src/main/resources/lang/pl.yml b/common/implementation/src/main/resources/lang/pl.yml similarity index 100% rename from common/src/main/resources/lang/pl.yml rename to common/implementation/src/main/resources/lang/pl.yml diff --git a/common/src/main/resources/lang/ru.yml b/common/implementation/src/main/resources/lang/ru.yml similarity index 100% rename from common/src/main/resources/lang/ru.yml rename to common/implementation/src/main/resources/lang/ru.yml diff --git a/common/src/main/resources/lang/zh_cn.yml b/common/implementation/src/main/resources/lang/zh_cn.yml similarity index 100% rename from common/src/main/resources/lang/zh_cn.yml rename to common/implementation/src/main/resources/lang/zh_cn.yml diff --git a/common/src/test/java/biome/DistributionTest.java b/common/implementation/src/test/java/biome/DistributionTest.java similarity index 100% rename from common/src/test/java/biome/DistributionTest.java rename to common/implementation/src/test/java/biome/DistributionTest.java diff --git a/common/src/test/java/biome/ImageTest.java b/common/implementation/src/test/java/biome/ImageTest.java similarity index 100% rename from common/src/test/java/biome/ImageTest.java rename to common/implementation/src/test/java/biome/ImageTest.java diff --git a/common/src/test/java/command/CommandTest.java b/common/implementation/src/test/java/command/CommandTest.java similarity index 100% rename from common/src/test/java/command/CommandTest.java rename to common/implementation/src/test/java/command/CommandTest.java diff --git a/common/src/test/java/noise/ColorConfigTemplate.java b/common/implementation/src/test/java/noise/ColorConfigTemplate.java similarity index 100% rename from common/src/test/java/noise/ColorConfigTemplate.java rename to common/implementation/src/test/java/noise/ColorConfigTemplate.java diff --git a/common/src/test/java/noise/NoiseConfigTemplate.java b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java similarity index 100% rename from common/src/test/java/noise/NoiseConfigTemplate.java rename to common/implementation/src/test/java/noise/NoiseConfigTemplate.java diff --git a/common/src/test/java/noise/NoiseTool.java b/common/implementation/src/test/java/noise/NoiseTool.java similarity index 100% rename from common/src/test/java/noise/NoiseTool.java rename to common/implementation/src/test/java/noise/NoiseTool.java diff --git a/common/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java similarity index 100% rename from common/src/test/java/profiler/ProfilerTest.java rename to common/implementation/src/test/java/profiler/ProfilerTest.java diff --git a/common/src/test/java/structure/LookaheadTest.java b/common/implementation/src/test/java/structure/LookaheadTest.java similarity index 100% rename from common/src/test/java/structure/LookaheadTest.java rename to common/implementation/src/test/java/structure/LookaheadTest.java diff --git a/common/src/test/java/structure/ParserTest.java b/common/implementation/src/test/java/structure/ParserTest.java similarity index 100% rename from common/src/test/java/structure/ParserTest.java rename to common/implementation/src/test/java/structure/ParserTest.java diff --git a/common/src/test/resources/config.yml b/common/implementation/src/test/resources/config.yml similarity index 100% rename from common/src/test/resources/config.yml rename to common/implementation/src/test/resources/config.yml diff --git a/common/src/test/resources/map.jpg b/common/implementation/src/test/resources/map.jpg similarity index 100% rename from common/src/test/resources/map.jpg rename to common/implementation/src/test/resources/map.jpg diff --git a/common/src/test/resources/test.tesf b/common/implementation/src/test/resources/test.tesf similarity index 100% rename from common/src/test/resources/test.tesf rename to common/implementation/src/test/resources/test.tesf diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 4c7c3648f..dfd5f4f79 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -23,7 +23,7 @@ val paperURL = "https://papermc.io/api/v1/paper/%version%/latest/download/" val purpurURL = "https://ci.pl3x.net/job/Purpur/lastSuccessfulBuild/artifact/final/purpurclip.jar" dependencies { - "shadedApi"(project(":common")) + "shadedApi"(project(":common:implementation")) "compileOnly"("io.papermc.paper:paper-api:1.17-R0.1-SNAPSHOT") "shadedImplementation"("io.papermc:paperlib:1.0.5") diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 0625cd483..a59a0c85c 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -21,7 +21,7 @@ tasks.named("shadowJar") { group = "com.dfsek.terra.fabric" dependencies { - "shadedApi"(project(":common")) + "shadedApi"(project(":common:implementation")) "minecraft"("com.mojang:minecraft:1.17") "mappings"("net.fabricmc:yarn:1.17+build.1:v2") diff --git a/platforms/region/build.gradle.kts b/platforms/region/build.gradle.kts index 3d467c794..6c3a4516e 100644 --- a/platforms/region/build.gradle.kts +++ b/platforms/region/build.gradle.kts @@ -15,7 +15,7 @@ repositories { } dependencies { - "shadedApi"(project(":common")) + "shadedApi"(project(":common:implementation")) "shadedImplementation"("com.github.Querz:NBT:5.2") // Standalone NBT API "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 9880b8c93..b38e710b0 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -16,7 +16,7 @@ repositories { dependencies { "compileOnly"("org.spongepowered:spongeapi:7.2.0") - "shadedApi"(project(":common")) + "shadedApi"(project(":common:implementation")) "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1") } diff --git a/settings.gradle.kts b/settings.gradle.kts index 8cd013d8d..f8e46baae 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,7 +8,8 @@ */ rootProject.name = "Terra" -include("common") +include("common:api") +include("common:implementation") include("platforms:bukkit") include("platforms:fabric") include("platforms:region") From 7495a6b4a15703da6f64821ba395ad74322db8a2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 09:42:17 -0700 Subject: [PATCH 0038/1529] begin refactor --- .../java/com/dfsek/terra/api}/Handle.java | 2 +- .../com/dfsek/terra/api/LoaderRegistrar.java | 0 .../java/com/dfsek/terra/api/TerraPlugin.java | 6 +- .../dfsek/terra/api/addon}/TerraAddon.java | 8 +- .../terra/api/addon}/annotations/Addon.java | 2 +- .../terra/api/addon}/annotations/Author.java | 2 +- .../terra/api/addon}/annotations/Depends.java | 2 +- .../terra/api/addon}/annotations/Version.java | 2 +- .../java/com/dfsek/terra/api/block/Axis.java | 5 + .../com/dfsek/terra/api}/block/Block.java | 8 +- .../com/dfsek/terra/api}/block/BlockData.java | 4 +- .../com/dfsek/terra/api}/block/BlockFace.java | 7 +- .../com/dfsek/terra/api}/block/BlockType.java | 4 +- .../api}/block/data/AnaloguePowerable.java | 4 +- .../dfsek/terra/api}/block/data/Bisected.java | 4 +- .../terra/api/block/data/Directional.java | 10 ++ .../terra/api}/block/data/MultipleFacing.java | 6 +- .../terra/api}/block/data/Orientable.java | 6 +- .../com/dfsek/terra/api}/block/data/Rail.java | 4 +- .../terra/api}/block/data/RedstoneWire.java | 6 +- .../dfsek/terra/api/block/data/Rotatable.java | 10 ++ .../com/dfsek/terra/api}/block/data/Slab.java | 2 +- .../dfsek/terra/api}/block/data/Stairs.java | 2 +- .../com/dfsek/terra/api}/block/data/Wall.java | 6 +- .../terra/api}/block/data/Waterlogged.java | 4 +- .../api/block/data/properties/Property.java | 5 + .../terra/api}/block/state/BlockState.java | 8 +- .../terra/api/block/state/Container.java | 6 + .../terra/api}/block/state/MobSpawner.java | 4 +- .../terra/api}/block/state/SerialState.java | 2 +- .../dfsek/terra/api}/block/state/Sign.java | 2 +- .../terra/api/entity}/CommandSender.java | 4 +- .../com/dfsek/terra/api/entity/Entity.java | 13 ++ .../dfsek/terra/api/entity/EntityType.java | 6 + .../com/dfsek/terra/api/entity/Player.java | 4 + .../dfsek/terra/api/event/EventListener.java | 0 .../dfsek/terra/api/event/EventManager.java | 2 +- .../terra/api/event/annotations/Global.java | 0 .../terra/api/event/annotations/Priority.java | 0 .../api/event/events/AbstractCancellable.java | 0 .../terra/api/event/events/Cancellable.java | 0 .../dfsek/terra/api/event/events/Event.java | 0 .../terra/api/event/events/PackEvent.java | 0 .../events/config/ConfigPackLoadEvent.java | 0 .../config/ConfigPackPostLoadEvent.java | 0 .../events/config/ConfigPackPreLoadEvent.java | 0 .../events/world/TerraWorldLoadEvent.java | 0 .../world/generation/EntitySpawnEvent.java | 2 +- .../world/generation/LootPopulateEvent.java | 4 +- .../dfsek/terra/api}/handle/ItemHandle.java | 6 +- .../dfsek/terra/api}/handle/WorldHandle.java | 10 +- .../dfsek/terra/api/injection/Injector.java | 38 ++++ .../api/injection/annotations/Inject.java | 0 .../exception/InjectionException.java | 0 .../api/inventory/BlockInventoryHolder.java | 7 + .../dfsek/terra/api}/inventory/Inventory.java | 4 +- .../terra/api/inventory/InventoryHolder.java | 7 + .../com/dfsek/terra/api}/inventory/Item.java | 4 +- .../dfsek/terra/api}/inventory/ItemStack.java | 8 +- .../terra/api}/inventory/item/Damageable.java | 4 +- .../api}/inventory/item/Enchantment.java | 6 +- .../terra/api}/inventory/item/ItemMeta.java | 4 +- .../dfsek/terra/api}/noise/NoiseSampler.java | 2 +- .../noise/normalizer/ClampNormalizer.java | 4 +- .../noise/normalizer/LinearNormalizer.java | 4 +- .../noise/normalizer/NormalNormalizer.java | 4 +- .../api}/noise/normalizer/Normalizer.java | 4 +- .../noise/samplers/DomainWarpedSampler.java | 4 +- .../noise/samplers/ExpressionSampler.java | 4 +- .../api}/noise/samplers/ImageSampler.java | 4 +- .../api}/noise/samplers/KernelSampler.java | 4 +- .../noise/samplers/noise/CellularSampler.java | 6 +- .../noise/samplers/noise/ConstantSampler.java | 2 +- .../samplers/noise/ExpressionFunction.java | 2 +- .../samplers/noise/GaborNoiseSampler.java | 4 +- .../noise/samplers/noise/NoiseFunction.java | 4 +- .../noise/fractal/BrownianMotionSampler.java | 4 +- .../noise/fractal/FractalNoiseFunction.java | 6 +- .../noise/fractal/PingPongSampler.java | 4 +- .../noise/fractal/RidgedFractalSampler.java | 4 +- .../noise/random/GaussianNoiseSampler.java | 4 +- .../noise/random/WhiteNoiseSampler.java | 4 +- .../noise/simplex/OpenSimplex2SSampler.java | 2 +- .../noise/simplex/OpenSimplex2Sampler.java | 2 +- .../samplers/noise/simplex/PerlinSampler.java | 2 +- .../noise/simplex/SimplexSampler.java | 2 +- .../noise/simplex/SimplexStyleSampler.java | 4 +- .../noise/value/ValueCubicSampler.java | 2 +- .../samplers/noise/value/ValueSampler.java | 2 +- .../samplers/noise/value/ValueStyleNoise.java | 4 +- .../terra/api/registry/CheckedRegistry.java | 24 +++ .../registry}/DuplicateEntryException.java | 2 +- .../terra/api/registry/OpenRegistry.java | 25 +++ .../dfsek/terra/api/registry/Registry.java | 0 .../dfsek/terra/api/transform/Transform.java | 2 + .../terra/api/transform/Transformer.java | 11 ++ .../dfsek/terra/api/transform/Validator.java | 2 + .../exception}/AttemptsFailedException.java | 2 +- .../exception}/TransformException.java | 2 +- .../com/dfsek/terra/api/util}/MathUtil.java | 2 +- .../terra/api/util/ProbabilityCollection.java | 26 +++ .../com/dfsek/terra/api}/vector/Location.java | 11 +- .../com/dfsek/terra/api/vector/Vector2.java | 99 +++++++++++ .../com/dfsek/terra/api/vector/Vector3.java | 165 ++++++++++++++++++ .../com/dfsek/terra/api}/world/BiomeGrid.java | 4 +- .../com/dfsek/terra/api}/world/Chunk.java | 4 +- .../dfsek/terra/api}/world/ChunkAccess.java | 6 +- .../java/com/dfsek/terra/api}/world/Tree.java | 4 +- .../com/dfsek/terra/api}/world/World.java | 19 +- .../dfsek/terra/api/world/biome/Biome.java | 6 + .../terra/api/world/biome/Generator.java | 2 +- .../terra/api/world/biome/TerraBiome.java | 4 +- .../biome/generation}/BiomeProvider.java | 9 +- .../generation/pipeline}/BiomeExpander.java | 2 +- .../generation}/pipeline/BiomeHolder.java | 5 +- .../generation/pipeline}/BiomeMutator.java | 4 +- .../generation/pipeline}/BiomeSource.java | 2 +- .../biome/generation/pipeline/Stage.java | 10 ++ .../api/world/generator/BlockPopulator.java | 11 ++ .../terra/api}/world/generator/ChunkData.java | 4 +- .../api/world/generator/ChunkGenerator.java | 7 + .../world/generator/GeneratorWrapper.java | 4 +- .../dfsek/terra/addon/AddonClassLoader.java | 4 +- .../com/dfsek/terra/addon/PreLoadAddon.java | 6 +- .../terra/api/command/CommandManager.java | 2 +- .../terra/api/command/CommandTemplate.java | 2 +- .../terra/api/command/ExecutionState.java | 2 +- .../api/command/TerraCommandManager.java | 11 +- .../terra/api/command/arg/ArgumentParser.java | 2 +- .../api/command/arg/DoubleArgumentParser.java | 2 +- .../command/arg/IntegerArgumentParser.java | 2 +- .../api/command/arg/StringArgumentParser.java | 2 +- .../api/command/tab/NothingCompleter.java | 2 +- .../terra/api/command/tab/TabCompleter.java | 2 +- ...ventManager.java => EventManagerImpl.java} | 6 +- .../InjectorImpl.java} | 40 +---- .../com/dfsek/terra/api/math/GridSpawn.java | 12 +- .../math/paralithic/noise/NoiseFunction2.java | 2 +- .../math/paralithic/noise/NoiseFunction3.java | 2 +- .../terra/api/math/pixel/Distribution.java | 7 - .../dfsek/terra/api/math/pixel/Polygon.java | 10 -- .../dfsek/terra/api/math/pixel/Rectangle.java | 35 ---- .../dfsek/terra/api/math/voxel/Cylinder.java | 10 -- .../terra/api/math/voxel/DeformedSphere.java | 19 -- .../dfsek/terra/api/math/voxel/Sphere.java | 18 -- .../com/dfsek/terra/api/math/voxel/Tube.java | 15 -- .../terra/api/math/voxel/VoxelGeometry.java | 27 --- .../dfsek/terra/api/platform/block/Axis.java | 5 - .../api/platform/block/data/Directional.java | 10 -- .../api/platform/block/data/Rotatable.java | 10 -- .../block/data/properties/Property.java | 5 - .../api/platform/block/state/Container.java | 6 - .../terra/api/platform/entity/Entity.java | 14 -- .../terra/api/platform/entity/EntityType.java | 6 - .../terra/api/platform/entity/Player.java | 4 - .../inventory/BlockInventoryHolder.java | 7 - .../platform/inventory/InventoryHolder.java | 7 - .../terra/api/platform/package-info.java | 6 - .../dfsek/terra/api/platform/world/Biome.java | 6 - .../world/generator/BlockPopulator.java | 11 -- .../world/generator/ChunkGenerator.java | 7 - .../terra/api/structures/loot/Entry.java | 4 +- .../terra/api/structures/loot/LootTable.java | 4 +- .../dfsek/terra/api/structures/loot/Pool.java | 8 +- .../loot/functions/AmountFunction.java | 2 +- .../loot/functions/DamageFunction.java | 6 +- .../loot/functions/EnchantFunction.java | 6 +- .../loot/functions/LootFunction.java | 2 +- .../structures/script/StructureScript.java | 7 +- .../functions/AbstractBlockFunction.java | 11 +- .../script/functions/BiomeFunction.java | 11 +- .../script/functions/BlockFunction.java | 2 +- .../script/functions/CheckBlockFunction.java | 9 +- .../script/functions/CheckFunction.java | 15 +- .../functions/DynamicBlockFunction.java | 2 +- .../script/functions/EntityFunction.java | 11 +- .../script/functions/GetMarkFunction.java | 9 +- .../script/functions/LootFunction.java | 9 +- .../script/functions/PullFunction.java | 11 +- .../script/functions/SetMarkFunction.java | 9 +- .../script/functions/StateFunction.java | 9 +- .../script/functions/StructureFunction.java | 10 +- .../structures/structure/RotationUtil.java | 22 +-- .../structures/structure/buffer/Buffer.java | 2 +- .../api/structures/structure/buffer/Cell.java | 2 +- .../structure/buffer/DirectBuffer.java | 2 +- .../structure/buffer/IntermediateBuffer.java | 4 +- .../structure/buffer/StructureBuffer.java | 4 +- .../structure/buffer/items/BufferedBlock.java | 8 +- .../buffer/items/BufferedEntity.java | 6 +- .../structure/buffer/items/BufferedItem.java | 4 +- .../buffer/items/BufferedLootApplication.java | 8 +- .../buffer/items/BufferedPulledBlock.java | 8 +- .../items/BufferedStateManipulator.java | 4 +- .../terra/api/transform/MapTransform.java | 2 + ...{Transformer.java => TransformerImpl.java} | 18 +- .../api/util/collections/MaterialSet.java | 4 +- ...on.java => ProbabilityCollectionImpl.java} | 23 ++- .../terra/api/util/seeded/NoiseSeeded.java | 2 +- .../terra/api/util/seeded/SourceSeeded.java | 2 +- .../terra/api/util/seeded/StageSeeded.java | 2 +- .../terra/api/util/world/PaletteUtil.java | 2 +- .../terra/api/util/world/PopulationUtil.java | 4 +- .../api/world/biome/UserDefinedBiome.java | 11 +- ...aBiomeHolder.java => BiomeHolderImpl.java} | 17 +- ...mePipeline.java => BiomePipelineImpl.java} | 17 +- .../pipeline/expand/FractalExpander.java | 5 +- .../pipeline/mutator/BorderListMutator.java | 11 +- .../biome/pipeline/mutator/BorderMutator.java | 9 +- .../pipeline/mutator/ReplaceListMutator.java | 11 +- .../pipeline/mutator/ReplaceMutator.java | 9 +- .../biome/pipeline/mutator/SmoothMutator.java | 5 +- .../biome/pipeline/source/RandomSource.java | 9 +- .../biome/pipeline/stages/ExpanderStage.java | 5 +- .../biome/pipeline/stages/MutatorStage.java | 5 +- .../world/biome/pipeline/stages/Stage.java | 10 -- .../biome/provider/ImageBiomeProvider.java | 2 +- .../biome/provider/SingleBiomeProvider.java | 1 + .../biome/provider/StandardBiomeProvider.java | 16 +- .../dfsek/terra/api/world/carving/Carver.java | 4 +- .../dfsek/terra/api/world/carving/Worm.java | 11 +- .../dfsek/terra/api/world/flora/Flora.java | 6 +- .../world/generation/TerraBlockPopulator.java | 4 +- .../world/generation/TerraChunkGenerator.java | 8 +- .../api/world/locate/AsyncBiomeFinder.java | 6 +- .../api/world/locate/AsyncFeatureFinder.java | 11 +- .../world/locate/AsyncStructureFinder.java | 8 +- .../terra/api/world/palette/NoisePalette.java | 4 +- .../terra/api/world/palette/Palette.java | 14 +- .../api/world/palette/SinglePalette.java | 2 +- .../palette/holder/PaletteLayerHolder.java | 12 +- .../com/dfsek/terra/carving/CarverCache.java | 10 +- .../dfsek/terra/carving/CarverPalette.java | 20 +-- .../terra/carving/UserDefinedCarver.java | 7 +- .../dfsek/terra/commands/AddonsCommand.java | 2 +- .../com/dfsek/terra/commands/CommandUtil.java | 2 - .../dfsek/terra/commands/GetBlockCommand.java | 4 +- .../dfsek/terra/commands/PacksCommand.java | 2 +- .../dfsek/terra/commands/ReloadCommand.java | 2 +- .../dfsek/terra/commands/VersionCommand.java | 2 +- .../terra/commands/biome/BiomeCommand.java | 6 +- .../commands/biome/BiomeInfoCommand.java | 2 +- .../commands/biome/BiomeLocateCommand.java | 10 +- .../biome/arg/BiomeArgumentParser.java | 4 +- .../commands/biome/tab/BiomeTabCompleter.java | 4 +- .../geometry/DeformedSphereCommand.java | 65 ------- .../commands/geometry/GeometryCommand.java | 39 ----- .../commands/geometry/SphereCommand.java | 44 ----- .../terra/commands/geometry/TubeCommand.java | 49 ------ .../commands/profiler/ProfileCommand.java | 2 +- .../profiler/ProfileQueryCommand.java | 2 +- .../profiler/ProfileResetCommand.java | 2 +- .../profiler/ProfileStartCommand.java | 2 +- .../commands/profiler/ProfileStopCommand.java | 2 +- .../commands/structure/SpawnCommand.java | 8 +- .../commands/structure/StructureCommand.java | 2 +- .../structure/StructureExportCommand.java | 14 +- .../structure/StructureLoadCommand.java | 4 +- .../structure/StructureLocateCommand.java | 10 +- .../argument/ScriptArgumentParser.java | 4 +- .../argument/StructureArgumentParser.java | 4 +- .../completer/RotationCompleter.java | 2 +- .../structure/completer/ScriptCompleter.java | 4 +- .../completer/StructureCompleter.java | 4 +- .../dfsek/terra/config/GenericLoaders.java | 16 +- .../terra/config/builder/BiomeBuilder.java | 6 +- .../builder/UserDefinedBiomeBuilder.java | 12 +- .../dfsek/terra/config/dummy/DummyWorld.java | 16 +- .../terra/config/factories/CarverFactory.java | 2 +- .../terra/config/factories/FloraFactory.java | 2 +- .../terra/config/factories/OreFactory.java | 2 +- .../terra/config/factories/TreeFactory.java | 2 +- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../com/dfsek/terra/config/lang/Language.java | 2 +- .../com/dfsek/terra/config/lang/Message.java | 2 +- .../terra/config/lang/MultiLineMessage.java | 2 +- .../terra/config/lang/SingleLineMessage.java | 2 +- .../config/loaders/MaterialSetLoader.java | 2 +- .../loaders/ProbabilityCollectionLoader.java | 10 +- .../com/dfsek/terra/config/loaders/Types.java | 16 +- .../loaders/config/FloraLayerLoader.java | 6 +- .../loaders/config/TreeLayerLoader.java | 8 +- .../biome/BiomeProviderBuilderLoader.java | 2 +- .../config/biome/SourceBuilderLoader.java | 7 +- .../provider/BiomePipelineTemplate.java | 8 +- .../provider/BiomeProviderTemplate.java | 6 +- .../provider/ImageProviderTemplate.java | 2 +- .../provider/SingleBiomeProviderTemplate.java | 2 +- .../templates/source/NoiseSourceTemplate.java | 6 +- .../templates/source/SourceTemplate.java | 1 - .../biome/templates/stage/StageTemplate.java | 2 +- .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListMutatorTemplate.java | 10 +- .../stage/mutator/BorderMutatorTemplate.java | 6 +- .../stage/mutator/MutatorStageTemplate.java | 4 +- .../mutator/ReplaceListMutatorTemplate.java | 10 +- .../stage/mutator/ReplaceMutatorTemplate.java | 6 +- .../stage/mutator/SmoothMutatorTemplate.java | 2 +- .../sampler/templates/DomainWarpTemplate.java | 4 +- .../templates/ImageSamplerTemplate.java | 4 +- .../sampler/templates/KernelTemplate.java | 4 +- .../sampler/templates/SamplerTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 6 +- .../noise/ConstantNoiseTemplate.java | 4 +- .../noise/ExpressionFunctionTemplate.java | 5 +- .../templates/noise/GaborNoiseTemplate.java | 4 +- .../templates/noise/NoiseTemplate.java | 2 +- .../templates/noise/SimpleNoiseTemplate.java | 4 +- .../noise/fractal/BrownianMotionTemplate.java | 4 +- .../noise/fractal/FractalTemplate.java | 2 +- .../noise/fractal/PingPongTemplate.java | 4 +- .../noise/fractal/RidgedFractalTemplate.java | 4 +- .../normalizer/ClampNormalizerTemplate.java | 6 +- .../normalizer/LinearNormalizerTemplate.java | 4 +- .../normalizer/NormalNormalizerTemplate.java | 4 +- .../normalizer/NormalizerTemplate.java | 2 +- .../loaders/palette/CarverPaletteLoader.java | 6 +- .../loaders/palette/PaletteLayerLoader.java | 8 +- .../dfsek/terra/config/pack/ConfigPack.java | 3 +- .../config/pack/ConfigPackPostTemplate.java | 2 +- .../terra/config/pack/ConfigPackTemplate.java | 2 +- .../dfsek/terra/config/pack/WorldConfig.java | 2 +- .../terra/config/templates/BiomeTemplate.java | 14 +- .../config/templates/CarverTemplate.java | 2 +- .../terra/config/templates/OreTemplate.java | 4 +- .../config/templates/PaletteTemplate.java | 4 +- .../config/templates/StructureTemplate.java | 6 +- .../terra/config/templates/TreeTemplate.java | 6 +- .../CheckedRegistryImpl.java} | 28 +-- .../LockedRegistryImpl.java} | 7 +- ...penRegistry.java => OpenRegistryImpl.java} | 31 +--- .../registry/config/ConfigTypeRegistry.java | 2 +- .../terra/registry/config/FloraRegistry.java | 2 +- .../terra/registry/config/LootRegistry.java | 4 +- .../terra/registry/config/NoiseRegistry.java | 16 +- .../terra/registry/config/TreeRegistry.java | 2 +- .../terra/registry/master/AddonRegistry.java | 15 +- .../Vector2.java => vector/Vector2Impl.java} | 96 +++------- .../Vector3.java => vector/Vector3Impl.java} | 161 +++++------------ .../java/com/dfsek/terra/world/Carver.java | 4 +- .../com/dfsek/terra/world/TerraWorld.java | 10 +- .../terra/world/carving/NoiseCarver.java | 6 +- .../world/generation/WorldGenerator.java | 2 +- .../generators/DefaultChunkGenerator2D.java | 10 +- .../generators/DefaultChunkGenerator3D.java | 31 ++-- .../world/generation/math/SamplerCache.java | 7 +- .../interpolation/ChunkInterpolator2D.java | 9 +- .../interpolation/ChunkInterpolator3D.java | 9 +- .../interpolation/ElevationInterpolator.java | 4 +- .../generation/math/samplers/Sampler2D.java | 4 +- .../generation/math/samplers/Sampler3D.java | 4 +- .../terra/world/population/CavePopulator.java | 14 +- .../world/population/FloraPopulator.java | 11 +- .../terra/world/population/OrePopulator.java | 10 +- .../world/population/StructurePopulator.java | 10 +- .../terra/world/population/TreePopulator.java | 10 +- .../population/items/PlaceableLayer.java | 14 +- .../population/items/TerraStructure.java | 8 +- .../population/items/flora/BlockFlora.java | 10 +- .../population/items/flora/ConstantFlora.java | 10 +- .../population/items/flora/FloraLayer.java | 10 +- .../population/items/flora/TerraFlora.java | 18 +- .../items/ores/DeformedSphereOre.java | 17 +- .../world/population/items/ores/Ore.java | 10 +- .../population/items/ores/VanillaOre.java | 12 +- .../population/items/tree/TerraTree.java | 10 +- .../population/items/tree/TreeLayer.java | 16 +- .../src/test/java/command/CommandTest.java | 2 +- .../test/java/noise/ColorConfigTemplate.java | 6 +- .../src/test/java/noise/NoiseTool.java | 8 +- .../terra/bukkit/BukkitCommandSender.java | 2 +- .../com/dfsek/terra/bukkit/BukkitEntity.java | 6 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 6 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 22 +-- .../terra/bukkit/command/FixChunkCommand.java | 4 +- .../terra/bukkit/command/SaveDataCommand.java | 2 +- .../generator/BukkitChunkGenerator.java | 6 +- .../BukkitChunkGeneratorWrapper.java | 13 +- .../bukkit/handles/BukkitItemHandle.java | 6 +- .../bukkit/handles/BukkitWorldHandle.java | 10 +- .../bukkit/listeners/CommonListener.java | 10 +- .../terra/bukkit/listeners/TerraListener.java | 4 +- .../bukkit/population/ChunkCoordinate.java | 2 +- .../bukkit/population/PopulationManager.java | 4 +- .../terra/bukkit/world/BukkitAdapter.java | 47 ++--- .../dfsek/terra/bukkit/world/BukkitBiome.java | 2 +- .../terra/bukkit/world/BukkitBiomeGrid.java | 4 +- .../dfsek/terra/bukkit/world/BukkitChunk.java | 8 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 6 +- .../dfsek/terra/bukkit/world/BukkitWorld.java | 14 +- .../terra/bukkit/world/block/BukkitBlock.java | 12 +- .../world/block/BukkitBlockTypeAndItem.java | 8 +- .../block/data/BukkitAnaloguePowerable.java | 2 +- .../world/block/data/BukkitBlockData.java | 4 +- .../world/block/data/BukkitDirectional.java | 4 +- .../block/data/BukkitMultipleFacing.java | 4 +- .../world/block/data/BukkitOrientable.java | 4 +- .../bukkit/world/block/data/BukkitRail.java | 2 +- .../world/block/data/BukkitRedstoneWire.java | 4 +- .../world/block/data/BukkitRotatable.java | 4 +- .../bukkit/world/block/data/BukkitSlab.java | 2 +- .../bukkit/world/block/data/BukkitStairs.java | 4 +- .../bukkit/world/block/data/BukkitWall.java | 14 +- .../world/block/data/BukkitWaterlogged.java | 2 +- .../world/block/state/BukkitBlockState.java | 6 +- .../world/block/state/BukkitContainer.java | 4 +- .../world/block/state/BukkitMobSpawner.java | 6 +- .../bukkit/world/block/state/BukkitSign.java | 4 +- .../bukkit/world/entity/BukkitEntityType.java | 2 +- .../world/inventory/BukkitInventory.java | 4 +- .../world/inventory/BukkitItemMeta.java | 4 +- .../world/inventory/BukkitItemStack.java | 6 +- .../inventory/meta/BukkitDamageable.java | 2 +- .../inventory/meta/BukkitEnchantment.java | 4 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 36 ++-- .../dfsek/terra/fabric/block/FabricBlock.java | 14 +- .../terra/fabric/block/FabricBlockData.java | 4 +- .../block/data/FabricAnaloguePowerable.java | 2 +- .../fabric/block/data/FabricDirectional.java | 4 +- .../block/data/FabricMultipleFacing.java | 4 +- .../fabric/block/data/FabricOrientable.java | 4 +- .../fabric/block/data/FabricRotatable.java | 4 +- .../terra/fabric/block/data/FabricSlab.java | 2 +- .../terra/fabric/block/data/FabricStairs.java | 4 +- .../fabric/block/data/FabricWaterlogged.java | 2 +- .../FabricChunkGeneratorWrapper.java | 8 +- .../fabric/generation/PopulatorFeature.java | 4 +- .../fabric/generation/TerraBiomeSource.java | 2 +- .../terra/fabric/handle/FabricItemHandle.java | 6 +- .../fabric/handle/FabricWorldHandle.java | 8 +- .../fabric/mixin/CommandManagerMixin.java | 4 +- .../terra/fabric/mixin/ServerWorldMixin.java | 2 +- .../mixin/implementations/BiomeMixin.java | 2 +- .../implementations/ChunkGeneratorMixin.java | 2 +- .../ConfiguredFeatureMixin.java | 4 +- .../block/BlockEntityMixin.java | 6 +- .../implementations/block/BlockMixin.java | 4 +- .../LootableContainerBlockEntityMixin.java | 4 +- .../state/MobSpawnerBlockEntityMixin.java | 7 +- .../block/state/SignBlockEntityMixin.java | 4 +- .../chunk/ChunkRegionMixin.java | 8 +- .../chunk/WorldChunkMixin.java | 8 +- .../chunk/data/ProtoChunkMixin.java | 4 +- .../implementations/entity/EntityMixin.java | 6 +- .../entity/EntityTypeMixin.java | 2 +- .../entity/PlayerEntityMixin.java | 2 +- .../entity/ServerCommandSourceMixin.java | 2 +- .../LockableContainerBlockEntityMixin.java | 4 +- .../inventory/item/ItemMixin.java | 4 +- .../inventory/item/ItemStackMixin.java | 6 +- .../inventory/meta/EnchantmentMixin.java | 6 +- .../meta/ItemStackDamageableMixin.java | 2 +- .../inventory/meta/ItemStackMetaMixin.java | 4 +- .../world/ChunkRegionMixin.java | 16 +- .../world/ServerWorldMixin.java | 17 +- .../terra/fabric/util/FabricAdapter.java | 23 +-- .../dfsek/terra/fabric/util/ProtoBiome.java | 2 +- .../terra/fabric/util/WorldEditUtil.java | 4 +- .../com/dfsek/terra/forge/ForgeAdapter.java | 10 +- .../dfsek/terra/forge/TerraForgePlugin.java | 18 +- .../dfsek/terra/forge/block/ForgeBlock.java | 12 +- .../terra/forge/block/ForgeBlockData.java | 4 +- .../block/data/ForgeAnaloguePowerable.java | 2 +- .../forge/block/data/ForgeDirectional.java | 4 +- .../forge/block/data/ForgeEnumAdapter.java | 10 +- .../forge/block/data/ForgeMultipleFacing.java | 4 +- .../forge/block/data/ForgeOrientable.java | 4 +- .../forge/block/data/ForgeRotatable.java | 4 +- .../terra/forge/block/data/ForgeSlab.java | 2 +- .../terra/forge/block/data/ForgeStairs.java | 4 +- .../forge/block/data/ForgeWaterlogged.java | 2 +- .../ForgeChunkGeneratorWrapper.java | 6 +- .../forge/generation/PopulatorFeature.java | 4 +- .../terra/forge/handle/ForgeItemHandle.java | 6 +- .../terra/forge/handle/ForgeWorldHandle.java | 4 +- .../terra/forge/listener/ForgeListener.java | 2 +- .../terra/forge/mixin/ServerWorldMixin.java | 2 +- .../mixin/implementations/BiomeMixin.java | 2 +- .../implementations/ChunkGeneratorMixin.java | 2 +- .../ConfiguredFeatureMixin.java | 2 +- .../implementations/block/BlockMixin.java | 4 +- .../block/TileEntityMixin.java | 6 +- .../state/LockableLootTileEntityMixin.java | 4 +- .../state/MobSpawnerTileEntityMixin.java | 6 +- .../block/state/SignTileEntityMixin.java | 4 +- .../implementations/chunk/ChunkMixin.java | 8 +- .../chunk/WorldGenRegionMixin.java | 8 +- .../chunk/data/ChunkPrimerMixin.java | 4 +- .../implementations/entity/EntityMixin.java | 4 +- .../entity/EntityTypeMixin.java | 2 +- .../entity/PlayerEntityMixin.java | 2 +- .../inventory/LockableTileEntityMixin.java | 4 +- .../inventory/item/ItemMixin.java | 4 +- .../inventory/item/ItemStackMixin.java | 6 +- .../inventory/meta/EnchantmentMixin.java | 6 +- .../meta/ItemStackDamageableMixin.java | 2 +- .../inventory/meta/ItemStackMetaMixin.java | 4 +- .../world/ServerWorldMixin.java | 14 +- .../world/WorldGenRegionMixin.java | 14 +- .../java/com/dfsek/terra/DirectUtils.java | 2 +- .../com/dfsek/terra/StandalonePlugin.java | 16 +- .../java/com/dfsek/terra/platform/Data.java | 4 +- .../com/dfsek/terra/platform/DirectBlock.java | 14 +- .../terra/platform/DirectBlockState.java | 6 +- .../dfsek/terra/platform/DirectChunkData.java | 14 +- .../com/dfsek/terra/platform/DirectWorld.java | 18 +- .../com/dfsek/terra/platform/GenWrapper.java | 2 +- .../com/dfsek/terra/platform/RawBiome.java | 2 +- .../com/dfsek/terra/platform/RawTree.java | 4 +- .../dfsek/terra/platform/RawWorldHandle.java | 6 +- .../com/dfsek/terra/region/Generator.java | 3 +- .../com/dfsek/terra/sponge/SpongeAdapter.java | 2 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 12 +- .../terra/sponge/world/SpongeWorldHandle.java | 6 +- .../world/block/data/SpongeBlockData.java | 4 +- 515 files changed, 1917 insertions(+), 2018 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/Handle.java (83%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/TerraPlugin.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/addons => api/src/main/java/com/dfsek/terra/api/addon}/TerraAddon.java (86%) rename common/{implementation/src/main/java/com/dfsek/terra/api/addons => api/src/main/java/com/dfsek/terra/api/addon}/annotations/Addon.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/addons => api/src/main/java/com/dfsek/terra/api/addon}/annotations/Author.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/addons => api/src/main/java/com/dfsek/terra/api/addon}/annotations/Depends.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/addons => api/src/main/java/com/dfsek/terra/api/addon}/annotations/Version.java (90%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/Axis.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/Block.java (72%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/BlockData.java (72%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/BlockFace.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/BlockType.java (59%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/AnaloguePowerable.java (57%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Bisected.java (77%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/MultipleFacing.java (60%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Orientable.java (50%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Rail.java (77%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/RedstoneWire.java (64%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Slab.java (75%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Stairs.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Wall.java (61%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/data/Waterlogged.java (55%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/state/BlockState.java (58%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/state/MobSpawner.java (86%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/state/SerialState.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/block/state/Sign.java (84%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api/entity}/CommandSender.java (55%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/entity/Player.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/EventListener.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/EventManager.java (93%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/annotations/Global.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/Event.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java (95%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/handle/ItemHandle.java (52%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/handle/WorldHandle.java (69%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java (100%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/Inventory.java (61%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/Item.java (61%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/ItemStack.java (56%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/item/Damageable.java (57%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/item/Enchantment.java (55%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/inventory/item/ItemMeta.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/NoiseSampler.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/normalizer/ClampNormalizer.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/normalizer/LinearNormalizer.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/normalizer/NormalNormalizer.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/normalizer/Normalizer.java (88%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/DomainWarpedSampler.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/ExpressionSampler.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/ImageSampler.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/KernelSampler.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/CellularSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/ConstantSampler.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/ExpressionFunction.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/GaborNoiseSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/NoiseFunction.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/fractal/BrownianMotionSampler.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/fractal/FractalNoiseFunction.java (86%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/fractal/PingPongSampler.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/fractal/RidgedFractalSampler.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/random/GaussianNoiseSampler.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/random/WhiteNoiseSampler.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/simplex/OpenSimplex2SSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/simplex/OpenSimplex2Sampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/simplex/PerlinSampler.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/simplex/SimplexSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/simplex/SimplexStyleSampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/value/ValueCubicSampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/value/ValueSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/noise/samplers/noise/value/ValueStyleNoise.java (82%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java rename common/{implementation/src/main/java/com/dfsek/terra/registry/exception => api/src/main/java/com/dfsek/terra/api/registry}/DuplicateEntryException.java (89%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/registry/Registry.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/transform/Transform.java (75%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/transform/Transformer.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/transform/Validator.java (77%) rename common/{implementation/src/main/java/com/dfsek/terra/api/transform => api/src/main/java/com/dfsek/terra/api/transform/exception}/AttemptsFailedException.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/transform => api/src/main/java/com/dfsek/terra/api/transform/exception}/TransformException.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api/util}/MathUtil.java (99%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java rename common/{implementation/src/main/java/com/dfsek/terra/api/math => api/src/main/java/com/dfsek/terra/api}/vector/Location.java (95%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/BiomeGrid.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/Chunk.java (61%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/ChunkAccess.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/Tree.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/World.java (64%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/biome/Biome.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/world/biome/Generator.java (94%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java (77%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/provider => api/src/main/java/com/dfsek/terra/api/world/biome/generation}/BiomeProvider.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand => api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline}/BiomeExpander.java (72%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome => api/src/main/java/com/dfsek/terra/api/world/biome/generation}/pipeline/BiomeHolder.java (53%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator => api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline}/BiomeMutator.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source => api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline}/BiomeSource.java (73%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/generator/ChunkData.java (69%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java rename common/{implementation/src/main/java/com/dfsek/terra/api/platform => api/src/main/java/com/dfsek/terra/api}/world/generator/GeneratorWrapper.java (63%) rename common/implementation/src/main/java/com/dfsek/terra/api/event/{TerraEventManager.java => EventManagerImpl.java} (96%) rename common/implementation/src/main/java/com/dfsek/terra/api/{injection/Injector.java => inject/InjectorImpl.java} (57%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java rename common/implementation/src/main/java/com/dfsek/terra/api/transform/{Transformer.java => TransformerImpl.java} (81%) rename common/implementation/src/main/java/com/dfsek/terra/api/util/collections/{ProbabilityCollection.java => ProbabilityCollectionImpl.java} (89%) rename common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/{TerraBiomeHolder.java => BiomeHolderImpl.java} (78%) rename common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/{BiomePipeline.java => BiomePipelineImpl.java} (70%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java rename common/implementation/src/main/java/com/dfsek/terra/{api/registry/CheckedRegistry.java => registry/CheckedRegistryImpl.java} (63%) rename common/implementation/src/main/java/com/dfsek/terra/{api/registry/LockedRegistry.java => registry/LockedRegistryImpl.java} (86%) rename common/implementation/src/main/java/com/dfsek/terra/registry/{OpenRegistry.java => OpenRegistryImpl.java} (79%) rename common/implementation/src/main/java/com/dfsek/terra/{api/math/vector/Vector2.java => vector/Vector2Impl.java} (56%) rename common/implementation/src/main/java/com/dfsek/terra/{api/math/vector/Vector3.java => vector/Vector3Impl.java} (53%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/Handle.java b/common/api/src/main/java/com/dfsek/terra/api/Handle.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/Handle.java rename to common/api/src/main/java/com/dfsek/terra/api/Handle.java index 4f27ad55b..44c62c87d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/Handle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/Handle.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.platform; +package com.dfsek.terra.api; /** * An interface that contains a platform delegate. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java b/common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java rename to common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/TerraPlugin.java rename to common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 1fa8de87e..8d7e55682 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -2,9 +2,9 @@ package com.dfsek.terra.api; import com.dfsek.terra.api.addons.TerraAddon; import com.dfsek.terra.api.event.EventManager; -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.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.JarUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java rename to common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index c202f9e39..b49a87710 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.addons; +package com.dfsek.terra.api.addon; -import com.dfsek.terra.api.addons.annotations.Addon; -import com.dfsek.terra.api.addons.annotations.Author; -import com.dfsek.terra.api.addons.annotations.Version; +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 org.jetbrains.annotations.NotNull; /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java rename to common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java index cf36cf6cf..355cf68d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.addons.annotations; +package com.dfsek.terra.api.addon.annotations; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java rename to common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java index 7a7c70873..a7241990f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.addons.annotations; +package com.dfsek.terra.api.addon.annotations; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java rename to common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java index 8634335be..604b5c3f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.addons.annotations; +package com.dfsek.terra.api.addon.annotations; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java rename to common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java index a2f8c2743..a683c821c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.addons.annotations; +package com.dfsek.terra.api.addon.annotations; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java new file mode 100644 index 000000000..01b5085bf --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block; + +public enum Axis { + X, Y, Z +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Block.java b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Block.java rename to common/api/src/main/java/com/dfsek/terra/api/block/Block.java index b6132ef0a..4827a7845 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Block.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.platform.block; +package com.dfsek.terra.api.block; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.state.BlockState; public interface Block extends Handle { void setBlockData(BlockData data, boolean physics); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java rename to common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java index 3082a2184..b1f3de4d8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockData.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block; +package com.dfsek.terra.api.block; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; public interface BlockData extends Cloneable, Handle { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java rename to common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java index 4f9bcb904..ccb463640 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockFace.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java @@ -1,6 +1,7 @@ -package com.dfsek.terra.api.platform.block; +package com.dfsek.terra.api.block; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; public enum BlockFace { @@ -74,7 +75,7 @@ public enum BlockFace { */ @NotNull public Vector3 getDirection() { - Vector3 direction = new Vector3(modX, modY, modZ); + Vector3 direction = new Vector3Impl(modX, modY, modZ); if(modX != 0 || modY != 0 || modZ != 0) { direction.normalize(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java similarity index 59% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java rename to common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java index 0703f02f1..2a911d2ae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/BlockType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block; +package com.dfsek.terra.api.block; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; public interface BlockType extends Handle { BlockData getDefaultData(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java similarity index 57% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java index 7c9ea0a7e..c0df25e37 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/AnaloguePowerable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; public interface AnaloguePowerable extends BlockData { int getMaximumPower(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java similarity index 77% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java index a1061e33b..7ce6220c8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Bisected.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; public interface Bisected extends BlockData { Half getHalf(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java new file mode 100644 index 000000000..d25fecebb --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.block.data; + +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; + +public interface Directional extends BlockData { + BlockFace getFacing(); + + void setFacing(BlockFace facing); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java similarity index 60% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java index bf57c54d4..2a8504ed3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/MultipleFacing.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; import java.util.Set; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java similarity index 50% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java index ff3cf79e3..49ca11b51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Orientable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.BlockData; import java.util.Set; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java similarity index 77% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java index 4436d11fb..69fb1e567 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rail.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; public interface Rail extends BlockData { Shape getShape(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java index 6f9602de8..0f34dcb52 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/RedstoneWire.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java new file mode 100644 index 000000000..fc95651c3 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.block.data; + +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; + +public interface Rotatable extends BlockData { + BlockFace getRotation(); + + void setRotation(BlockFace face); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java similarity index 75% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java index d813c8938..a589ae395 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Slab.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; public interface Slab extends Waterlogged { Type getType(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java index 9ed5382aa..fec901575 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Stairs.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; public interface Stairs extends Waterlogged, Directional, Bisected { Shape getShape(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java similarity index 61% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java index 5d891a0da..440daccbb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Wall.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; public interface Wall extends BlockData, Waterlogged { boolean isUp(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java rename to common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java index 3d5d3fed8..a109db6b6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Waterlogged.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block.data; +package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; public interface Waterlogged extends BlockData { boolean isWaterlogged(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java new file mode 100644 index 000000000..7990ba6dd --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.data.properties; + +public interface Property { + +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java similarity index 58% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 47f5f51b7..3de77b5b6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.platform.block.state; +package com.dfsek.terra.api.block.state; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; public interface BlockState extends Handle { Block getBlock(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java new file mode 100644 index 000000000..4a51a5280 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.block.state; + +import com.dfsek.terra.api.inventory.BlockInventoryHolder; + +public interface Container extends BlockState, BlockInventoryHolder { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java index ef1b2d606..ea8f40239 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/MobSpawner.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.block.state; +package com.dfsek.terra.api.block.state; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.entity.EntityType; import org.jetbrains.annotations.NotNull; public interface MobSpawner extends BlockState { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java index 7c05c1253..22c39ee44 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/SerialState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.platform.block.state; +package com.dfsek.terra.api.block.state; import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java index 0cc901816..037572d0d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Sign.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.platform.block.state; +package com.dfsek.terra.api.block.state; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/CommandSender.java b/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/CommandSender.java rename to common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java index 5fd7d60a7..cc005485a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/CommandSender.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java @@ -1,4 +1,6 @@ -package com.dfsek.terra.api.platform; +package com.dfsek.terra.api.entity; + +import com.dfsek.terra.api.Handle; public interface CommandSender extends Handle { void sendMessage(String message); diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java new file mode 100644 index 000000000..152ee3ed7 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.api.entity; + +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.world.World; + +public interface Entity extends Handle, CommandSender { + Location getLocation(); + + void setLocation(Location location); + + World getWorld(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java b/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java new file mode 100644 index 000000000..f86525b82 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.entity; + +import com.dfsek.terra.api.Handle; + +public interface EntityType extends Handle { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/Player.java b/common/api/src/main/java/com/dfsek/terra/api/entity/Player.java new file mode 100644 index 000000000..d8cbc30e3 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/Player.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.api.entity; + +public interface Player extends Entity { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventListener.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/EventListener.java rename to common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/EventManager.java rename to common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java index de6ba0e19..28453d401 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManager.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.event; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Global.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Global.java rename to common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java rename to common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/Event.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/Event.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/Event.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/Event.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index 2f4b25bbe..f5748ee4c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.event.events.world.generation; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.Entity; +import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.config.pack.ConfigPack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index cb3735017..39657595b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -3,8 +3,8 @@ package com.dfsek.terra.api.event.events.world.generation; import com.dfsek.terra.api.event.events.AbstractCancellable; import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.state.Container; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java similarity index 52% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java rename to common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java index 1c76e225d..2a9c176a0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/ItemHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.handle; +package com.dfsek.terra.api.handle; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; import java.util.Set; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java rename to common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 776b695a5..4575b5d2c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.platform.handle; +package com.dfsek.terra.api.handle; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java b/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java new file mode 100644 index 000000000..648365c19 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.api.injection; + +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.injection.exception.InjectionException; + +/** + * Dynamic dependency injector. + *

+ * Stores an object to inject, and injects it into objects passed to {@link #inject(Object)}. + * + * @param Type of object to inject. + */ +public interface Injector { + /** + * Add an explicit class as a target. Useful for applications where subclasses may cause issues with DI. + * + * @param target Target class type. + */ + void addExplicitTarget(Class target); + + /** + * Inject the stored object into an object. + *

+ * Injects the stored object into any non-static, non-final fields + * annotated with {@link Inject}, + * with type matching the stored object or any explicit targets + * ({@link #addExplicitTarget(Class)}. + * + * @param object Object to inject into + * @throws InjectionException If: + *

    + *
  • Matching field annotated with {@link Inject} is final
  • + *
  • Matching field annotated with {@link Inject} is static
  • + *
  • A reflective access exception occurs
  • + *
+ */ + void inject(Object object) throws InjectionException; +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java b/common/api/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java rename to common/api/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java b/common/api/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java rename to common/api/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java new file mode 100644 index 000000000..eeebc5286 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.inventory; + +import com.dfsek.terra.api.block.Block; + +public interface BlockInventoryHolder extends InventoryHolder { + Block getBlock(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/Inventory.java similarity index 61% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/Inventory.java index 776a23614..c90267298 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Inventory.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/Inventory.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.inventory; +package com.dfsek.terra.api.inventory; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; public interface Inventory extends Handle { int getSize(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java new file mode 100644 index 000000000..b3a1683cb --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.inventory; + +import com.dfsek.terra.api.Handle; + +public interface InventoryHolder extends Handle { + Inventory getInventory(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/Item.java similarity index 61% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/Item.java index 4fa70ede3..1d87635c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/Item.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/Item.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.inventory; +package com.dfsek.terra.api.inventory; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; /** * An inventory item. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java index 5b7ac6906..fb3dd837c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/ItemStack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.platform.inventory; +package com.dfsek.terra.api.inventory; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.inventory.item.Damageable; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.inventory.item.Damageable; +import com.dfsek.terra.api.inventory.item.ItemMeta; public interface ItemStack extends Handle { int getAmount(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java similarity index 57% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java index 160388c94..115414b3a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Damageable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.inventory.item; +package com.dfsek.terra.api.inventory.item; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; public interface Damageable extends Handle { int getDamage(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java index e8f404f34..eb1586815 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/Enchantment.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.inventory.item; +package com.dfsek.terra.api.inventory.item; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.inventory.ItemStack; public interface Enchantment extends Handle { boolean canEnchantItem(ItemStack itemStack); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java rename to common/api/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java index 0189c5755..87ce7e63f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/item/ItemMeta.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.inventory.item; +package com.dfsek.terra.api.inventory.item; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index 34fc3704e..7d04c5619 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise; +package com.dfsek.terra.api.noise; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java index dee3ddfd8..5386119b4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/ClampNormalizer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.normalizer; +package com.dfsek.terra.api.noise.normalizer; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; public class ClampNormalizer extends Normalizer { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java index 69adfabb3..e61fefe3d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/LinearNormalizer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.normalizer; +package com.dfsek.terra.api.noise.normalizer; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; /** * Normalizer to linearly scale data's range. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java index faeef8963..377a43fd3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/NormalNormalizer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math.noise.normalizer; +package com.dfsek.terra.api.noise.normalizer; import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java index 19967130c..2e61cbe9f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/normalizer/Normalizer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.normalizer; +package com.dfsek.terra.api.noise.normalizer; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public abstract class Normalizer implements NoiseSampler { private final NoiseSampler sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java index cbaf053c7..9796999d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/DomainWarpedSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers; +package com.dfsek.terra.api.noise.samplers; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class DomainWarpedSampler implements NoiseSampler { private final NoiseSampler function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java index 8ca8f2333..291384220 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ExpressionSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.math.noise.samplers; +package com.dfsek.terra.api.noise.samplers; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java index a5b31b808..d246e53c7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/ImageSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers; +package com.dfsek.terra.api.noise.samplers; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java index 695135e5c..d74fc35a0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/KernelSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers; +package com.dfsek.terra.api.noise.samplers; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class KernelSampler implements NoiseSampler { private final double[][] kernel; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java index b5488a8dd..01e0f5424 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/CellularSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math.noise.samplers.noise; +package com.dfsek.terra.api.noise.samplers.noise; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java index 203a1a85f..1d8e010c6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ConstantSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise; +package com.dfsek.terra.api.noise.samplers.noise; /** * Sampler3D implementation that returns a constant. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java index 305aa1075..60fb2c97e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/ExpressionFunction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise; +package com.dfsek.terra.api.noise.samplers.noise; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java index 93f006dc4..f1311f2ed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise; +package com.dfsek.terra.api.noise.samplers.noise; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import net.jafama.FastMath; public class GaborNoiseSampler extends NoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java index 1266c3762..5e9249faf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/NoiseFunction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise; +package com.dfsek.terra.api.noise.samplers.noise; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; @SuppressWarnings("ManualMinMaxCalculation") diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java index 5233dd2b5..e04976feb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.fractal; +package com.dfsek.terra.api.noise.samplers.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class BrownianMotionSampler extends FractalNoiseFunction { public BrownianMotionSampler(int seed, NoiseSampler input) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java index 471184951..9c5c0f0cd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.fractal; +package com.dfsek.terra.api.noise.samplers.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; public abstract class FractalNoiseFunction extends NoiseFunction { protected final NoiseSampler input; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java index bf5f0a4b2..48b71c018 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.fractal; +package com.dfsek.terra.api.noise.samplers.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class PingPongSampler extends FractalNoiseFunction { private double pingPongStrength = 2.0; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java index 08dfbb2ed..56e92269a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.fractal; +package com.dfsek.terra.api.noise.samplers.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class RidgedFractalSampler extends FractalNoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java index 9843df3e4..b89346c1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.random; +package com.dfsek.terra.api.noise.samplers.noise.random; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java index 962ca2486..6f9c2fb42 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.random; +package com.dfsek.terra.api.noise.samplers.noise.random; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index 2ed7fc612..94a7de195 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.simplex; +package com.dfsek.terra.api.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index 767ce45cb..43e1e8993 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.simplex; +package com.dfsek.terra.api.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java index 86469fd18..73832a28d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.simplex; +package com.dfsek.terra.api.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide Perlin Noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java index b12a75d21..98644c689 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.simplex; +package com.dfsek.terra.api.noise.samplers.noise.simplex; public class SimplexSampler extends SimplexStyleSampler { private static final Double2[] GRAD_2D = { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java index 51e4a75ab..7ff57275b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.simplex; +package com.dfsek.terra.api.noise.samplers.noise.simplex; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; /** * Abstract NoiseSampler implementation for simplex-style noise functions. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java index d0664c922..f91376003 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.value; +package com.dfsek.terra.api.noise.samplers.noise.value; public class ValueCubicSampler extends ValueStyleNoise { public ValueCubicSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java index e79f5cf2b..cc8384b1a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.value; +package com.dfsek.terra.api.noise.samplers.noise.value; public class ValueSampler extends ValueStyleNoise { public ValueSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java rename to common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java index 246d77538..7ea976614 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.math.noise.samplers.noise.value; +package com.dfsek.terra.api.noise.samplers.noise.value; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; public abstract class ValueStyleNoise extends NoiseFunction { public ValueStyleNoise(int seed) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java new file mode 100644 index 000000000..e3dbb2ce2 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.api.registry; + +public interface CheckedRegistry extends Registry { + /** + * Add a value to this registry, checking whether it is present first. + * + * @param identifier Identifier to assign value. + * @param value Value to add. + * @throws DuplicateEntryException If an entry with the same identifier is already present. + */ + void add(String identifier, T value) throws DuplicateEntryException; + + /** + * Add a value to the registry, without checking presence beforehand. + *

+ * Use of this method is generally discouraged, as it is bad practice to overwrite registry values. + * + * @param identifier Identifier to assign value. + * @param value Value to add. + * @deprecated Use of {@link #add(String, Object)} is encouraged. + */ + @Deprecated + void addUnchecked(String identifier, T value); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java b/common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java rename to common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java index 477c93f50..e384fe8e5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/exception/DuplicateEntryException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.registry.exception; +package com.dfsek.terra.api.registry; /** * Thrown when a duplicate entry is found in a registry. diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java new file mode 100644 index 000000000..f15ebd3db --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.api.registry; + +public interface OpenRegistry extends Registry { + /** + * Add a value to this registry. + * + * @param identifier Identifier to assign value. + * @param value Value to add. + */ + boolean add(String identifier, T value); + + /** + * Add a value to this registry, checking whether it is present first. + * + * @param identifier Identifier to assign value. + * @param value Value to add. + * @throws DuplicateEntryException If an entry with the same identifier is already present. + */ + void addChecked(String identifier, T value) throws DuplicateEntryException; + + /** + * Clears all entries from the registry. + */ + void clear(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/registry/Registry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/Registry.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/registry/Registry.java rename to common/api/src/main/java/com/dfsek/terra/api/registry/Registry.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transform.java b/common/api/src/main/java/com/dfsek/terra/api/transform/Transform.java similarity index 75% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/Transform.java rename to common/api/src/main/java/com/dfsek/terra/api/transform/Transform.java index 2732b1da7..42b863711 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transform.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/Transform.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.transform; +import com.dfsek.terra.api.transform.exception.TransformException; + /** * Interface to transform data from one type to another. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/transform/Transformer.java b/common/api/src/main/java/com/dfsek/terra/api/transform/Transformer.java new file mode 100644 index 000000000..9e4a33db6 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/Transformer.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.api.transform; + +public interface Transformer { + /** + * Translate data from {@code from} type to {@code to} type. + * + * @param from Data to translate + * @return Result + */ + T translate(F from); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Validator.java b/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java similarity index 77% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/Validator.java rename to common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java index b22b7c08b..d52c40c97 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Validator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java @@ -1,6 +1,8 @@ package com.dfsek.terra.api.transform; +import com.dfsek.terra.api.transform.exception.TransformException; + import java.util.Objects; public interface Validator { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java rename to common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java index 904758a6c..f3a27d657 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/AttemptsFailedException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.transform; +package com.dfsek.terra.api.transform.exception; import com.dfsek.terra.api.util.GlueList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformException.java b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformException.java rename to common/api/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java index 048c7d4da..9aab231e5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.transform; +package com.dfsek.terra.api.transform.exception; public class TransformException extends Exception { private static final long serialVersionUID = -6661338369581162084L; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/MathUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/MathUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java index 77c1a43cf..fea8bade5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/MathUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math; +package com.dfsek.terra.api.util; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.world.generation.math.samplers.Sampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java new file mode 100644 index 000000000..0753f428b --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.api.util; + +import com.dfsek.terra.api.noise.NoiseSampler; + +import java.util.Collection; +import java.util.Random; +import java.util.Set; +import java.util.function.Function; + +public interface ProbabilityCollection extends Collection { + ProbabilityCollectionImpl add(E item, int probability); + + E get(Random r); + + E get(NoiseSampler n, double x, double y, double z); + + E get(NoiseSampler n, double x, double z); + + ProbabilityCollectionImpl map(Function mapper, boolean carryNull); + + int getTotalProbability(); + + int getProbability(E item); + + Set getContents(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Location.java rename to common/api/src/main/java/com/dfsek/terra/api/vector/Location.java index de01cce98..7712d2f10 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Location.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java @@ -1,10 +1,11 @@ -package com.dfsek.terra.api.math.vector; +package com.dfsek.terra.api.vector; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.world.World; import java.util.Objects; +@Deprecated public class Location implements Cloneable { private World world; private Vector3 vector; @@ -13,7 +14,7 @@ public class Location implements Cloneable { public Location(World w, double x, double y, double z) { this.world = w; - this.vector = new Vector3(x, y, z); + this.vector = new Vector3Impl(x, y, z); } public Location(World w, Vector3 vector) { @@ -162,7 +163,7 @@ public class Location implements Cloneable { return hash; } - public Vector3 toVector() { + public Vector3Impl toVector() { return vector.clone(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java new file mode 100644 index 000000000..bfc63ee16 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -0,0 +1,99 @@ +package com.dfsek.terra.api.vector; + +/** + * oh yeah + */ +public interface Vector2 extends Cloneable { + /** + * Get X component + * + * @return X component + */ + double getX(); + + Vector2 setX(double x); + + /** + * Get Z component + * + * @return Z component + */ + double getZ(); + + Vector2 setZ(double z); + + /** + * Multiply X and Z components by a value. + * + * @param m Value to multiply + * @return Mutated vector, for chaining. + */ + Vector2 multiply(double m); + + /** + * Add this vector to another. + * + * @param other Vector to add + * @return Mutated vector, for chaining. + */ + Vector2 add(Vector2Impl other); + + /** + * Subtract a vector from this vector, + * + * @param other Vector to subtract + * @return Mutated vector, for chaining. + */ + Vector2 subtract(Vector2Impl other); + + /** + * Normalize this vector to length 1 + * + * @return Mutated vector, for chaining. + */ + Vector2 normalize(); + + /** + * Divide X and Z components by a value. + * + * @param d Divisor + * @return Mutated vector, for chaining. + */ + Vector2 divide(double d); + + /** + * Get the length of this Vector + * + * @return length + */ + double length(); + + /** + * Get the squared length of this Vector + * + * @return squared length + */ + double lengthSquared(); + + /** + * Get the distance from this vector to another. + * + * @param other Another vector + * @return Distance between vectors + */ + double distance(Vector2Impl other); + + /** + * Get the squared distance between 2 vectors. + * + * @param other Another vector + * @return Squared distance + */ + double distanceSquared(Vector2Impl other); + + Vector2 add(double x, double z); + + int getBlockX(); + + int getBlockZ(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java new file mode 100644 index 000000000..db8be7194 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -0,0 +1,165 @@ +package com.dfsek.terra.api.vector; + +import com.dfsek.terra.api.world.World; +import org.jetbrains.annotations.NotNull; + +public interface Vector3 extends Cloneable { + double getZ(); + + Vector3 setZ(double z); + + double getX(); + + Vector3 setX(double x); + + double getY(); + + Vector3 setY(double y); + + int getBlockX(); + + int getBlockY(); + + int getBlockZ(); + + Vector3 multiply(double m); + + Vector3 add(double x, double y, double z); + + Vector3 add(Vector3 other); + + Vector3 add(Vector2 other); + + double lengthSquared(); + + double length(); + + double inverseLength(); + + /** + * Returns if a vector is normalized + * + * @return whether the vector is normalised + */ + boolean isNormalized(); + + /** + * Rotates the vector around the x axis. + *

+ * This piece of math is based on the standard rotation matrix for vectors + * in three dimensional space. This matrix can be found here: + * Rotation + * Matrix. + * + * @param angle the angle to rotate the vector about. This angle is passed + * in radians + * @return the same vector + */ + @NotNull Vector3 rotateAroundX(double angle); + + /** + * Rotates the vector around the y axis. + *

+ * This piece of math is based on the standard rotation matrix for vectors + * in three dimensional space. This matrix can be found here: + * Rotation + * Matrix. + * + * @param angle the angle to rotate the vector about. This angle is passed + * in radians + * @return the same vector + */ + @NotNull Vector3 rotateAroundY(double angle); + + /** + * Rotates the vector around the z axis + *

+ * This piece of math is based on the standard rotation matrix for vectors + * in three dimensional space. This matrix can be found here: + * Rotation + * Matrix. + * + * @param angle the angle to rotate the vector about. This angle is passed + * in radians + * @return the same vector + */ + @NotNull Vector3 rotateAroundZ(double angle); + + /** + * Get the distance between this vector and another. The value of this + * method is not cached and uses a costly square-root function, so do not + * repeatedly call this method to get the vector's magnitude. NaN will be + * returned if the inner result of the sqrt() function overflows, which + * will be caused if the distance is too long. + * + * @param o The other vector + * @return the distance + */ + double distance(@NotNull Vector3Impl o); + + /** + * Get the squared distance between this vector and another. + * + * @param o The other vector + * @return the distance + */ + double distanceSquared(@NotNull Vector3Impl o); + + /** + * Rotates the vector around a given arbitrary axis in 3 dimensional space. + * + *

+ * Rotation will follow the general Right-Hand-Rule, which means rotation + * will be counterclockwise when the axis is pointing towards the observer. + *

+ * This method will always make sure the provided axis is a unit vector, to + * not modify the length of the vector when rotating. + * + * @param axis the axis to rotate the vector around. If the passed vector is + * not of length 1, it gets copied and normalized before using it for the + * rotation. Please use {@link Vector3Impl#normalize()} on the instance before + * passing it to this method + * @param angle the angle to rotate the vector around the axis + * @return the same vector + * @throws IllegalArgumentException if the provided axis vector instance is + * null + */ + @NotNull Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; + + /** + * Rotates the vector around a given arbitrary axis in 3 dimensional space. + * + *

+ * Rotation will follow the general Right-Hand-Rule, which means rotation + * will be counterclockwise when the axis is pointing towards the observer. + *

+ * Note that the vector length will change accordingly to the axis vector + * length. If the provided axis is not a unit vector, the rotated vector + * will not have its previous length. The scaled length of the resulting + * vector will be related to the axis vector. + * + * @param axis the axis to rotate the vector around. + * @param angle the angle to rotate the vector around the axis + * @return the same vector + * @throws IllegalArgumentException if the provided axis vector instance is + * null + */ + @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3Impl axis, double angle) throws IllegalArgumentException; + + /** + * Calculates the dot product of this vector with another. The dot product + * is defined as x1*x2+y1*y2+z1*z2. The returned value is a scalar. + * + * @param other The other vector + * @return dot product + */ + double dot(@NotNull Vector3Impl other); + + Location toLocation(World world); + + Vector3 normalize(); + + Vector3 subtract(int x, int y, int z); + + Vector3 subtract(Vector3Impl end); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java b/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java rename to common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java index 0fe72dd42..528cf7a4b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/BiomeGrid.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.world; +package com.dfsek.terra.api.world; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; import org.jetbrains.annotations.NotNull; public interface BiomeGrid extends Handle { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java similarity index 61% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java rename to common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java index 0ba30f288..d36829f63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Chunk.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.world; +package com.dfsek.terra.api.world; -import com.dfsek.terra.api.platform.block.Block; +import com.dfsek.terra.api.block.Block; public interface Chunk extends ChunkAccess { int getX(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java rename to common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index b6da6e9a8..67ea10b98 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/ChunkAccess.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.world; +package com.dfsek.terra.api.world; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.BlockData; import org.jetbrains.annotations.NotNull; public interface ChunkAccess extends Handle { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Tree.java rename to common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 34225e7eb..450ca83cf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.platform.world; +package com.dfsek.terra.api.world; -import com.dfsek.terra.api.math.vector.Location; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/World.java rename to common/api/src/main/java/com/dfsek/terra/api/world/World.java index 45d13ab4d..e35fb3b64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,17 +1,14 @@ -package com.dfsek.terra.api.platform.world; +package com.dfsek.terra.api.world; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; -import java.io.File; -import java.util.UUID; - public interface World extends Handle { long getSeed(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Biome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Biome.java new file mode 100644 index 000000000..0dda04605 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Biome.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.world.biome; + +import com.dfsek.terra.api.Handle; + +public interface Biome extends Handle { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/Generator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index a72243739..b3e6f9628 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.biome; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.palette.Palette; public interface Generator { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java similarity index 77% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 4aaac0e9e..a05210ab5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -1,9 +1,7 @@ package com.dfsek.terra.api.world.biome; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.ProbabilityCollection; import java.util.Set; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index c1f664314..028eb2422 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.world.biome.provider; +package com.dfsek.terra.api.world.biome.generation; -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.api.vector.Location; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeProvider { @@ -24,6 +24,7 @@ public interface BiomeProvider { BiomeProvider build(long seed); } + @Deprecated enum Type { IMAGE, PIPELINE, SINGLE } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java index 15082a0fe..6a4297f27 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.pipeline.expand; +package com.dfsek.terra.api.world.biome.generation.pipeline; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java similarity index 53% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java index 46edff4c4..2e3887747 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java @@ -1,9 +1,6 @@ -package com.dfsek.terra.api.world.biome.pipeline; +package com.dfsek.terra.api.world.biome.generation.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); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java index da70c3d9e..3240297c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.generation.pipeline; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; public interface BiomeMutator { TerraBiome mutate(ViewPoint viewPoint, double x, double z); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java index b2e2e37cc..ad8c208d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.pipeline.source; +package com.dfsek.terra.api.world.biome.generation.pipeline; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java new file mode 100644 index 000000000..3ed4417f6 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.world.biome.generation.pipeline; + +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; + +public interface Stage { + boolean isExpansion(); + + BiomeHolder apply(BiomeHolder in); + +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java new file mode 100644 index 000000000..5cbfae751 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; + +import java.util.Random; + +public interface BlockPopulator extends Handle { + void populate(World world, Random random, Chunk chunk); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java index bb7f164a4..cc948dea5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkData.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.world.generator; +package com.dfsek.terra.api.world.generator; -import com.dfsek.terra.api.platform.world.ChunkAccess; +import com.dfsek.terra.api.world.ChunkAccess; public interface ChunkData extends ChunkAccess { /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java new file mode 100644 index 000000000..59c8a1678 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.Handle; + +public interface ChunkGenerator extends Handle { + +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java index 127f9e5bf..ad41a7026 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/GeneratorWrapper.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.platform.world.generator; +package com.dfsek.terra.api.world.generator; -import com.dfsek.terra.api.platform.Handle; +import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; public interface GeneratorWrapper extends Handle { diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java index 6f09a5307..e4258ba31 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addon; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.addons.annotations.Addon; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; import java.io.File; import java.io.IOException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java index 7b21ecb40..f3b1b0482 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java @@ -3,9 +3,9 @@ package com.dfsek.terra.addon; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.addon.exception.CircularDependencyException; import com.dfsek.terra.addon.exception.DependencyMissingException; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.addons.annotations.Addon; -import com.dfsek.terra.api.addons.annotations.Depends; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Depends; import java.io.File; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java index a33d70921..4c5618531 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.command; import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.command.exception.MalformedCommandException; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java index 836192b6b..86cbe8dad 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; public interface CommandTemplate { void execute(CommandSender sender); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java index 89216bd89..9c55b7a55 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.HashMap; import java.util.HashSet; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java index 57b434164..4a75cf9b6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java @@ -17,12 +17,11 @@ import com.dfsek.terra.api.command.exception.InvalidArgumentsException; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.command.exception.SwitchFormatException; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.injection.Injector; +import com.dfsek.terra.api.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.ReflectionUtil; -import com.dfsek.terra.world.TerraWorld; import net.jafama.FastMath; import java.lang.reflect.Field; @@ -37,12 +36,12 @@ import java.util.stream.Collectors; public class TerraCommandManager implements CommandManager { private final Map commands = new HashMap<>(); - private final Injector pluginInjector; + private final InjectorImpl pluginInjector; private final TerraPlugin main; public TerraCommandManager(TerraPlugin main) { this.main = main; - this.pluginInjector = new Injector<>(main); + this.pluginInjector = new InjectorImpl<>(main); pluginInjector.addExplicitTarget(TerraPlugin.class); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java index 3fcc5aeef..fe34f088a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.arg; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; public interface ArgumentParser { T parse(CommandSender sender, String arg); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java index 3f229b444..d05ae0f89 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.arg; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; public class DoubleArgumentParser implements ArgumentParser { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java index 24e3186ca..5f6d34ad6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.arg; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; public class IntegerArgumentParser implements ArgumentParser { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java index 736b335d0..bba6de6bd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.arg; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; public class StringArgumentParser implements ArgumentParser { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java index 111125505..4b7ab26cf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.tab; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.Collections; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java index 33f875234..c7c3174da 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.command.tab; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java rename to common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java index 493efa364..cc97be2b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.event; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.Cancellable; @@ -20,11 +20,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class TerraEventManager implements EventManager { +public class EventManagerImpl implements EventManager { private final Map, List> listeners = new HashMap<>(); private final TerraPlugin main; - public TerraEventManager(TerraPlugin main) { + public EventManagerImpl(TerraPlugin main) { this.main = main; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/injection/Injector.java b/common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java similarity index 57% rename from common/implementation/src/main/java/com/dfsek/terra/api/injection/Injector.java rename to common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java index c19a680fa..f36af83b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/injection/Injector.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java @@ -1,5 +1,6 @@ -package com.dfsek.terra.api.injection; +package com.dfsek.terra.api.inject; +import com.dfsek.terra.api.injection.Injector; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.util.ReflectionUtil; @@ -9,14 +10,8 @@ import java.lang.reflect.Modifier; import java.util.HashSet; import java.util.Set; -/** - * Dynamic dependency injector. - *

- * Stores an object to inject, and injects it into objects passed to {@link #inject(Object)}. - * - * @param Type of object to inject. - */ -public class Injector { + +public class InjectorImpl implements Injector { private final T value; private final Set> targets = new HashSet<>(); @@ -25,35 +20,18 @@ public class Injector { * * @param value Value to inject */ - public Injector(T value) { + public InjectorImpl(T value) { this.value = value; } - /** - * Add an explicit class as a target. Useful for applications where subclasses may cause issues with DI. - * - * @param target Target class type. - */ + + @Override public void addExplicitTarget(Class target) { targets.add(target); } - /** - * Inject the stored object into an object. - *

- * Injects the stored object into any non-static, non-final fields - * annotated with {@link Inject}, - * with type matching the stored object or any explicit targets - * ({@link #addExplicitTarget(Class)}. - * - * @param object Object to inject into - * @throws InjectionException If: - *

    - *
  • Matching field annotated with {@link Inject} is final
  • - *
  • Matching field annotated with {@link Inject} is static
  • - *
  • A reflective access exception occurs
  • - *
- */ + + @Override public void inject(Object object) throws InjectionException { for(Field field : ReflectionUtil.getFields(object.getClass())) { Inject inject = field.getAnnotation(Inject.class); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index f25832de1..da48b601d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -1,6 +1,8 @@ package com.dfsek.terra.api.math; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; @@ -38,9 +40,9 @@ public class GridSpawn { zones.add(getChunkSpawn(xi, zi, seed)); } } - Vector3 shortest = zones.get(0); - Vector3 compare = new Vector3(x, 0, z); - for(Vector3 v : zones) { + Vector3Impl shortest = zones.get(0); + Vector3 compare = new Vector3Impl(x, 0, z); + for(Vector3Impl v : zones) { if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone(); } return shortest; @@ -60,7 +62,7 @@ public class GridSpawn { int offsetZ = r.nextInt(width); int sx = structureChunkX * (width + 2 * separation) + offsetX; int sz = structureChunkZ * (width + 2 * separation) + offsetZ; - return new Vector3(sx, 0, sz); + return new Vector3Impl(sx, 0, sz); } public int getWidth() { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java index f4a516375..113a9cd5d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.math.paralithic.noise; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.hash.HashMapDoubleDouble; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java index 297a0d2cb..0c4d826a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.math.paralithic.noise; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public class NoiseFunction3 implements NoiseFunction { private final NoiseSampler gen; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java deleted file mode 100644 index a91f07028..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.math.pixel; - -public class Distribution { - public Distribution(Rectangle bound, int numPoints, double minRad) { - - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java deleted file mode 100644 index 00f996fd7..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.math.pixel; - -import com.dfsek.terra.api.math.vector.Vector2; - -import java.util.Set; - -@SuppressWarnings("unused") -public abstract class Polygon { - public abstract Set getContainedPixels(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java deleted file mode 100644 index 0eecb2f40..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.api.math.pixel; - -import com.dfsek.terra.api.math.vector.Vector2; -import net.jafama.FastMath; - -import java.util.HashSet; -import java.util.Set; - -@SuppressWarnings("unused") -public class Rectangle extends Polygon { - private final Vector2 min; - private final Vector2 max; - - public Rectangle(Vector2 min, Vector2 max) { - this.max = new Vector2(FastMath.min(min.getX(), max.getX()), FastMath.min(min.getZ(), max.getZ())); - this.min = new Vector2(FastMath.max(min.getX(), max.getX()), FastMath.max(min.getZ(), max.getZ())); - } - - public Rectangle(Vector2 center, double xRadius, double zRadius) { - Vector2 rad = new Vector2(xRadius, zRadius); - this.min = center.clone().subtract(rad); - this.max = center.clone().add(rad); - } - - @Override - public Set getContainedPixels() { - Set pixels = new HashSet<>(); - for(int x = (int) min.getX(); x <= max.getX(); x++) { - for(int z = (int) min.getZ(); z <= max.getZ(); z++) { - pixels.add(new Vector2(x, z)); - } - } - return pixels; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java deleted file mode 100644 index 44d5558c3..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.math.voxel; - - -import com.dfsek.terra.api.math.vector.Vector3; - -public class Cylinder extends VoxelGeometry { - public Cylinder(Vector3 start, int rad, int height) { - - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java deleted file mode 100644 index 668a0ccdc..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.api.math.voxel; - -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.vector.Vector3; - -public class DeformedSphere extends VoxelGeometry { - public DeformedSphere(Vector3 start, int rad, double deform, NoiseSampler noise) { - for(int x = -rad; x <= rad; x++) { - for(int y = -rad; y <= rad; y++) { - for(int z = -rad; z <= rad; z++) { - Vector3 c = new Vector3(x, y, z); - if(c.length() < (rad + 0.5) * ((noise.getNoise(x, y, z) + 1) * deform)) { - addVector(c.add(start)); - } - } - } - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java deleted file mode 100644 index ced0cb3cd..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.api.math.voxel; - -import com.dfsek.terra.api.math.vector.Vector3; - -public class Sphere extends VoxelGeometry { - public Sphere(Vector3 start, int rad) { - for(int x = -rad; x <= rad; x++) { - for(int y = -rad; y <= rad; y++) { - for(int z = -rad; z <= rad; z++) { - Vector3 c = new Vector3(x, y, z); - if(c.length() < rad + 0.5) { - addVector(c.add(start)); - } - } - } - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java deleted file mode 100644 index 7e0af69fc..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.api.math.voxel; - -import com.dfsek.terra.api.math.vector.Vector3; - -public class Tube extends VoxelGeometry { - public Tube(Vector3 start, Vector3 end, int radius) { - Vector3 step = start.clone().subtract(end).normalize(); - Vector3 run = start.clone(); - int steps = (int) start.distance(end); - for(int i = 0; i < steps; i++) { - merge(new Sphere(run, radius)); - run.add(step); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java deleted file mode 100644 index dccbe3f1c..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.api.math.voxel; - -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.util.GlueList; - -import java.util.List; - -public abstract class VoxelGeometry { - private final List geometry = new GlueList<>(); - - public static VoxelGeometry getBlank() { - return new VoxelGeometry() { - }; - } - - public List getGeometry() { - return geometry; - } - - protected void addVector(Vector3 v) { - geometry.add(v); - } - - public void merge(VoxelGeometry other) { - geometry.addAll(other.geometry); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java deleted file mode 100644 index 38236b3b1..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/Axis.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dfsek.terra.api.platform.block; - -public enum Axis { - X, Y, Z -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java deleted file mode 100644 index 6857121e3..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Directional.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.platform.block.data; - -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; - -public interface Directional extends BlockData { - BlockFace getFacing(); - - void setFacing(BlockFace facing); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java deleted file mode 100644 index 58f23989e..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/Rotatable.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.platform.block.data; - -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; - -public interface Rotatable extends BlockData { - BlockFace getRotation(); - - void setRotation(BlockFace face); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java deleted file mode 100644 index 95bfeca93..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/data/properties/Property.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dfsek.terra.api.platform.block.data.properties; - -public interface Property { - -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java deleted file mode 100644 index 450b8d09a..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/block/state/Container.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.platform.block.state; - -import com.dfsek.terra.api.platform.inventory.BlockInventoryHolder; - -public interface Container extends BlockState, BlockInventoryHolder { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java deleted file mode 100644 index 51c9be6e5..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Entity.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.api.platform.entity; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.world.World; - -public interface Entity extends Handle, CommandSender { - Location getLocation(); - - void setLocation(Location location); - - World getWorld(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java deleted file mode 100644 index d893b967b..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/EntityType.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.platform.entity; - -import com.dfsek.terra.api.platform.Handle; - -public interface EntityType extends Handle { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java deleted file mode 100644 index 43a002089..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/entity/Player.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.api.platform.entity; - -public interface Player extends Entity { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java deleted file mode 100644 index 157d8837e..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/BlockInventoryHolder.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.platform.inventory; - -import com.dfsek.terra.api.platform.block.Block; - -public interface BlockInventoryHolder extends InventoryHolder { - Block getBlock(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java deleted file mode 100644 index c8550a121..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/inventory/InventoryHolder.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.platform.inventory; - -import com.dfsek.terra.api.platform.Handle; - -public interface InventoryHolder extends Handle { - Inventory getInventory(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java deleted file mode 100644 index 44377a381..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * API for platform implementations. Mostly interfaces to be implemented by platform delegates. - *

- * Interfaces in this package generally should not be implemented by addons. - */ -package com.dfsek.terra.api.platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java deleted file mode 100644 index ec1b2060d..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/Biome.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.platform.world; - -import com.dfsek.terra.api.platform.Handle; - -public interface Biome extends Handle { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java deleted file mode 100644 index 1ed9a3a33..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/BlockPopulator.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.api.platform.world.generator; - -import com.dfsek.terra.api.platform.Handle; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; - -import java.util.Random; - -public interface BlockPopulator extends Handle { - void populate(World world, Random random, Chunk chunk); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java deleted file mode 100644 index da3594011..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/platform/world/generator/ChunkGenerator.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.platform.world.generator; - -import com.dfsek.terra.api.platform.Handle; - -public interface ChunkGenerator extends Handle { - -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java index 81c48aab1..8de921647 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.loot; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.structures.loot.functions.AmountFunction; import com.dfsek.terra.api.structures.loot.functions.DamageFunction; import com.dfsek.terra.api.structures.loot.functions.EnchantFunction; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java index 886d72178..cb4679658 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.loot; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.inventory.Inventory; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.GlueList; import org.json.simple.JSONArray; import org.json.simple.JSONObject; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java index e01a25bdb..f4a6c8f7e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.structures.loot; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -17,7 +17,7 @@ import java.util.Random; public class Pool { private final int max; private final int min; - private final ProbabilityCollection entries; + private final ProbabilityCollectionImpl entries; /** * Instantiates a Pool from a JSON representation. @@ -25,7 +25,7 @@ public class Pool { * @param pool The JSON Object to instantiate from. */ public Pool(JSONObject pool, TerraPlugin main) { - entries = new ProbabilityCollection<>(); + entries = new ProbabilityCollectionImpl<>(); Object amount = pool.get("rolls"); if(amount instanceof Long) { max = FastMath.toIntExact((Long) amount); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java index f83498fec..4e29905bd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.loot.functions; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java index 517777db0..0d9230b32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.loot.functions; -import com.dfsek.terra.api.platform.inventory.ItemStack; -import com.dfsek.terra.api.platform.inventory.item.Damageable; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Damageable; +import com.dfsek.terra.api.inventory.item.ItemMeta; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java index 50818d871..6facfe662 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.structures.loot.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.inventory.ItemStack; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java index 5b882c830..477290a74 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.loot.functions; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 6608f3ffd..7c1381097 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.Parser; @@ -33,9 +33,6 @@ import com.dfsek.terra.api.structures.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.profiler.ProfileFrame; -import com.dfsek.terra.registry.config.FunctionRegistry; -import com.dfsek.terra.registry.config.LootRegistry; -import com.dfsek.terra.registry.config.ScriptRegistry; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index b3ff81c62..dbb6d8806 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -1,9 +1,10 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -34,12 +35,12 @@ public abstract class AbstractBlockFunction implements Function { } void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockData rot) { - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 54eb7e280..ba459a624 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -11,7 +12,7 @@ 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.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; import java.util.Map; @@ -35,13 +36,13 @@ public class BiomeFunction implements Function { public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); BiomeProvider grid = main.getWorld(arguments.getBuffer().getOrigin().getWorld()).getBiomeProvider(); - return ((UserDefinedBiome) grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))))).getID(); + return ((UserDefinedBiome) grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))))).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java index 22f82b720..c97c1c84f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 546ac15f0..eb73a66e3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -29,11 +30,11 @@ public class CheckBlockFunction implements Function { public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString(); + String data = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index fee00e6c6..94d873fdf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -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.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -13,7 +14,7 @@ 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.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.SamplerCache; @@ -42,11 +43,11 @@ public class CheckFunction implements Function { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getBuffer().getOrigin().getWorld()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java index 080848345..2a977d0b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index b8b9f8d1b..4708a45e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -1,9 +1,10 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -37,11 +38,11 @@ public class EntityFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ()).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3Impl(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ()).toLocation(arguments.getBuffer().getOrigin().getWorld())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index df67e3e2c..b033b486e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -27,10 +28,10 @@ public class GetMarkFunction implements Function { @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + String mark = arguments.getBuffer().getMark(new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); return mark == null ? "" : mark; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index ddbc064cd..bf4a9968d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; @@ -40,7 +41,7 @@ public class LootFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); @@ -52,7 +53,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 059aca0fa..528d4ebea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -1,9 +1,10 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -36,12 +37,12 @@ public class PullFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); BlockData rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index 75beae39b..e1e81034c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -29,11 +30,11 @@ public class SetMarkFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index 4e2e2c276..d2792fe9c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -33,10 +34,10 @@ public class StateFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index c0378d60e..63b64c399 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -1,8 +1,10 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -50,7 +52,7 @@ public class StructureFunction implements Function { if(arguments.getRecursions() > main.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); @@ -70,7 +72,7 @@ public class StructureFunction implements Function { return null; } - Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); + Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); return script.executeInBuffer(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java index 1d77977d3..7a1c0e33c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java @@ -1,16 +1,16 @@ package com.dfsek.terra.api.structures.structure; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Directional; -import com.dfsek.terra.api.platform.block.data.MultipleFacing; -import com.dfsek.terra.api.platform.block.data.Orientable; -import com.dfsek.terra.api.platform.block.data.Rail; -import com.dfsek.terra.api.platform.block.data.RedstoneWire; -import com.dfsek.terra.api.platform.block.data.Rotatable; -import com.dfsek.terra.api.platform.block.data.Wall; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Directional; +import com.dfsek.terra.api.block.data.MultipleFacing; +import com.dfsek.terra.api.block.data.Orientable; +import com.dfsek.terra.api.block.data.Rail; +import com.dfsek.terra.api.block.data.RedstoneWire; +import com.dfsek.terra.api.block.data.Rotatable; +import com.dfsek.terra.api.block.data.Wall; import com.google.common.collect.Sets; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java index 319534b78..76366bd1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.math.vector.Location; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; public interface Buffer { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index faf4860ab..68205f5ba 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.math.vector.Location; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; import com.dfsek.terra.api.util.GlueList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 40881ec0c..94f65b889 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.math.vector.Location; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 34250571f..439d91585 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; public class IntermediateBuffer implements Buffer { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 7b4e49a2e..ff2d3f9a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 9507edd15..b547eca97 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.data.Waterlogged; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.data.Waterlogged; public class BufferedBlock implements BufferedItem { private final BlockData data; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index fc90123ce..22735a5bb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -2,9 +2,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; public class BufferedEntity implements BufferedItem { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java index 7d6ddef2c..87ed8f65d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; public interface BufferedItem { void paste(Location origin); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 89e534449..e1ab11b32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -2,10 +2,10 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.state.BlockState; -import com.dfsek.terra.api.platform.block.state.Container; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index e82a061d8..9df3b44fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; public class BufferedPulledBlock implements BufferedItem { private final BlockData data; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 158f1a951..ab81b3225 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.state.BlockState; public class BufferedStateManipulator implements BufferedItem { private final TerraPlugin main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java index efd409194..718e822e5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.transform; +import com.dfsek.terra.api.transform.exception.TransformException; + import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transformer.java b/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/Transformer.java rename to common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java index efd801dd8..43287fc64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/Transformer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java @@ -1,5 +1,8 @@ package com.dfsek.terra.api.transform; +import com.dfsek.terra.api.transform.exception.AttemptsFailedException; +import com.dfsek.terra.api.transform.exception.TransformException; + import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashMap; @@ -12,19 +15,14 @@ import java.util.Map; * @param Data type to transform from. * @param Data type to transform to. */ -public class Transformer { +public class TransformerImpl implements Transformer { private final LinkedHashMap, List>> transformers; - private Transformer(LinkedHashMap, List>> transformer) { + private TransformerImpl(LinkedHashMap, List>> transformer) { this.transformers = transformer; } - /** - * Translate data from {@code from} type to {@code to} type. - * - * @param from Data to translate - * @return Result - */ + @Override public T translate(F from) { List exceptions = new ArrayList<>(); for(Map.Entry, List>> transform : transformers.entrySet()) { @@ -59,8 +57,8 @@ public class Transformer { return this; } - public Transformer build() { - return new Transformer<>(transforms); + public TransformerImpl build() { + return new TransformerImpl<>(transforms); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java index 77099137e..cbfe1d165 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util.collections; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import java.util.Arrays; import java.util.HashSet; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java index f9ec64992..6542c6b47 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.util.collections; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.mutable.MutableInteger; import org.jetbrains.annotations.NotNull; @@ -16,11 +17,12 @@ import java.util.Set; import java.util.function.Function; @SuppressWarnings("unchecked") -public class ProbabilityCollection implements Collection { +public class ProbabilityCollectionImpl implements ProbabilityCollection { protected final Map cont = new HashMap<>(); private Object[] array = new Object[0]; private int size; + @Override public ProbabilityCollection add(E item, int probability) { if(!cont.containsKey(item)) size++; cont.computeIfAbsent(item, i -> new MutableInteger(0)).increment(); @@ -32,23 +34,27 @@ public class ProbabilityCollection implements Collection { return this; } + @Override public E get(Random r) { if(array.length == 0) return null; return (E) array[r.nextInt(array.length)]; } + @Override public E get(NoiseSampler n, double x, double y, double z) { if(array.length == 0) return null; return (E) array[MathUtil.normalizeIndex(n.getNoise(x, y, z), array.length)]; } + @Override public E get(NoiseSampler n, double x, double z) { if(array.length == 0) return null; return (E) array[MathUtil.normalizeIndex(n.getNoise(x, z), array.length)]; } + @Override public ProbabilityCollection map(Function mapper, boolean carryNull) { - ProbabilityCollection newCollection = new ProbabilityCollection<>(); + ProbabilityCollectionImpl newCollection = new ProbabilityCollectionImpl<>(); newCollection.array = new Object[array.length]; for(int i = 0; i < array.length; i++) { @@ -58,10 +64,12 @@ public class ProbabilityCollection implements Collection { return newCollection; } + @Override public int getTotalProbability() { return array.length; } + @Override public int getProbability(E item) { MutableInteger integer = cont.get(item); return integer == null ? 0 : integer.get(); @@ -151,11 +159,12 @@ public class ProbabilityCollection implements Collection { array = new Object[0]; } + @Override public Set getContents() { return new HashSet<>(cont.keySet()); } - public static final class Singleton extends ProbabilityCollection { + public static final class Singleton extends ProbabilityCollectionImpl { private final T single; public Singleton(T single) { @@ -164,12 +173,12 @@ public class ProbabilityCollection implements Collection { } @Override - public ProbabilityCollection add(T item, int probability) { + public ProbabilityCollectionImpl add(T item, int probability) { throw new UnsupportedOperationException(); } @Override - public ProbabilityCollection map(Function mapper, boolean carryNull) { + public ProbabilityCollectionImpl map(Function mapper, boolean carryNull) { if(carryNull && single == null) return new Singleton<>(null); return new Singleton<>(mapper.apply(single)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java index 4668c38a4..23fedb47a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.seeded; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; public interface NoiseSeeded extends SeededBuilder { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java index 5ec6f4511..5f1d03f95 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java +++ b/common/implementation/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.api.world.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @FunctionalInterface public interface SourceSeeded extends SeededBuilder { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java index 02ebbe181..7fb160c4c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java +++ b/common/implementation/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.api.world.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; @FunctionalInterface public interface StageSeeded extends SeededBuilder { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index d79fe1e9a..a8416b8a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.world; -import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.templates.BiomeTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java index a1805d437..18ebe5f0a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util.world; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.FastRandom; public final class PopulationUtil { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java index b6e5d9570..6dcbe2d09 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java @@ -1,8 +1,7 @@ package com.dfsek.terra.api.world.biome; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.WorldGenerator; @@ -13,14 +12,14 @@ import java.util.Set; */ public class UserDefinedBiome implements TerraBiome { private final WorldGenerator gen; - private final ProbabilityCollection vanilla; + private final ProbabilityCollectionImpl vanilla; private final String id; private final BiomeTemplate config; private final int color; private final Set tags; - public UserDefinedBiome(ProbabilityCollection vanilla, WorldGenerator gen, BiomeTemplate config) { + public UserDefinedBiome(ProbabilityCollectionImpl vanilla, WorldGenerator gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); @@ -36,7 +35,7 @@ public class UserDefinedBiome implements TerraBiome { * @return Collection of biomes to represent the custom biome. */ @Override - public ProbabilityCollection getVanillaBiomes() { + public ProbabilityCollectionImpl getVanillaBiomes() { return vanilla; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java index df07577c0..e39e5771a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java @@ -1,18 +1,19 @@ package com.dfsek.terra.api.world.biome.pipeline; -import com.dfsek.terra.api.math.vector.Vector2; +import com.dfsek.terra.api.vector.Vector2; 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; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -public class TerraBiomeHolder implements BiomeHolder { +public class BiomeHolderImpl implements BiomeHolder { private final Vector2 origin; private final int width; private TerraBiome[][] biomes; private final int offset; - public TerraBiomeHolder(int width, Vector2 origin) { + public BiomeHolderImpl(int width, Vector2 origin) { width += 4; this.width = width; biomes = new TerraBiome[width][width]; @@ -20,7 +21,7 @@ public class TerraBiomeHolder implements BiomeHolder { this.offset = 2; } - private TerraBiomeHolder(TerraBiome[][] biomes, Vector2 origin, int width, int offset) { + private BiomeHolderImpl(TerraBiome[][] biomes, Vector2 origin, int width, int offset) { this.biomes = biomes; this.origin = origin; this.width = width; @@ -45,7 +46,7 @@ public class TerraBiomeHolder implements BiomeHolder { biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), old[x][z], old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); } } - return new TerraBiomeHolder(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); + return new BiomeHolderImpl(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java index ed4211892..cc6684316 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java @@ -1,21 +1,22 @@ package com.dfsek.terra.api.world.biome.pipeline; -import com.dfsek.terra.api.math.vector.Vector2; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; import java.util.List; import java.util.stream.Collectors; -public class BiomePipeline { +public class BiomePipelineImpl { private final BiomeSource source; private final List stages; private final int size; private final int init; - private BiomePipeline(BiomeSource source, List stages, int size, int init) { + private BiomePipelineImpl(BiomeSource source, List stages, int size, int init) { this.source = source; this.stages = stages; this.size = size; @@ -30,7 +31,7 @@ public class BiomePipeline { * @return BiomeHolder containing biomes. */ public BiomeHolder getBiomes(int x, int z) { - BiomeHolder holder = new TerraBiomeHolder(init, new Vector2(x * (init - 1), z * (init - 1))); + BiomeHolder holder = new BiomeHolderImpl(init, new Vector2Impl(x * (init - 1), z * (init - 1))); holder.fill(source); for(Stage stage : stages) holder = stage.apply(holder); return holder; @@ -50,14 +51,14 @@ public class BiomePipeline { expand = init; } - public BiomePipeline build(BiomeSource source, long seed) { + public BiomePipelineImpl build(BiomeSource source, long seed) { List stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.apply(seed)).collect(Collectors.toList()); for(Stage stage : stagesBuilt) { if(stage.isExpansion()) expand = expand * 2 - 1; } - return new BiomePipeline(source, stagesBuilt, expand, init); + return new BiomePipelineImpl(source, stagesBuilt, expand, init); } public BiomePipelineBuilder addStage(StageSeeded stage) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java index a7d44be84..18179b82d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java @@ -1,8 +1,9 @@ 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.api.util.MathUtil; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; public class FractalExpander implements BiomeExpander { private final NoiseSampler sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java index d16016d91..97b37dde1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java @@ -1,19 +1,20 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import java.util.Map; public class BorderListMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollection replaceDefault; + private final ProbabilityCollectionImpl replaceDefault; private final String defaultReplace; - private final Map> replace; + private final Map> replace; - public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollectionImpl replaceDefault) { this.border = border; this.noiseSampler = noiseSampler; this.replaceDefault = replaceDefault; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java index d6195c7a4..039f7d3af 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java @@ -1,16 +1,17 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class BorderMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollection replace; + private final ProbabilityCollectionImpl replace; private final String replaceTag; - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollectionImpl replace) { this.border = border; this.noiseSampler = noiseSampler; this.replace = replace; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java index 8d701109a..84e6fa715 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,18 +1,19 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import java.util.Map; public class ReplaceListMutator implements BiomeMutator { - private final Map> replace; + private final Map> replace; private final NoiseSampler sampler; - private final ProbabilityCollection replaceDefault; + private final ProbabilityCollectionImpl replaceDefault; private final String defaultTag; - public ReplaceListMutator(Map> replace, String defaultTag, ProbabilityCollection replaceDefault, NoiseSampler sampler) { + public ReplaceListMutator(Map> replace, String defaultTag, ProbabilityCollectionImpl replaceDefault, NoiseSampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java index 7bc705b66..9b40f8b2d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java @@ -1,15 +1,16 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; - private final ProbabilityCollection replace; + private final ProbabilityCollectionImpl replace; private final NoiseSampler sampler; - public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { + public ReplaceMutator(String replaceable, ProbabilityCollectionImpl replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java index a3c679ea1..35a5f7ba8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java @@ -1,8 +1,9 @@ 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.api.util.MathUtil; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import java.util.Objects; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java index fa95986b4..0a64c1ba0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java @@ -1,14 +1,15 @@ package com.dfsek.terra.api.world.biome.pipeline.source; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class RandomSource implements BiomeSource { - private final ProbabilityCollection biomes; + private final ProbabilityCollectionImpl biomes; private final NoiseSampler sampler; - public RandomSource(ProbabilityCollection biomes, NoiseSampler sampler) { + public RandomSource(ProbabilityCollectionImpl biomes, NoiseSampler sampler) { this.biomes = biomes; this.sampler = sampler; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java index fc0555e19..9285b4021 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.world.biome.pipeline.stages; -import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.pipeline.expand.BiomeExpander; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; public class ExpanderStage implements Stage { private final BiomeExpander expander; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java index a9b060fd1..af2851538 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.world.biome.pipeline.stages; -import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class MutatorStage implements Stage { private final BiomeMutator mutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java deleted file mode 100644 index a179da2eb..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java +++ /dev/null @@ -1,10 +0,0 @@ -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/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java index 5e210abc7..eb52315d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.biome.provider; -import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.registry.OpenRegistry; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java index 6dc103cd6..3de31fb34 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class SingleBiomeProvider implements BiomeProvider, BiomeProvider.BiomeProviderBuilder { private final TerraBiome biome; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java index 397cbe7a4..ac5633e90 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java @@ -1,11 +1,13 @@ package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.vector.Vector2; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.vector.Vector2Impl; 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.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -14,13 +16,13 @@ import org.jetbrains.annotations.NotNull; public class StandardBiomeProvider implements BiomeProvider { private final LoadingCache holderCache; - private final BiomePipeline pipeline; + private final BiomePipelineImpl pipeline; private final int resolution; private final NoiseSampler mutator; private final double noiseAmp; private final int seed; - public StandardBiomeProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp, int seed) { + public StandardBiomeProvider(BiomePipelineImpl pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp, int seed) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; @@ -50,6 +52,6 @@ public class StandardBiomeProvider implements BiomeProvider { int fdX = FastMath.floorDiv(x, pipeline.getSize()); int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.getUnchecked(new Vector2(fdX, fdZ)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); + return holderCache.getUnchecked(new Vector2Impl(fdX, fdZ)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java index c0b21ae26..e62560d54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.carving; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java index cfeadc836..2430150d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.world.carving; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.Random; @@ -97,12 +98,12 @@ public abstract class Worm { for(int z = -zRad - 1; z <= zRad + 1; z++) { if(!(FastMath.floorDiv(origin.getBlockZ() + z, 16) == chunkZ)) continue; for(int y = -yRad - 1; y <= yRad + 1; y++) { - Vector3 position = origin.clone().add(new Vector3(x, y, z)); + Vector3 position = origin.clone().add(new Vector3Impl(x, y, z)); if(position.getY() < world.getMinHeight() || position.getY() > world.getMaxHeight()) continue; double eq = ellipseEquation(x, y, z, xRad, yRad, zRad); if(eq <= 1 && y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { - consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); + consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); } else if(eq <= 1.5) { Carver.CarvingType type = Carver.CarvingType.WALL; if(y <= -yRad - 1 + bottomCut) { @@ -110,7 +111,7 @@ public abstract class Worm { } else if(y >= yRad + 1 - topCut) { type = Carver.CarvingType.TOP; } - consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); + consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java index 82d57f9b0..3abd739c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.world.flora; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.world.Chunk; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java index 1d0e47577..8ee6659cd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.generation; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; public interface TerraBlockPopulator { void populate(World world, Chunk chunk); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java index 345e32c61..3ccb98191 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.world.generation; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.BiomeGrid; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkData; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.BiomeGrid; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.world.generation.math.samplers.Sampler; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index c41892b12..d5355509b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index 31b2dec6b..f5d905511 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.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.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -66,7 +67,7 @@ public abstract class AsyncFeatureFinder implements Runnable { run++; toggle = !toggle; } - Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; + Vector3 finalSpawn = found ? finalizeVector(new Vector3Impl(x, 0, z)) : null; callback.accept(finalSpawn); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 2686fb2db..8bb5cabe5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; 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.biome.generation.BiomeProvider; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index f8d3b20a6..4f1ce92c6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.block.BlockData; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java index fb367c191..c16fc737a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.util.List; import java.util.Random; @@ -29,7 +29,7 @@ public abstract class Palette { return this; } - public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { + public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollectionImpl m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { pallet.add(new PaletteLayer(m, sampler)); } @@ -58,7 +58,7 @@ public abstract class Palette { */ public static class PaletteLayer { private final boolean col; // Is layer using a collection? - private ProbabilityCollection collection; + private ProbabilityCollectionImpl collection; private final NoiseSampler sampler; private BlockData m; @@ -68,7 +68,7 @@ public abstract class Palette { * @param type The collection of materials to choose from. * @param sampler Noise sampler to use */ - public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { + public PaletteLayer(ProbabilityCollectionImpl type, NoiseSampler sampler) { this.sampler = sampler; this.col = true; this.collection = type; @@ -106,7 +106,7 @@ public abstract class Palette { return m; } - public ProbabilityCollection getCollection() { + public ProbabilityCollectionImpl getCollection() { return collection; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java index 7b2db1fe2..8bba80e14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; public class SinglePalette extends Palette { private final BlockData item; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index cb44e8fb4..38510d148 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -1,23 +1,23 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { - private final ProbabilityCollection layer; + private final ProbabilityCollectionImpl layer; private final NoiseSampler sampler; private final int size; - public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { + public PaletteLayerHolder(@NotNull ProbabilityCollectionImpl layer, NoiseSampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; } @NotNull - public ProbabilityCollection getLayer() { + public ProbabilityCollectionImpl getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index 096635943..79b2fdc71 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -1,14 +1,14 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.carving.Worm; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -36,7 +36,7 @@ public class CarverCache { if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); Random r = new FastRandom(seed); - Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); + Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); List points = new GlueList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 73e302e70..2ad5fc437 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -1,9 +1,9 @@ package com.dfsek.terra.carving; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import java.util.Map; @@ -13,8 +13,8 @@ import java.util.TreeMap; public class CarverPalette { private final boolean blacklist; private final MaterialSet replace; - private final TreeMap> map = new TreeMap<>(); - private ProbabilityCollection[] layers; + private final TreeMap> map = new TreeMap<>(); + private ProbabilityCollectionImpl[] layers; private int offset = 0; public CarverPalette(MaterialSet replaceable, boolean blacklist) { @@ -22,12 +22,12 @@ public class CarverPalette { this.replace = replaceable; } - public CarverPalette add(ProbabilityCollection collection, int y) { + public CarverPalette add(ProbabilityCollectionImpl collection, int y) { map.put(y, collection); return this; } - public ProbabilityCollection get(int y) { + public ProbabilityCollectionImpl get(int y) { int index = y + offset; return index >= 0 ? index < layers.length @@ -47,10 +47,10 @@ public class CarverPalette { int min = FastMath.min(map.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(map.keySet().stream().max(Integer::compareTo).orElse(255), 255); - layers = new ProbabilityCollection[map.lastKey() + 1 - min]; + layers = new ProbabilityCollectionImpl[map.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { - ProbabilityCollection d = null; - for(Map.Entry> e : map.entrySet()) { + ProbabilityCollectionImpl d = null; + for(Map.Entry> e : map.entrySet()) { if(e.getKey() >= y) { d = e.getValue(); break; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 3da18626a..5610fa151 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -9,8 +9,9 @@ import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.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; @@ -154,7 +155,7 @@ public class UserDefinedCarver extends Carver { this.seed = seed; super.setTopCut(topCut); super.setBottomCut(bottomCut); - direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); + direction = new Vector3Impl((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); double[] args = {origin.getX(), origin.getY(), origin.getZ(), length, 0, seed}; setRadius(new int[] {(int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args))}); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java index d775de66b..abb1a746c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; @Command( usage = "/terra addons" diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java index a9e327d08..3d2e3423a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java @@ -3,7 +3,6 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.commands.biome.BiomeCommand; -import com.dfsek.terra.commands.geometry.GeometryCommand; import com.dfsek.terra.commands.profiler.ProfileCommand; import com.dfsek.terra.commands.structure.StructureCommand; @@ -17,6 +16,5 @@ public final class CommandUtil { manager.register("getblock", GetBlockCommand.class); manager.register("packs", PacksCommand.class); manager.register("biome", BiomeCommand.class); - manager.register("geometry", GeometryCommand.class); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index a57dd75f2..ddad92d6a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -7,8 +7,8 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; @WorldCommand @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index 875ca8ea1..fc71ccad2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.pack.ConfigPack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java index e78909c04..dc7f1faf0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java index 7e8521b1c..0fcb6f4b4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java index 8871f736c..b427e5526 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java @@ -7,10 +7,10 @@ import com.dfsek.terra.api.command.annotation.Subcommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java index b1d0ffe1b..307cebccc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index b6ef00483..bad1ab4c2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -11,10 +11,10 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; @@ -67,7 +67,7 @@ public class BiomeLocateCommand implements CommandTemplate { new Thread(new AsyncBiomeFinder(main.getWorld(player.getWorld()).getBiomeProvider(), biome, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); if(teleport) { main.runPossiblyUnsafeTask(() -> player.setLocation(new Location(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java index 7931b30be..b7c93e9e5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.biome.arg; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.biome.TerraBiome; public class BiomeArgumentParser implements ArgumentParser { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java index 4476e3613..4532063e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.biome.tab; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java deleted file mode 100644 index 46ce84559..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/DeformedSphereCommand.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.dfsek.terra.commands.geometry; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.arg.DoubleArgumentParser; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.math.voxel.DeformedSphere; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; - -import java.util.concurrent.ThreadLocalRandom; - -@DebugCommand -@PlayerCommand -@Command( - arguments = { - @Argument( - value = "radius", - argumentParser = IntegerArgumentParser.class - ), - @Argument( - value = "deform", - argumentParser = DoubleArgumentParser.class - ), - @Argument( - value = "frequency", - argumentParser = DoubleArgumentParser.class - ) - }, - usage = "/terra geometry deformedsphere " -) -public class DeformedSphereCommand implements CommandTemplate { - @ArgumentTarget("radius") - private Integer radius; - - @ArgumentTarget("deform") - private Double deform; - - @ArgumentTarget("frequency") - private Double frequency; - - @Inject - private TerraPlugin main; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - OpenSimplex2Sampler noise = new OpenSimplex2Sampler(ThreadLocalRandom.current().nextInt()); - noise.setFrequency(frequency); - - DeformedSphere sphere = new DeformedSphere(player.getLocation().toVector(), radius, deform, noise); - for(Vector3 v : sphere.getGeometry()) { - v.toLocation(player.getWorld()).getBlock().setBlockData(main.getWorldHandle().createBlockData("minecraft:stone"), false); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java deleted file mode 100644 index d41bc8506..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/GeometryCommand.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.commands.geometry; - -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Subcommand; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.config.lang.LangUtil; - - -@DebugCommand -@PlayerCommand -@Command( - subcommands = { - @Subcommand( - value = "sphere", - clazz = SphereCommand.class, - aliases = {"s"} - ), - @Subcommand( - value = "deformedsphere", - clazz = DeformedSphereCommand.class, - aliases = {"df"} - ), - @Subcommand( - value = "tube", - clazz = TubeCommand.class, - aliases = {"t"} - ) - }, - usage = "/terra geometry" -) -public class GeometryCommand implements CommandTemplate { - @Override - public void execute(CommandSender sender) { - LangUtil.send("command.geometry.main-menu", sender); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java deleted file mode 100644 index 7d8586e6a..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/SphereCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.commands.geometry; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.math.voxel.Sphere; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; - -@DebugCommand -@PlayerCommand -@Command( - arguments = { - @Argument( - value = "radius", - argumentParser = IntegerArgumentParser.class - ) - }, - usage = "/terra geometry sphere " -) -public class SphereCommand implements CommandTemplate { - @ArgumentTarget("radius") - private Integer radius; - - @Inject - private TerraPlugin main; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - Sphere sphere = new Sphere(player.getLocation().toVector(), radius); - for(Vector3 v : sphere.getGeometry()) { - v.toLocation(player.getWorld()).getBlock().setBlockData(main.getWorldHandle().createBlockData("minecraft:stone"), false); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java deleted file mode 100644 index b24694762..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/geometry/TubeCommand.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dfsek.terra.commands.geometry; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.math.voxel.Tube; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.api.util.generic.pair.Pair; - -@DebugCommand -@PlayerCommand -@Command( - arguments = { - @Argument( - value = "radius", - argumentParser = IntegerArgumentParser.class - ) - }, - usage = "/terra geometry tube " -) -public class TubeCommand implements CommandTemplate { - @ArgumentTarget("radius") - private Integer radius; - - @Inject - private TerraPlugin main; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - Pair locations = main.getWorldHandle().getSelectedLocation(player); - - Tube tube = new Tube(locations.getLeft().toVector(), locations.getRight().toVector(), radius); - - for(Vector3 v : tube.getGeometry()) { - v.toLocation(player.getWorld()).getBlock().setBlockData(main.getWorldHandle().createBlockData("minecraft:stone"), false); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java index c81164363..6a7909793 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.command.annotation.Subcommand; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java index eb54976e5..11adde655 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java index 2e5a97d6d..65c713414 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java index 63c28c472..cd84a470f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java index baa5aeab3..bc1752321 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 490de66b4..73e9351b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -7,9 +7,9 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.functions.CheckFunction; @@ -40,7 +40,7 @@ public class SpawnCommand implements CommandTemplate { Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new com.dfsek.terra.api.math.vector.Location(player.getWorld(), x, y, z) + new Location(player.getWorld(), x, y, z) ), Rotation.NONE, new FastRandom(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java index ad095ac70..fa44f2e08 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java @@ -3,7 +3,7 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 47dd42a25..37b3cf7c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -9,13 +9,13 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.state.BlockState; -import com.dfsek.terra.api.platform.block.state.Sign; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import java.io.BufferedWriter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index dfd22addf..0ff923ab3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -12,8 +12,8 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.util.FastRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index 0e04c3ec4..17eea5e15 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -11,10 +11,10 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.commands.structure.argument.StructureArgumentParser; import com.dfsek.terra.commands.structure.completer.StructureCompleter; @@ -65,7 +65,7 @@ public class StructureLocateCommand implements CommandTemplate { new Thread(new AsyncStructureFinder(main.getWorld(player.getWorld()).getBiomeProvider(), structure, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); if(teleport) { main.runPossiblyUnsafeTask(() -> player.setLocation(new Location(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index f7d23dee8..81a7a28cb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.script.StructureScript; public class ScriptArgumentParser implements ArgumentParser { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java index cf8b3378f..16f31becd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.world.population.items.TerraStructure; public class StructureArgumentParser implements ArgumentParser { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java index 3bfed746d..3adf7e09b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java @@ -1,7 +1,7 @@ package com.dfsek.terra.commands.structure.completer; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.Arrays; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index 81e6eba02..70ae70723 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.script.StructureScript; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java index cebfa20ab..31f4e3519 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 5667a8efb..d6f891731 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -3,20 +3,20 @@ package com.dfsek.terra.config; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.samplers.ImageSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.noise.samplers.ImageSampler; +import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; 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.generation.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; @@ -69,7 +69,7 @@ public class GenericLoaders implements LoaderRegistrar { @Override public void register(TypeRegistry registry) { - registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) + registry.registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java index f29a06c7c..2e8accd13 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java @@ -1,13 +1,13 @@ package com.dfsek.terra.config.builder; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.templates.BiomeTemplate; public interface BiomeBuilder extends SeededBuilder { - ProbabilityCollection getVanillaBiomes(); + ProbabilityCollectionImpl getVanillaBiomes(); BiomeTemplate getTemplate(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 5dca280c9..1ea9dbeff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -2,11 +2,11 @@ package com.dfsek.terra.config.builder; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.ExpressionSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.ExpressionSampler; +import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; @@ -63,7 +63,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { } @Override - public ProbabilityCollection getVanillaBiomes() { + public ProbabilityCollectionImpl getVanillaBiomes() { return template.getVanilla(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 26082be6a..d6f1441d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,13 +1,13 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; public class DummyWorld implements World { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java index e572f3e6c..dc044c062 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.CarverTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 78c2c288a..0fcb02d78 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java index be6ea19d9..0fb8d13e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.world.population.items.ores.DeformedSphereOre; import com.dfsek.terra.world.population.items.ores.Ore; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java index 6e57002dc..f03c86d16 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.world.population.items.tree.TerraTree; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 87f24b13e..d11d1e15f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.util.logging.Logger; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java index 2b5836391..782eee0c7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.tectonic.config.Configuration; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.io.File; import java.io.FileInputStream; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java index 20ac16c14..3fa11e901 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.lang; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.logging.Level; import java.util.logging.Logger; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java index 2d9ef1c12..8cf574425 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.lang; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.Arrays; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java index f397dae50..23753cff0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.lang; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import java.util.Arrays; import java.util.logging.Level; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index a98ca9837..5fa0125bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 050281b4d..b5bd6b5d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -11,10 +11,10 @@ import java.util.List; import java.util.Map; @SuppressWarnings("unchecked") -public class ProbabilityCollectionLoader implements TypeLoader> { +public class ProbabilityCollectionLoader implements TypeLoader> { @Override - public ProbabilityCollection load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - ProbabilityCollection collection = new ProbabilityCollection<>(); + public ProbabilityCollectionImpl load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + ProbabilityCollectionImpl collection = new ProbabilityCollectionImpl<>(); if(type instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) type; @@ -34,7 +34,7 @@ public class ProbabilityCollectionLoader implements TypeLoader(configLoader.loadType(generic, o)); + return new ProbabilityCollectionImpl.Singleton<>(configLoader.loadType(generic, o)); } else { throw new LoadException("Malformed Probability Collection: " + o); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index 595728d60..ba1c05778 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.flora.Flora; @@ -28,11 +28,11 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private ProbabilityCollection blockDataProbabilityCollection; - private ProbabilityCollection floraProbabilityCollection; - private ProbabilityCollection treeProbabilityCollection; - private ProbabilityCollection terraBiomeProbabilityCollection; - private Map> terraBiomeProbabilityCollectionMap; + private ProbabilityCollectionImpl blockDataProbabilityCollection; + private ProbabilityCollectionImpl floraProbabilityCollection; + private ProbabilityCollectionImpl treeProbabilityCollection; + private ProbabilityCollectionImpl terraBiomeProbabilityCollection; + private Map> terraBiomeProbabilityCollectionMap; private static Type getType(String dummyFieldName) { try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 719bf9b91..837d2cd75 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.config.loaders.Types; @@ -23,7 +23,7 @@ public class FloraLayerLoader implements TypeLoader { double density = ((Number) map.get("density")).doubleValue(); Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Flora range unspecified"); - ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); NoiseSeeded sampler; if(map.containsKey("distribution")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 0b52d2d19..1ed99af7a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.platform.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.world.population.items.tree.TreeLayer; @@ -22,7 +22,7 @@ public class TreeLayerLoader implements TypeLoader { double density = ((Number) map.get("density")).doubleValue(); Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Tree range unspecified"); - ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); if(map.containsKey("distribution")) { NoiseSeeded noise = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java index 718d33907..4c65f11fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java +++ b/common/implementation/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.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.loaders.config.biome.templates.provider.BiomePipelineTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProviderTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java index 33f1dcd42..b1fab8212 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java @@ -3,13 +3,8 @@ 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.api.util.collections.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.world.biome.pipeline.source.RandomSource; -import com.dfsek.terra.config.loaders.Types; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.config.biome.templates.source.NoiseSourceTemplate; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java index 31f448553..fee9144db 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; -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.pipeline.BiomePipelineImpl; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; import java.util.List; @@ -30,9 +30,9 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { @Override public BiomeProvider build(long seed) { - BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); + BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); - BiomePipeline pipeline = biomePipelineBuilder.build(source.apply(seed), seed); + BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.apply(seed), seed); return new StandardBiomeProvider(pipeline, main, resolution, blend.apply(seed), blendAmp, (int) seed); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index 2b0799b87..a8f2597a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -3,10 +3,10 @@ package com.dfsek.terra.config.loaders.config.biome.templates.provider; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; 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.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProvider.BiomeProviderBuilder { @Value("resolution") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java index b66e25cba..0b957b2c6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.provider; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java index 525315454..7538dba0b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.provider; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.provider.SingleBiomeProvider; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java index 7df6255d0..d82d90c23 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.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.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.pipeline.source.RandomSource; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -12,7 +12,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private NoiseSeeded noise; @Value("biomes") - private ProbabilityCollection biomes; + private ProbabilityCollectionImpl biomes; @Override public BiomeSource apply(Long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java index cee30713b..b6c14f2b8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; public abstract class SourceTemplate implements ObjectTemplate, SourceSeeded { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java index 151eaedef..d588e736f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java +++ b/common/implementation/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.api.world.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java index fb396ddbc..1196f3043 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.expander; 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.api.world.biome.generation.pipeline.Stage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java index 76146a088..1ddcfbd11 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; 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.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderListMutator; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -19,15 +19,15 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { private String defaultReplace; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollectionImpl defaultTo; @Value("replace") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { - Map> replaceMap = new HashMap<>(); + Map> replaceMap = new HashMap<>(); replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.apply(seed), replacements.map(replacement -> replacement.apply(seed), true))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java index 5502a412f..f84f88265 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -15,7 +15,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private String replace; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollectionImpl to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java index 84283ffcc..46021e4e7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java +++ b/common/implementation/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.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.generation.pipeline.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.api.world.biome.generation.pipeline.Stage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public abstract class MutatorStageTemplate extends StageTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index d40eec7b4..12d21f964 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; 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.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -16,14 +16,14 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private String defaultFrom; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollectionImpl defaultTo; @Value("to") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { - Map> replaceMap = new HashMap<>(); + Map> replaceMap = new HashMap<>(); replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.apply(seed), biomeBuilders.map(builder -> builder.apply(seed), true))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java index fbe801fbf..d4a81b3e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -12,7 +12,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private String from; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollectionImpl to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java index a5c27c54a..c0bd1f3b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java index 3607c17e9..03b94a4f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.DomainWarpedSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings({"unused", "FieldMayBeFinal"}) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java index db2ced46e..e8f3c77e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.ImageSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.ImageSampler; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java index 0fc8db115..933aa3bf1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java @@ -4,8 +4,8 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.KernelSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.KernelSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java index 7914ec957..39836d59f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java index 90a53d277..73149b741 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java index ba4aa14a4..693cb1ef1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java index 90926aea6..fb4d26c00 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java @@ -8,9 +8,8 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.ExpressionFunction; -import com.dfsek.terra.api.math.paralithic.BlankFunction; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java index b15aa75cd..f426f1f62 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.GaborNoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.GaborNoiseSampler; public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java index 9fb123865..c8bcc8ed8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; @SuppressWarnings({"unused", "FieldMayBeFinal"}) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java index 9c1ab1cb2..e4c463743 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import java.util.function.Function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java index 155822003..f550b3e77 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.fractal.BrownianMotionSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.fractal.BrownianMotionSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java index 5a1bb3602..b4b9274e7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.samplers.noise.fractal.FractalNoiseFunction; +import com.dfsek.terra.api.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java index b0319155e..c59de2b11 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.fractal.PingPongSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.fractal.PingPongSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { @Value("ping-pong") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java index d74b34e91..fdebb63a4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.fractal.RidgedFractalSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.fractal.RidgedFractalSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java index 1701e8223..b8f0e65ed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.normalizer.ClampNormalizer; -import com.dfsek.terra.api.math.noise.normalizer.LinearNormalizer; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.normalizer.ClampNormalizer; +import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class ClampNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java index 42b7cb2f8..b1c8ad727 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.normalizer.LinearNormalizer; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class LinearNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java index cdc9cc48f..8f8bb308b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.normalizer.NormalNormalizer; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.normalizer.NormalNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class NormalNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java index 35ad8c7fe..af4f843f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.math.noise.normalizer.Normalizer; +import com.dfsek.terra.api.noise.normalizer.Normalizer; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index 696683dd5..e2fa6c247 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.config.Configuration; 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.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.Types; @@ -24,7 +24,7 @@ public class CarverPaletteLoader implements TypeLoader { CarverPalette palette = new CarverPalette((MaterialSet) configLoader.loadType(MaterialSet.class, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollectionImpl layer = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); palette.add(layer, (Integer) map.get("y")); } palette.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index 01a30a2e2..716570673 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.loaders.Types; @@ -18,7 +18,7 @@ public class PaletteLayerLoader implements TypeLoader { @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollectionImpl collection = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java index bfbdfc6fa..ed57d3fdb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java @@ -4,7 +4,6 @@ import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.tectonic.abstraction.AbstractConfigLoader; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.Configuration; -import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; @@ -21,7 +20,7 @@ import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index dd24def46..b710440e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/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.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index bfebcb717..d1b767d04 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index c3be03456..25eb3dfa3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.registry.OpenRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 6a355a3e6..ea91e851a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -9,14 +9,14 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.world.Biome; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; @@ -75,7 +75,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("vanilla") @Abstractable - private ProbabilityCollection vanilla; + private ProbabilityCollectionImpl vanilla; @Value("biome-noise") @Default @@ -302,7 +302,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return trees; } - public ProbabilityCollection getVanilla() { + public ProbabilityCollectionImpl getVanilla() { return vanilla; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index 96cdbde03..001adb36c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable; 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.BlockType; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.carving.CarverPalette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index 82de9a134..de58654fc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -4,8 +4,8 @@ import com.dfsek.tectonic.annotations.Abstractable; 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.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.world.population.items.ores.Ore; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java index e18ae2618..567a9896e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.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.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index a291ae3f9..0537fcea3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.util.List; @@ -19,7 +19,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem @Value("scripts") @Abstractable - private ProbabilityCollection structure; + private ProbabilityCollectionImpl structure; @Value("spawn.start") @Abstractable @@ -38,7 +38,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem return id; } - public ProbabilityCollection getStructures() { + public ProbabilityCollectionImpl getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 008d05d4f..5ae0ebb03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -5,13 +5,13 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate extends AbstractableTemplate { @Value("scripts") @Abstractable - private ProbabilityCollection structure; + private ProbabilityCollectionImpl structure; @Value("id") private String id; @@ -25,7 +25,7 @@ public class TreeTemplate extends AbstractableTemplate { @Abstractable private MaterialSet spawnable; - public ProbabilityCollection getStructures() { + public ProbabilityCollectionImpl getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 85323611b..85725d943 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -1,9 +1,11 @@ -package com.dfsek.terra.api.registry; +package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.registry.OpenRegistry; -import com.dfsek.terra.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.DuplicateEntryException; import java.lang.reflect.Type; import java.util.Collection; @@ -16,33 +18,19 @@ import java.util.function.Consumer; * * @param Type in registry */ -public class CheckedRegistry implements Registry { +public class CheckedRegistryImpl implements CheckedRegistry { private final OpenRegistry registry; - public CheckedRegistry(OpenRegistry registry) { + public CheckedRegistryImpl(OpenRegistry registry) { this.registry = registry; } - /** - * Add a value to this registry, checking whether it is present first. - * - * @param identifier Identifier to assign value. - * @param value Value to add. - * @throws DuplicateEntryException If an entry with the same identifier is already present. - */ + @Override public void add(String identifier, T value) throws DuplicateEntryException { registry.addChecked(identifier, value); } - /** - * Add a value to the registry, without checking presence beforehand. - *

- * Use of this method is generally discouraged, as it is bad practice to overwrite registry values. - * - * @param identifier Identifier to assign value. - * @param value Value to add. - * @deprecated Use of {@link #add(String, Object)} is encouraged. - */ + @Override @Deprecated public void addUnchecked(String identifier, T value) { registry.add(identifier, value); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java index 8889998b6..c98062a53 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java @@ -1,7 +1,8 @@ -package com.dfsek.terra.api.registry; +package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.terra.api.registry.Registry; import java.lang.reflect.Type; import java.util.Collection; @@ -14,10 +15,10 @@ import java.util.function.Consumer; * * @param Type in registry */ -public class LockedRegistry implements Registry { +public class LockedRegistryImpl implements Registry { private final Registry registry; - public LockedRegistry(Registry registry) { + public LockedRegistryImpl(Registry registry) { this.registry = registry; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java similarity index 79% rename from common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistry.java rename to common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 3cbe07b0a..82070af97 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -2,8 +2,8 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.DuplicateEntryException; import java.lang.reflect.Type; import java.util.Collection; @@ -19,15 +19,15 @@ import java.util.stream.Collectors; * Registry implementation with read/write access. For internal use only. * @param */ -public class OpenRegistry implements Registry { +public class OpenRegistryImpl implements OpenRegistry { private final Map> objects; private static final Entry NULL = new Entry<>(null); - public OpenRegistry() { + public OpenRegistryImpl() { objects = new HashMap<>(); } - protected OpenRegistry(Map> init) { + protected OpenRegistryImpl(Map> init) { this.objects = init; } @@ -39,29 +39,18 @@ public class OpenRegistry implements Registry { return obj; } - /** - * Add a value to this registry. - * - * @param identifier Identifier to assign value. - * @param value Value to add. - */ + @Override public boolean add(String identifier, T value) { return add(identifier, new Entry<>(value)); } - protected boolean add(String identifier, Entry value) { + public boolean add(String identifier, Entry value) { boolean exists = objects.containsKey(identifier); objects.put(identifier, value); return exists; } - /** - * Add a value to this registry, checking whether it is present first. - * - * @param identifier Identifier to assign value. - * @param value Value to add. - * @throws DuplicateEntryException If an entry with the same identifier is already present. - */ + @Override public void addChecked(String identifier, T value) throws DuplicateEntryException { if(objects.containsKey(identifier)) throw new DuplicateEntryException("Value with identifier \"" + identifier + "\" is already defined in registry."); @@ -107,9 +96,7 @@ public class OpenRegistry implements Registry { return dead; } - /** - * Clears all entries from the registry. - */ + @Override public void clear() { objects.clear(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 90dd2a4b4..2148949f3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -3,7 +3,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.carving.UserDefinedCarver; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index 65858b8ad..5ae64fabd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.registry.OpenRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java index 8c8e987aa..fbf9bedc8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.api.structures.loot.LootTable; -import com.dfsek.terra.registry.OpenRegistry; -public class LootRegistry extends OpenRegistry { +public class LootRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index ac0bc4b48..72752f96f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,13 +1,13 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.api.math.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.api.math.noise.samplers.noise.value.ValueSampler; +import com.dfsek.terra.api.noise.samplers.noise.random.GaussianNoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.PerlinSampler; +import com.dfsek.terra.api.noise.samplers.noise.simplex.SimplexSampler; +import com.dfsek.terra.api.noise.samplers.noise.value.ValueCubicSampler; +import com.dfsek.terra.api.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java index cc100ac3f..9812cf4da 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java @@ -1,6 +1,6 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.registry.OpenRegistry; public class TreeRegistry extends OpenRegistry { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index f2c50acfb..0f00a007c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -5,11 +5,11 @@ import com.dfsek.terra.addon.AddonPool; import com.dfsek.terra.addon.PreLoadAddon; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.injection.Injector; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; -import com.dfsek.terra.registry.OpenRegistry; -import com.dfsek.terra.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.registry.OpenRegistryImpl; import java.io.File; import java.io.IOException; @@ -18,11 +18,10 @@ import java.lang.reflect.InvocationTargetException; import java.util.logging.LogManager; import java.util.logging.Logger; -public class AddonRegistry extends OpenRegistry { +public class AddonRegistry extends OpenRegistryImpl { private final TerraPlugin main; public AddonRegistry(TerraPlugin main) { - this.main = main; } @@ -45,7 +44,7 @@ public class AddonRegistry extends OpenRegistry { } public boolean loadAll() { - Injector pluginInjector = new Injector<>(main); + InjectorImpl pluginInjector = new InjectorImpl<>(main); pluginInjector.addExplicitTarget(TerraPlugin.class); boolean valid = true; @@ -75,7 +74,7 @@ public class AddonRegistry extends OpenRegistry { addonLogger = LogManager.getLogManager().getLogger(logPrefix); } - Injector loggerInjector = new Injector<>(addonLogger); + InjectorImpl loggerInjector = new InjectorImpl<>(addonLogger); loggerInjector.addExplicitTarget(Logger.class); try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java rename to common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java index 8513e56d2..285a15080 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java @@ -1,12 +1,13 @@ -package com.dfsek.terra.api.math.vector; +package com.dfsek.terra.vector; import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.vector.Vector2; import net.jafama.FastMath; /** * oh yeah */ -public class Vector2 implements Cloneable { +public class Vector2Impl implements Vector2 { private double x; private double z; @@ -16,132 +17,84 @@ public class Vector2 implements Cloneable { * @param x X component * @param z Z component */ - public Vector2(double x, double z) { + public Vector2Impl(double x, double z) { this.x = x; this.z = z; } - /** - * Get X component - * - * @return X component - */ + @Override public double getX() { return x; } + @Override public Vector2 setX(double x) { this.x = x; return this; } - /** - * Get Z component - * - * @return Z component - */ + @Override public double getZ() { return z; } + @Override public Vector2 setZ(double z) { this.z = z; return this; } - /** - * Multiply X and Z components by a value. - * - * @param m Value to multiply - * @return Mutated vector, for chaining. - */ + @Override public Vector2 multiply(double m) { x *= m; z *= m; return this; } - /** - * Add this vector to another. - * - * @param other Vector to add - * @return Mutated vector, for chaining. - */ - public Vector2 add(Vector2 other) { + @Override + public Vector2 add(Vector2Impl other) { x += other.x; z += other.z; return this; } - /** - * Subtract a vector from this vector, - * - * @param other Vector to subtract - * @return Mutated vector, for chaining. - */ - public Vector2 subtract(Vector2 other) { + @Override + public Vector2 subtract(Vector2Impl other) { x -= other.x; z -= other.z; return this; } - /** - * Normalize this vector to length 1 - * - * @return Mutated vector, for chaining. - */ + @Override public Vector2 normalize() { divide(length()); return this; } - /** - * Divide X and Z components by a value. - * - * @param d Divisor - * @return Mutated vector, for chaining. - */ + @Override public Vector2 divide(double d) { x /= d; z /= d; return this; } - /** - * Get the length of this Vector - * - * @return length - */ + @Override public double length() { return FastMath.sqrt(lengthSquared()); } - /** - * Get the squared length of this Vector - * - * @return squared length - */ + @Override public double lengthSquared() { return x * x + z * z; } - /** - * Get the distance from this vector to another. - * - * @param other Another vector - * @return Distance between vectors - */ - public double distance(Vector2 other) { + @Override + public double distance(Vector2Impl other) { return FastMath.sqrt(distanceSquared(other)); } - /** - * Get the squared distance between 2 vectors. - * - * @param other Another vector - * @return Squared distance - */ - public double distanceSquared(Vector2 other) { + @Override + public double distanceSquared(Vector2Impl other) { double dx = other.x - x; double dz = other.z - z; return dx * dx + dz * dz; @@ -157,8 +110,8 @@ public class Vector2 implements Cloneable { @Override public boolean equals(Object obj) { - if(!(obj instanceof Vector2)) return false; - Vector2 other = (Vector2) obj; + if(!(obj instanceof Vector2Impl)) return false; + Vector2Impl other = (Vector2Impl) obj; return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z); } @@ -171,16 +124,19 @@ public class Vector2 implements Cloneable { } } + @Override public Vector2 add(double x, double z) { this.x += x; this.z += z; return this; } + @Override public int getBlockX() { return FastMath.floorToInt(x); } + @Override public int getBlockZ() { return FastMath.floorToInt(z); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java similarity index 53% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java rename to common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index b422a1019..2f1906941 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -1,65 +1,76 @@ -package com.dfsek.terra.api.math.vector; +package com.dfsek.terra.vector; import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; /** * 3D Mutable Vector */ -public class Vector3 implements Cloneable { - - +public class Vector3Impl implements Vector3 { private double x; private double y; private double z; - public Vector3(double x, double y, double z) { + public Vector3Impl(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } + @Override public double getZ() { return z; } + @Override public Vector3 setZ(double z) { this.z = z; return this; } + @Override public double getX() { return x; } + @Override public Vector3 setX(double x) { this.x = x; return this; } + @Override public double getY() { return y; } + @Override public Vector3 setY(double y) { this.y = y; return this; } + @Override public int getBlockX() { return FastMath.floorToInt(x); } + @Override public int getBlockY() { return FastMath.floorToInt(y); } + @Override public int getBlockZ() { return FastMath.floorToInt(z); } + @Override public Vector3 multiply(double m) { x *= m; y *= m; @@ -67,6 +78,7 @@ public class Vector3 implements Cloneable { return this; } + @Override public Vector3 add(double x, double y, double z) { this.x += x; this.y += y; @@ -74,6 +86,7 @@ public class Vector3 implements Cloneable { return this; } + @Override public Vector3 add(Vector3 other) { this.x += other.getX(); this.y += other.getY(); @@ -81,54 +94,43 @@ public class Vector3 implements Cloneable { return this; } + @Override public Vector3 add(Vector2 other) { this.x += other.getX(); this.z += other.getZ(); return this; } + @Override public double lengthSquared() { return x * x + y * y + z * z; } @Override - public Vector3 clone() { + public Vector3Impl clone() { try { - return (Vector3) super.clone(); + return (Vector3Impl) super.clone(); } catch(CloneNotSupportedException e) { throw new Error(e); } } + @Override public double length() { return FastMath.sqrt(lengthSquared()); } + @Override public double inverseLength() { return FastMath.invSqrtQuick(lengthSquared()); } - /** - * Returns if a vector is normalized - * - * @return whether the vector is normalised - */ + @Override public boolean isNormalized() { return MathUtil.equals(this.lengthSquared(), 1); } - /** - * Rotates the vector around the x axis. - *

- * This piece of math is based on the standard rotation matrix for vectors - * in three dimensional space. This matrix can be found here: - * Rotation - * Matrix. - * - * @param angle the angle to rotate the vector about. This angle is passed - * in radians - * @return the same vector - */ + @Override @NotNull public Vector3 rotateAroundX(double angle) { double angleCos = Math.cos(angle); @@ -139,18 +141,7 @@ public class Vector3 implements Cloneable { return setY(y).setZ(z); } - /** - * Rotates the vector around the y axis. - *

- * This piece of math is based on the standard rotation matrix for vectors - * in three dimensional space. This matrix can be found here: - * Rotation - * Matrix. - * - * @param angle the angle to rotate the vector about. This angle is passed - * in radians - * @return the same vector - */ + @Override @NotNull public Vector3 rotateAroundY(double angle) { double angleCos = Math.cos(angle); @@ -161,18 +152,7 @@ public class Vector3 implements Cloneable { return setX(x).setZ(z); } - /** - * Rotates the vector around the z axis - *

- * This piece of math is based on the standard rotation matrix for vectors - * in three dimensional space. This matrix can be found here: - * Rotation - * Matrix. - * - * @param angle the angle to rotate the vector about. This angle is passed - * in radians - * @return the same vector - */ + @Override @NotNull public Vector3 rotateAroundZ(double angle) { double angleCos = Math.cos(angle); @@ -183,74 +163,25 @@ public class Vector3 implements Cloneable { return setX(x).setY(y); } - /** - * Get the distance between this vector and another. The value of this - * method is not cached and uses a costly square-root function, so do not - * repeatedly call this method to get the vector's magnitude. NaN will be - * returned if the inner result of the sqrt() function overflows, which - * will be caused if the distance is too long. - * - * @param o The other vector - * @return the distance - */ - public double distance(@NotNull Vector3 o) { + @Override + public double distance(@NotNull Vector3Impl o) { return FastMath.sqrt(FastMath.pow2(x - o.x) + FastMath.pow2(y - o.y) + FastMath.pow2(z - o.z)); } - /** - * Get the squared distance between this vector and another. - * - * @param o The other vector - * @return the distance - */ - public double distanceSquared(@NotNull Vector3 o) { + @Override + public double distanceSquared(@NotNull Vector3Impl o) { return FastMath.pow2(x - o.x) + FastMath.pow2(y - o.y) + FastMath.pow2(z - o.z); } - /** - * Rotates the vector around a given arbitrary axis in 3 dimensional space. - * - *

- * Rotation will follow the general Right-Hand-Rule, which means rotation - * will be counterclockwise when the axis is pointing towards the observer. - *

- * This method will always make sure the provided axis is a unit vector, to - * not modify the length of the vector when rotating. - * - * @param axis the axis to rotate the vector around. If the passed vector is - * not of length 1, it gets copied and normalized before using it for the - * rotation. Please use {@link Vector3#normalize()} on the instance before - * passing it to this method - * @param angle the angle to rotate the vector around the axis - * @return the same vector - * @throws IllegalArgumentException if the provided axis vector instance is - * null - */ + @Override @NotNull public Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.clone().normalize(), angle); } - /** - * Rotates the vector around a given arbitrary axis in 3 dimensional space. - * - *

- * Rotation will follow the general Right-Hand-Rule, which means rotation - * will be counterclockwise when the axis is pointing towards the observer. - *

- * Note that the vector length will change accordingly to the axis vector - * length. If the provided axis is not a unit vector, the rotated vector - * will not have its previous length. The scaled length of the resulting - * vector will be related to the axis vector. - * - * @param axis the axis to rotate the vector around. - * @param angle the angle to rotate the vector around the axis - * @return the same vector - * @throws IllegalArgumentException if the provided axis vector instance is - * null - */ + @Override @NotNull - public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { + public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3Impl axis, double angle) throws IllegalArgumentException { double x = getX(), y = getY(), z = getZ(); double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); @@ -271,25 +202,22 @@ public class Vector3 implements Cloneable { return setX(xPrime).setY(yPrime).setZ(zPrime); } - /** - * Calculates the dot product of this vector with another. The dot product - * is defined as x1*x2+y1*y2+z1*z2. The returned value is a scalar. - * - * @param other The other vector - * @return dot product - */ - public double dot(@NotNull Vector3 other) { + @Override + public double dot(@NotNull Vector3Impl other) { return x * other.x + y * other.y + z * other.z; } + @Override public Location toLocation(World world) { return new Location(world, this.clone()); } + @Override public Vector3 normalize() { return this.multiply(this.inverseLength()); } + @Override public Vector3 subtract(int x, int y, int z) { this.x -= x; this.y -= y; @@ -297,7 +225,8 @@ public class Vector3 implements Cloneable { return this; } - public Vector3 subtract(Vector3 end) { + @Override + public Vector3 subtract(Vector3Impl end) { x -= end.x; y -= end.y; z -= end.z; @@ -328,8 +257,8 @@ public class Vector3 implements Cloneable { */ @Override public boolean equals(Object obj) { - if(!(obj instanceof Vector3)) return false; - Vector3 other = (Vector3) obj; + if(!(obj instanceof Vector3Impl)) return false; + Vector3Impl other = (Vector3Impl) obj; return MathUtil.equals(x, other.x) && MathUtil.equals(y, other.y) && MathUtil.equals(x, other.z); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java b/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java index 869abc92d..c8d13998a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world; -import com.dfsek.terra.api.platform.world.ChunkAccess; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.ChunkAccess; +import com.dfsek.terra.api.world.World; public interface Carver { void carve(World world, int chunkX, int chunkZ, ChunkAccess chunk); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java index a989d3906..c50065af0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -2,12 +2,12 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; -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.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.WorldConfig; 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 e325e7a0c..e3ee142fa 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 @@ -2,9 +2,9 @@ package com.dfsek.terra.world.carving; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.ChunkAccess; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.BlockData; +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.world.generation.math.interpolation.ChunkInterpolator3D; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java index f4b80c410..8fb83d9c4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java @@ -1,6 +1,6 @@ package com.dfsek.terra.world.generation; -import com.dfsek.terra.api.math.noise.NoiseSampler; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 4797ba463..d2e93ced2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -2,14 +2,14 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.BiomeGrid; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkData; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.BiomeGrid; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; 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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 678d3b2a6..6902852b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -2,21 +2,22 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.data.Bisected; -import com.dfsek.terra.api.platform.block.data.Slab; -import com.dfsek.terra.api.platform.block.data.Stairs; -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.ChunkData; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.data.Bisected; +import com.dfsek.terra.api.block.data.Slab; +import com.dfsek.terra.api.block.data.Stairs; +import com.dfsek.terra.api.block.data.Waterlogged; +import com.dfsek.terra.api.world.BiomeGrid; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; 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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; @@ -134,20 +135,20 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); if(paletteLevel == 0 && c.doSlabs() && y < 255) { - prepareBlockPartFloor(data, chunk.getBlockData(x, y + 1, z), chunk, new Vector3(x, y + 1, z), c.getSlabPalettes(), + prepareBlockPartFloor(data, chunk.getBlockData(x, y + 1, z), chunk, new Vector3Impl(x, y + 1, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; } else { if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java index e9965d49b..f80c9684a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java @@ -1,8 +1,7 @@ package com.dfsek.terra.world.generation.math; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.google.common.cache.CacheBuilder; @@ -11,10 +10,6 @@ import com.google.common.cache.LoadingCache; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - public class SamplerCache { private final LoadingCache cache; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java index 27c0d42e7..da084e791 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java @@ -1,10 +1,11 @@ package com.dfsek.terra.world.generation.math.interpolation; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; import java.util.HashMap; @@ -67,7 +68,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3(x, y, z)); + return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); } /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java index 9d71d8774..814f1f12a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java @@ -1,10 +1,11 @@ package com.dfsek.terra.world.generation.math.interpolation; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; import java.util.HashMap; @@ -82,7 +83,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3(x, y, z)); + return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); } private static int reRange(int value, int high) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java index 330cafdc8..fc7c0b5c3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java @@ -1,8 +1,8 @@ package com.dfsek.terra.world.generation.math.interpolation; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.world.generation.WorldGenerator; public class ElevationInterpolator { 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 index 8b1b53bf7..4ce0f2eae 100644 --- 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 @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.math.samplers; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator2D; import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java index 6a6c085b6..f85600c27 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.math.samplers; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator3D; import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 09ce5976a..f68c37b8f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,13 +1,13 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; -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.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index 99c97f411..976c82247 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -1,12 +1,13 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.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.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; @@ -41,7 +42,7 @@ public class FloraPopulator implements TerraBlockPopulator { for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); - Vector2 l = new Vector2(x, z); + Vector2 l = new Vector2Impl(x, z); layers.put(l, biome.getConfig().getFlora()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 3d5c0966a..69cb3fc37 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -1,10 +1,10 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; -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.MathUtil; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.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; @@ -44,7 +44,7 @@ public class OrePopulator implements TerraBlockPopulator { try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { int amount = orePair.getRight().getAmount().get(random); for(int i = 0; i < amount; i++) { - Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); + Vector3Impl location = new Vector3Impl(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); orePair.getLeft().generate(location, chunk, random); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 30346917c..ea8b42361 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -1,14 +1,14 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.config.pack.WorldConfig; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index 5dd58fb92..8437809d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -1,12 +1,12 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.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.vector.Vector2Impl; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.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.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; @@ -43,7 +43,7 @@ public class TreePopulator implements TerraBlockPopulator { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); for(TreeLayer layer : biome.getConfig().getTrees()) { if(layer.getDensity() >= random.nextDouble() * 100) { - layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); + layer.place(chunk, new Vector2Impl(offset(random, x), offset(random, z))); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index e150d92fe..164c01e17 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,18 +1,18 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public abstract class PlaceableLayer { protected final double density; protected final Range level; - protected final ProbabilityCollection layer; + protected final ProbabilityCollectionImpl layer; protected final NoiseSampler noise; - public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + public PlaceableLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; @@ -31,7 +31,7 @@ public abstract class PlaceableLayer { return level; } - public ProbabilityCollection getLayer() { + public ProbabilityCollectionImpl getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index f3976fbab..56980f163 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -3,16 +3,16 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure { - private final ProbabilityCollection structure; + private final ProbabilityCollectionImpl structure; private final Range spawnStart; private final GridSpawn spawn; private final StructureTemplate template; - public TerraStructure(ProbabilityCollection structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollectionImpl structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; @@ -23,7 +23,7 @@ public class TerraStructure { return template; } - public ProbabilityCollection getStructure() { + public ProbabilityCollectionImpl getStructure() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index dbc714388..48ad7ab5a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,11 +1,11 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -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.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.world.flora.Flora; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index d7bec46bf..771b3588b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -1,11 +1,11 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -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.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.flora.Flora; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index 579b70035..8d042f238 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -1,16 +1,16 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.world.population.items.PlaceableLayer; public class FloraLayer extends PlaceableLayer { - public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + public FloraLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index b154c2e91..0c4fe265e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -2,15 +2,15 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Directional; -import com.dfsek.terra.api.platform.block.data.MultipleFacing; -import com.dfsek.terra.api.platform.block.data.Rotatable; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Directional; +import com.dfsek.terra.api.block.data.MultipleFacing; +import com.dfsek.terra.api.block.data.Rotatable; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.MaterialSet; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java index 2bc782196..aa5466c0f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java @@ -2,12 +2,13 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.Map; @@ -27,14 +28,14 @@ public class DeformedSphereOre extends Ore { @Override - public void generate(Vector3 origin, Chunk c, Random r) { + public void generate(Vector3Impl origin, Chunk c, Random r) { OpenSimplex2Sampler ore = new OpenSimplex2Sampler(r.nextInt()); ore.setFrequency(deformFrequency); int rad = size.get(r); for(int x = -rad; x <= rad; x++) { for(int y = -rad; y <= rad; y++) { for(int z = -rad; z <= rad; z++) { - Vector3 oreLoc = origin.clone().add(new Vector3(x, y, z)); + Vector3 oreLoc = origin.clone().add(new Vector3Impl(x, y, z)); if(oreLoc.getBlockX() > 15 || oreLoc.getBlockZ() > 15 || oreLoc.getBlockY() > c.getWorld().getMaxHeight() || oreLoc.getBlockX() < 0 || oreLoc.getBlockZ() < 0 || oreLoc.getBlockY() < c.getWorld().getMinHeight()) continue; if(oreLoc.distance(origin) < (rad + 0.5) * ((ore.getNoise(x, y, z) + 1) * deform)) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index d52bdf4a0..d62568c11 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -1,10 +1,10 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.Map; @@ -26,7 +26,7 @@ public abstract class Ore { this.materials = materials; } - public abstract void generate(Vector3 origin, Chunk c, Random r); + public abstract void generate(Vector3Impl origin, Chunk c, Random r); public BlockData getMaterial(BlockType replace) { return materials.getOrDefault(replace, material); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 0e5e5d4af..699590b63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -2,11 +2,11 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.MaterialSet; import net.jafama.FastMath; @@ -23,7 +23,7 @@ public class VanillaOre extends Ore { } @Override - public void generate(Vector3 location, Chunk chunk, Random random) { + public void generate(Vector3Impl location, Chunk chunk, Random random) { double size = sizeRange.get(random); int centerX = location.getBlockX(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 2576d2eca..083c4f670 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,20 +1,20 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.util.Random; public class TerraTree implements Tree { private final MaterialSet spawnable; private final int yOffset; - private final ProbabilityCollection structure; + private final ProbabilityCollectionImpl structure; - public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollection structure) { + public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollectionImpl structure) { this.spawnable = spawnable; this.yOffset = yOffset; this.structure = structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 707a062cc..da19f47ec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -1,19 +1,19 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.math.Range; -import com.dfsek.terra.api.math.noise.NoiseSampler; -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.platform.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { - public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + public TreeLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/test/java/command/CommandTest.java b/common/implementation/src/test/java/command/CommandTest.java index 2598be813..3aa0ccf89 100644 --- a/common/implementation/src/test/java/command/CommandTest.java +++ b/common/implementation/src/test/java/command/CommandTest.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.command.exception.InvalidArgumentsException; import com.dfsek.terra.api.command.exception.MalformedCommandException; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/common/implementation/src/test/java/noise/ColorConfigTemplate.java b/common/implementation/src/test/java/noise/ColorConfigTemplate.java index ddc3ba9f0..4383dfbc1 100644 --- a/common/implementation/src/test/java/noise/ColorConfigTemplate.java +++ b/common/implementation/src/test/java/noise/ColorConfigTemplate.java @@ -3,11 +3,11 @@ package noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public class ColorConfigTemplate implements ConfigTemplate { @Value("colors") - private ProbabilityCollection colors; + private ProbabilityCollectionImpl colors; @Value("enable") @Default @@ -17,7 +17,7 @@ public class ColorConfigTemplate implements ConfigTemplate { return enable; } - public ProbabilityCollection getColors() { + public ProbabilityCollectionImpl getColors() { return colors; } } diff --git a/common/implementation/src/test/java/noise/NoiseTool.java b/common/implementation/src/test/java/noise/NoiseTool.java index a335a88de..7e4ed53cc 100644 --- a/common/implementation/src/test/java/noise/NoiseTool.java +++ b/common/implementation/src/test/java/noise/NoiseTool.java @@ -2,8 +2,8 @@ package noise; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollection; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.fileloaders.FolderLoader; @@ -99,7 +99,7 @@ public class NoiseTool { ConfigLoader loader = new ConfigLoader(); loader.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(new NoiseRegistry())) .registerLoader(BufferedImage.class, new BufferedImageLoader(folderLoader)) - .registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()); + .registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()); new GenericLoaders(null).register(loader); NoiseConfigTemplate template = new NoiseConfigTemplate(); @@ -124,7 +124,7 @@ public class NoiseTool { loader.load(color, new FileInputStream(colorFile)); colors = color.enable(); } - ProbabilityCollection colorCollection = color.getColors(); + ProbabilityCollectionImpl colorCollection = color.getColors(); loader.load(template, new FileInputStream(file)); System.out.println(template.getBuilder().getDimensions()); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java index ed65c569a..708afa648 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import org.bukkit.ChatColor; public class BukkitCommandSender implements CommandSender { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index ff3bd80ec..25fd3a142 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitEntity implements Entity { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index 822fa0d7c..c9ca72228 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitPlayer implements Player { 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 189fc5139..47d3fe4ef 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 @@ -2,20 +2,20 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.addons.annotations.Addon; -import com.dfsek.terra.api.addons.annotations.Author; -import com.dfsek.terra.api.addons.annotations.Version; +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.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.TerraEventManager; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; @@ -79,7 +79,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private DebugLogger debugLogger; - private final EventManager eventManager = new TerraEventManager(this); + private final EventManager eventManager = new EventManagerImpl(this); public static final BukkitVersion BUKKIT_VERSION; static { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java index 87d69c115..31ba05123 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; @Command diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java index 4648cb01e..118a8c779 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java @@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.command; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; import com.dfsek.terra.config.lang.LangUtil; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java index da186a425..409288703 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java @@ -1,12 +1,12 @@ package com.dfsek.terra.bukkit.generator; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.generator.ChunkData; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import org.bukkit.generator.ChunkGenerator; import org.jetbrains.annotations.NotNull; -public class BukkitChunkGenerator implements com.dfsek.terra.api.platform.world.generator.ChunkGenerator { +public class BukkitChunkGenerator implements com.dfsek.terra.api.world.generator.ChunkGenerator { private final ChunkGenerator delegate; public BukkitChunkGenerator(ChunkGenerator delegate) { 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 67b7148e6..c54407525 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 @@ -1,13 +1,12 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; 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.world.TerraWorld; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; @@ -23,7 +22,7 @@ import java.util.Random; public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { - private static final Map popMap = new HashMap<>(); + private static final Map popMap = new HashMap<>(); private final PopulationManager popMan; @@ -42,7 +41,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener public static synchronized void saveAll() { - for(Map.Entry e : popMap.entrySet()) { + for(Map.Entry e : popMap.entrySet()) { try { e.getValue().saveBlocks(e.getKey()); } catch(IOException ioException) { @@ -56,7 +55,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld()); } - private void load(com.dfsek.terra.api.platform.world.World w) { + private void load(com.dfsek.terra.api.world.World w) { try { popMan.loadBlocks(w); } catch(FileNotFoundException ignore) { @@ -70,7 +69,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) { - com.dfsek.terra.api.platform.world.World bukkitWorld = BukkitAdapter.adapt(world); + com.dfsek.terra.api.world.World bukkitWorld = BukkitAdapter.adapt(world); if(needsLoad) load(bukkitWorld); // Load population data for world. delegate.generateBiomes(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome)); return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitChunkGenerator.BukkitChunkData(createChunkData(world))).getHandle(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java index f13783203..e13b8291b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.bukkit.util.MinecraftUtils; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 62747e2e2..81741caab 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,10 +1,10 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 5ea6f4bd5..afe0ed6b4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,11 +1,11 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Tree; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.transform.MapTransform; -import com.dfsek.terra.api.transform.Transformer; +import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.config.pack.WorldConfig; @@ -29,7 +29,7 @@ public class CommonListener implements Listener { this.main = main; } - private static final Transformer TREE_TYPE_STRING_TRANSFORMER = new Transformer.Builder() + private static final TransformerImpl TREE_TYPE_STRING_TRANSFORMER = new TransformerImpl.Builder() .addTransform(new MapTransform() .add(TreeType.COCOA_TREE, "JUNGLE_COCOA") .add(TreeType.BIG_TREE, "LARGE_OAK") diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index f1a205e79..20aae02f0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -5,10 +5,10 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitTree; -import com.dfsek.terra.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.DuplicateEntryException; import org.bukkit.TreeType; public class TerraListener implements EventListener { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java index a68e575fa..d1f73ee9f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.population; -import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.bukkit.world.BukkitWorld; import java.io.Serializable; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index ca3f3e8aa..233ed8e9e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index c50cd2711..2dd92d1c2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,23 +1,24 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.data.Bisected; -import com.dfsek.terra.api.platform.block.data.Rail; -import com.dfsek.terra.api.platform.block.data.RedstoneWire; -import com.dfsek.terra.api.platform.block.data.Slab; -import com.dfsek.terra.api.platform.block.data.Stairs; -import com.dfsek.terra.api.platform.inventory.ItemStack; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.data.Bisected; +import com.dfsek.terra.api.block.data.Rail; +import com.dfsek.terra.api.block.data.RedstoneWire; +import com.dfsek.terra.api.block.data.Slab; +import com.dfsek.terra.api.block.data.Stairs; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.transform.MapTransform; -import com.dfsek.terra.api.transform.Transformer; +import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitPlayer; @@ -36,7 +37,7 @@ import org.bukkit.util.Vector; * Utility class to adapt Bukkit enums to Terra enums. */ public final class BukkitAdapter { - public static Transformer TREE_TRANSFORMER = new Transformer.Builder() + public static TransformerImpl TREE_TRANSFORMER = new TransformerImpl.Builder() .addTransform(new MapTransform() .add(TreeType.COCOA_TREE, "JUNGLE_COCOA") .add(TreeType.BIG_TREE, "LARGE_OAK") @@ -336,12 +337,12 @@ public final class BukkitAdapter { } } - public static Location adapt(com.dfsek.terra.api.math.vector.Location location) { + public static Location adapt(com.dfsek.terra.api.vector.Location location) { return new Location(((BukkitWorld) location.getWorld()).getHandle(), location.getX(), location.getY(), location.getZ()); } - public static com.dfsek.terra.api.math.vector.Location adapt(Location location) { - return new com.dfsek.terra.api.math.vector.Location(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ()); + public static com.dfsek.terra.api.vector.Location adapt(Location location) { + return new com.dfsek.terra.api.vector.Location(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ()); } public static Vector adapt(Vector3 vector3) { @@ -349,7 +350,7 @@ public final class BukkitAdapter { } public static Vector3 adapt(Vector vector) { - return new Vector3(vector.getX(), vector.getY(), vector.getZ()); + return new Vector3Impl(vector.getX(), vector.getY(), vector.getZ()); } public static CommandSender adapt(org.bukkit.command.CommandSender sender) { @@ -386,11 +387,11 @@ public final class BukkitAdapter { return ((BukkitEnchantment) enchantment).getHandle(); } - public static Player adapt(com.dfsek.terra.api.platform.entity.Player player) { + public static Player adapt(com.dfsek.terra.api.entity.Player player) { return ((BukkitPlayer) player).getHandle(); } - public static com.dfsek.terra.api.platform.entity.Player adapt(Player player) { + public static com.dfsek.terra.api.entity.Player adapt(Player player) { return new BukkitPlayer(player); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java index 843268183..fe5e0308b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.platform.world.Biome; +import com.dfsek.terra.api.world.biome.Biome; public class BukkitBiome implements Biome { private final org.bukkit.block.Biome biome; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java index 9f3b91a23..308e6a03d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.BiomeGrid; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.BiomeGrid; import org.bukkit.generator.ChunkGenerator; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index e27f02ab6..78b94176f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.block.BukkitBlock; import org.jetbrains.annotations.NotNull; 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 41445619f..a32542ac3 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 @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.profiler.ProfileFrame; import org.bukkit.TreeType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 158041ae5..e29fb1786 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,12 +1,12 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator; import com.dfsek.terra.bukkit.world.block.BukkitBlock; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java index dcf49acdd..9c9e10669 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java @@ -1,11 +1,11 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 5b3e0767c..8e72cc3f0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java index 71cd99513..4179e58d4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.data.AnaloguePowerable; +import com.dfsek.terra.api.block.data.AnaloguePowerable; public class BukkitAnaloguePowerable extends BukkitBlockData implements AnaloguePowerable { public BukkitAnaloguePowerable(org.bukkit.block.data.AnaloguePowerable delegate) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java index e0dffe72b..ee4635636 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java index 13d610774..64a447a48 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Directional; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitDirectional extends BukkitBlockData implements Directional { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java index 4e01a62f3..7a4b5f484 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.MultipleFacing; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.MultipleFacing; import com.dfsek.terra.bukkit.world.BukkitAdapter; import java.util.Set; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java index c6cfdca18..87d9d2587 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.data.Orientable; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.bukkit.world.BukkitAdapter; import java.util.Set; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java index ae85d2b76..3c7455735 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.data.Rail; +import com.dfsek.terra.api.block.data.Rail; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitRail extends BukkitBlockData implements Rail { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java index 708c1316b..8ee7fbb59 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.RedstoneWire; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.RedstoneWire; import com.dfsek.terra.bukkit.world.BukkitAdapter; import java.util.Set; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java index 0da5c04b9..5b5c7be8d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Rotatable; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Rotatable; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitRotatable extends BukkitBlockData implements Rotatable { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java index 6ddf160b3..6420e6de0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.data.Slab; +import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitSlab extends BukkitWaterlogged implements Slab { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java index c54d4a993..046b17b91 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Stairs; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitStairs extends BukkitBlockData implements Stairs { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java index 2addb83b7..e19038dba 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Wall; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Wall; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitWall extends BukkitWaterlogged implements Wall { @@ -19,7 +19,7 @@ public class BukkitWall extends BukkitWaterlogged implements Wall { ((org.bukkit.block.data.type.Wall) getHandle()).setUp(up); } - public static org.bukkit.block.data.type.Wall.Height adapt(com.dfsek.terra.api.platform.block.data.Wall.Height height) { + public static org.bukkit.block.data.type.Wall.Height adapt(com.dfsek.terra.api.block.data.Wall.Height height) { switch(height) { case NONE: return org.bukkit.block.data.type.Wall.Height.NONE; @@ -32,14 +32,14 @@ public class BukkitWall extends BukkitWaterlogged implements Wall { } } - public static com.dfsek.terra.api.platform.block.data.Wall.Height adapt(org.bukkit.block.data.type.Wall.Height height) { + public static com.dfsek.terra.api.block.data.Wall.Height adapt(org.bukkit.block.data.type.Wall.Height height) { switch(height) { case TALL: - return com.dfsek.terra.api.platform.block.data.Wall.Height.TALL; + return com.dfsek.terra.api.block.data.Wall.Height.TALL; case LOW: - return com.dfsek.terra.api.platform.block.data.Wall.Height.LOW; + return com.dfsek.terra.api.block.data.Wall.Height.LOW; case NONE: - return com.dfsek.terra.api.platform.block.data.Wall.Height.NONE; + return com.dfsek.terra.api.block.data.Wall.Height.NONE; default: throw new IllegalStateException(); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java index b75c6c170..a866d32f2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.platform.block.data.Waterlogged; +import com.dfsek.terra.api.block.data.Waterlogged; public class BukkitWaterlogged extends BukkitBlockData implements Waterlogged { public BukkitWaterlogged(org.bukkit.block.data.Waterlogged delegate) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java index c96c520de..cd8127c09 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.bukkit.world.block.BukkitBlock; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import org.bukkit.block.Container; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java index cdb1fe636..d940d62a5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.platform.block.state.Container; -import com.dfsek.terra.api.platform.inventory.Inventory; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.bukkit.world.inventory.BukkitInventory; public class BukkitContainer extends BukkitBlockState implements Container { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index 526d1481d..f6f45180c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.platform.block.state.MobSpawner; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.block.CreatureSpawner; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index 05625cc1a..b3e5b3b46 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.block.state.Sign; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.state.Sign; import org.jetbrains.annotations.NotNull; @SuppressWarnings("deprecation") diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java index 280ebc5b4..0338372a6 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.entity; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.entity.EntityType; public class BukkitEntityType implements EntityType { private final org.bukkit.entity.EntityType delegate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java index f567bff01..d354396a0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.inventory; -import com.dfsek.terra.api.platform.inventory.Inventory; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; public class BukkitInventory implements Inventory { private final org.bukkit.inventory.Inventory delegate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java index a8bc30131..e80ac6419 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.inventory; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitDamageable; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java index b42f7319d..564b0149c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.world.inventory; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.ItemStack; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.ItemMeta; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitItemStack implements ItemStack { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java index 0c2ba018f..0aab11176 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.inventory.meta; -import com.dfsek.terra.api.platform.inventory.item.Damageable; +import com.dfsek.terra.api.inventory.item.Damageable; import com.dfsek.terra.bukkit.world.inventory.BukkitItemMeta; import org.bukkit.inventory.meta.ItemMeta; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java index 577414c28..a2a149d29 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.inventory.meta; -import com.dfsek.terra.api.platform.inventory.ItemStack; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; public class BukkitEnchantment implements Enchantment { 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 77ff1b952..81af2b609 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 @@ -4,28 +4,28 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.addons.annotations.Addon; -import com.dfsek.terra.api.addons.annotations.Author; -import com.dfsek.terra.api.addons.annotations.Version; +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.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.TerraEventManager; +import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Tree; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.transform.Transformer; +import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.logging.DebugLogger; @@ -37,7 +37,6 @@ import com.dfsek.terra.config.builder.BiomeBuilder; 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.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -45,18 +44,13 @@ import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.event.GameInitializationEvent; -import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.generation.PopulatorFeature; -import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; -import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; -import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor; import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.ProtoBiome; import com.dfsek.terra.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; -import com.dfsek.terra.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; @@ -97,7 +91,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return worldMap; } - private final EventManager eventManager = new TerraEventManager(this); + private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); private final Profiler profiler = new ProfilerImpl(); @@ -131,7 +125,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final PluginConfig config = new PluginConfig(); - private final Transformer biomeFixer = new Transformer.Builder() + private final TransformerImpl biomeFixer = new TransformerImpl.Builder() .addTransform(this::parseBiome, Validator.notNull()) .addTransform(id -> parseBiome("minecraft:" + id.toLowerCase()), Validator.notNull()).build(); @@ -245,7 +239,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { genericLoaders.register(registry); registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.platform.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) + .registerLoader(com.dfsek.terra.api.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) .registerLoader(Identifier.class, (t, o, l) -> { Identifier identifier = Identifier.tryParse((String) o); if(identifier == null) throw new LoadException("Invalid identifier: " + o); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java index 78c1211b5..167bd72a4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java @@ -1,12 +1,12 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.state.BlockState; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.FluidBlock; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java index 6fd723bfb..05e4fd21e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.mixin.access.StateAccessor; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java index b2fab164e..7e0345474 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.data.AnaloguePowerable; +import com.dfsek.terra.api.block.data.AnaloguePowerable; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java index be4eb316b..8d5eff52e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Directional; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java index d1caae8e1..2dbfe8e27 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.MultipleFacing; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.MultipleFacing; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java index d8e88d566..4a92e02c4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.data.Orientable; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java index 4b7a971ea..2dc2eee73 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Rotatable; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Rotatable; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java index cf0d0c277..bcd7c753e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.data.Slab; +import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java index d18ec13da..2764551ba 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Stairs; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java index 7e3636bde..e1e71a3ce 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.platform.block.data.Waterlogged; +import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; 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 e3e4b18d9..d29f2df63 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 @@ -1,8 +1,8 @@ package com.dfsek.terra.fabric.generation; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkData; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; @@ -153,7 +153,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener delegate.generateChunkData(world, new FastRandom(), chunk.getPos().x, chunk.getPos().z, (ChunkData) chunk); delegate.getPopulators().forEach(populator -> { if(populator instanceof Chunkified) { - populator.populate(world, (com.dfsek.terra.api.platform.world.Chunk) world); + populator.populate(world, (com.dfsek.terra.api.world.Chunk) world); } }); return chunk; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java index 99a30d378..0af63397b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.generation; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generation.Chunkified; import com.mojang.serialization.Codec; import net.minecraft.world.StructureWorldAccess; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index d8ee36830..040a1f473 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java index 4ea99a542..4fa7b5e40 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java @@ -1,8 +1,8 @@ package com.dfsek.terra.fabric.handle; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.command.argument.ItemStackArgumentType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 1f801f1d0..e211d9989 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.handle; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.entity.Player; -import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.util.FabricAdapter; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java index 2e98614df..dc21f4cc1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.fabric.mixin; import com.dfsek.terra.api.command.exception.CommandException; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Entity; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index b3d5d7c97..399c80208 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -27,7 +27,7 @@ public abstract class ServerWorldMixin { @Inject(method = "", at = @At(value = "RETURN")) public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey registryKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { - TerraFabricPlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.platform.world.World) this, ((FabricChunkGeneratorWrapper) chunkGenerator).getPack(), TerraFabricPlugin.getInstance()))); + TerraFabricPlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.world.World) this, ((FabricChunkGeneratorWrapper) chunkGenerator).getPack(), TerraFabricPlugin.getInstance()))); ((FabricChunkGeneratorWrapper) chunkGenerator).setDimensionType(dimensionType); TerraFabricPlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java index 4a928cbb6..22d8eb3b3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; @Mixin(Biome.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BiomeMixin { @Intrinsic public Object terra$getHandle() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java index cc7b82e80..cb290eb3f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; @Mixin(ChunkGenerator.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ChunkGeneratorMixin { @Intrinsic public Object terra$getHandle() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 0398a2d4c..0934235e4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.profiler.ProfileFrame; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index 5082204d9..95f38cce8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.entity.BlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index 579b404f8..99b62296e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java index f72957753..588c1b463 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.Container; -import com.dfsek.terra.api.platform.inventory.Inventory; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.fabric.mixin.implementations.block.BlockEntityMixin; import net.minecraft.block.entity.LootableContainerBlockEntity; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index f678ab0a7..4102ddde9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.MobSpawner; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.MobSpawnerLogicAccessor; import net.minecraft.block.BlockState; @@ -12,7 +12,6 @@ import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; import net.minecraft.world.MobSpawnerLogic; -import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java index c9dd3f065..debd3a15c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.block.state.Sign; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.state.Sign; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index 7912b2f2a..9ac566d19 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 56681d0ab..ee6d73e5c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 2b2b87eb4..3e2d2ed9f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.generator.ChunkData; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index d829f7fe3..1738950c4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.entity.Entity; import net.minecraft.text.LiteralText; @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.UUID; @Mixin(Entity.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.entity.Entity.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.entity.Entity.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EntityMixin { @Shadow public net.minecraft.world.World world; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java index 85ffb4c25..0a338d3d4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; @Mixin(EntityType.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EntityTypeMixin { @Intrinsic public Object terra$getHandle() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java index b4bf0d35e..805f47aa2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.Player; import net.minecraft.entity.player.PlayerEntity; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java index 9b0593521..f2ef8cf14 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; -import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.entity.CommandSender; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java index cff0892bb..4fae156a7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory; -import com.dfsek.terra.api.platform.inventory.Inventory; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.block.entity.LockableContainerBlockEntity; import net.minecraft.item.Items; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java index b14939c1c..6a3291430 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory.item; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.item.Item; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(Item.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.Item.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.Item.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ItemMixin { @Shadow public abstract int getMaxDamage(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java index 864e4724a..75e1cda06 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory.item; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.ItemMeta; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import org.jetbrains.annotations.Nullable; @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(ItemStack.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.ItemStack.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.ItemStack.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ItemStackMixin { @Shadow public abstract int getCount(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java index eb47a6498..ee36013e4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.enchantment.Enchantment; import net.minecraft.util.registry.Registry; import org.spongepowered.asm.mixin.Implements; @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Objects; @Mixin(Enchantment.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.item.Enchantment.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.item.Enchantment.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EnchantmentMixin { @Shadow public abstract boolean isAcceptableItem(net.minecraft.item.ItemStack stack); @@ -34,7 +34,7 @@ public abstract class EnchantmentMixin { return Objects.requireNonNull(Registry.ENCHANTMENT.getId((Enchantment) (Object) this)).toString(); } - public boolean terra$conflictsWith(com.dfsek.terra.api.platform.inventory.item.Enchantment other) { + public boolean terra$conflictsWith(com.dfsek.terra.api.inventory.item.Enchantment other) { return !canCombine((Enchantment) other); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java index 0d3a2fd06..d245e6027 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.item.Damageable; +import com.dfsek.terra.api.inventory.item.Damageable; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java index 5ddaca96a..92675fc72 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 0a2b05d57..7df859f37 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,13 +1,13 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 71b6de5e8..9e9a844de 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,19 +1,18 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 8c197d573..e94b779ed 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,14 +1,15 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Bisected; -import com.dfsek.terra.api.platform.block.data.Slab; -import com.dfsek.terra.api.platform.block.data.Stairs; -import com.dfsek.terra.api.platform.block.state.Container; -import com.dfsek.terra.api.platform.block.state.MobSpawner; -import com.dfsek.terra.api.platform.block.state.Sign; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Bisected; +import com.dfsek.terra.api.block.data.Slab; +import com.dfsek.terra.api.block.data.Stairs; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.block.data.FabricDirectional; import com.dfsek.terra.fabric.block.data.FabricMultipleFacing; @@ -38,7 +39,7 @@ public final class FabricAdapter { } public static Vector3 adapt(BlockPos pos) { - return new Vector3(pos.getX(), pos.getY(), pos.getZ()); + return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ()); } public static FabricBlockData adapt(BlockState state) { @@ -81,7 +82,7 @@ public final class FabricAdapter { } - public static com.dfsek.terra.api.platform.block.state.BlockState adapt(com.dfsek.terra.api.platform.block.Block block) { + public static com.dfsek.terra.api.block.state.BlockState adapt(com.dfsek.terra.api.block.Block block) { WorldAccess worldAccess = (WorldAccess) block.getLocation().getWorld(); BlockEntity entity = worldAccess.getBlockEntity(adapt(block.getLocation().toVector())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java index a7ff41ecd..92bcecc5b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.platform.world.Biome; +import com.dfsek.terra.api.world.biome.Biome; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 159e4fbc8..2372965cb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java index 6b9f585d3..d9dd869f4 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java @@ -1,10 +1,10 @@ package com.dfsek.terra.forge; import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.state.Container; -import com.dfsek.terra.api.platform.block.state.MobSpawner; -import com.dfsek.terra.api.platform.block.state.Sign; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.forge.block.ForgeBlockData; import com.dfsek.terra.forge.block.data.ForgeDirectional; import com.dfsek.terra.forge.block.data.ForgeMultipleFacing; @@ -55,7 +55,7 @@ public final class ForgeAdapter { return new ForgeBlockData(state); } - public static com.dfsek.terra.api.platform.block.state.BlockState adapt(com.dfsek.terra.api.platform.block.Block block) { + public static com.dfsek.terra.api.block.state.BlockState adapt(com.dfsek.terra.api.block.Block block) { IWorld worldAccess = (IWorld) block.getLocation().getWorld(); TileEntity entity = worldAccess.getBlockEntity(adapt(block.getLocation().toVector())); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java index d624c53e6..9a2d118ff 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java @@ -5,9 +5,9 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addons.TerraAddon; -import com.dfsek.terra.api.addons.annotations.Addon; -import com.dfsek.terra.api.addons.annotations.Author; -import com.dfsek.terra.api.addons.annotations.Version; +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.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -18,11 +18,11 @@ import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Tree; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.transform.Transformer; @@ -291,7 +291,7 @@ public class TerraForgePlugin implements TerraPlugin { genericLoaders.register(registry); registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.platform.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) + .registerLoader(com.dfsek.terra.api.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) .registerLoader(ResourceLocation.class, (t, o, l) -> { ResourceLocation identifier = ResourceLocation.tryParse((String) o); if(identifier == null) throw new LoadException("Invalid identifier: " + o); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java index 98ad4d61e..f43b49905 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java @@ -1,12 +1,12 @@ package com.dfsek.terra.forge.block; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.state.BlockState; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.forge.ForgeAdapter; import net.minecraft.block.FlowingFluidBlock; import net.minecraft.util.math.BlockPos; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java index 1fb22ec35..00a09f0e2 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.state.Property; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java index f8455c5c7..29ff41d12 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.data.AnaloguePowerable; +import com.dfsek.terra.api.block.data.AnaloguePowerable; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java index c4cc15636..e3a958077 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Directional; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.forge.ForgeAdapter; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java index 16ba0bb8a..80e685df2 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java @@ -1,10 +1,10 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Bisected; -import com.dfsek.terra.api.platform.block.data.Slab; -import com.dfsek.terra.api.platform.block.data.Stairs; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Bisected; +import com.dfsek.terra.api.block.data.Slab; +import com.dfsek.terra.api.block.data.Stairs; import net.minecraft.state.properties.Half; import net.minecraft.state.properties.SlabType; import net.minecraft.state.properties.StairsShape; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java index 7e9510282..50ea34971 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.MultipleFacing; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.MultipleFacing; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java index 9f3e53f2d..b9f52f028 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.Axis; -import com.dfsek.terra.api.platform.block.data.Orientable; +import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.EnumProperty; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java index b64727b59..fd3d7cfbb 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Rotatable; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Rotatable; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java index 4f294604e..887ab27bc 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.data.Slab; +import com.dfsek.terra.api.block.data.Slab; import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java index ef9c6e8ff..12f25c5fa 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.data.Stairs; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.data.Stairs; import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java index ed6abffbe..92afbe168 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.block.data; -import com.dfsek.terra.api.platform.block.data.Waterlogged; +import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java index 3a34608b6..cfcc25216 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java @@ -1,8 +1,8 @@ package com.dfsek.terra.forge.generation; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkData; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java index e586e82d4..d1e1106dd 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.generation; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.mojang.serialization.Codec; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ISeedReader; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java index e2dc4185a..886ef1b1e 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java @@ -1,8 +1,8 @@ package com.dfsek.terra.forge.handle; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.command.arguments.ItemArgument; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java index 96c2e37fa..f3b8118be 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.handle; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.forge.ForgeAdapter; import com.dfsek.terra.forge.block.ForgeBlockData; import com.mojang.brigadier.StringReader; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java index 35f0d9d63..4cfec2e15 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java @@ -3,7 +3,7 @@ package com.dfsek.terra.forge.listener; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.platform.entity.Entity; +import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.forge.TerraForgePlugin; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java index 39cdce89d..7bdb717d6 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java @@ -28,7 +28,7 @@ public abstract class ServerWorldMixin { if(chunkSource.getGenerator() instanceof ForgeChunkGeneratorWrapper) { ForgeChunkGeneratorWrapper chunkGeneratorWrapper = (ForgeChunkGeneratorWrapper) chunkSource.getGenerator(); DimensionType dimensionType = ((World) (Object) this).dimensionType(); - TerraForgePlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.platform.world.World) this, chunkGeneratorWrapper.getPack(), TerraForgePlugin.getInstance()))); + TerraForgePlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.world.World) this, chunkGeneratorWrapper.getPack(), TerraForgePlugin.getInstance()))); chunkGeneratorWrapper.setDimensionType(dimensionType); TerraForgePlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java index 317893290..e9718aa16 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; @Mixin(Biome.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BiomeMixin { public Object terra$getHandle() { return this; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java index 14fa0e2c5..741a80515 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; @Mixin(ChunkGenerator.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ChunkGeneratorMixin { public Object terra$getHandle() { return this; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java index f0e1d0b4a..1a4a8856b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.forge.TerraForgePlugin; import com.dfsek.terra.profiler.ProfileFrame; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java index ee4bf13ed..0ca7c207b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.forge.ForgeAdapter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java index 2f7bd3918..614fad18b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.forge.mixin.implementations.block; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.forge.ForgeAdapter; import com.dfsek.terra.forge.block.ForgeBlock; import net.minecraft.tileentity.TileEntity; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java index 977309616..3b93eafef 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.Container; -import com.dfsek.terra.api.platform.inventory.Inventory; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.forge.mixin.implementations.block.TileEntityMixin; import net.minecraft.tileentity.LockableLootTileEntity; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java index 1f73b7583..18a3df3cd 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.MobSpawner; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.entity.EntityType; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.forge.TerraForgePlugin; import com.dfsek.terra.forge.mixin.access.AbstractSpawnerAccessor; import com.dfsek.terra.forge.mixin.implementations.block.TileEntityMixin; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java index 40ec0368c..44a97ec83 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.platform.block.state.SerialState; -import com.dfsek.terra.api.platform.block.state.Sign; +import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.state.Sign; import net.minecraft.tileentity.SignTileEntity; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java index 6d93b8cef..2a84b1a32 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java @@ -1,9 +1,9 @@ package com.dfsek.terra.forge.mixin.implementations.chunk; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.forge.block.ForgeBlock; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.util.math.BlockPos; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java index 7844a9637..abec0eefd 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java @@ -1,9 +1,9 @@ package com.dfsek.terra.forge.mixin.implementations.chunk; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.forge.block.ForgeBlock; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.util.math.BlockPos; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java index 5e5404406..59fae46c1 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.chunk.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.generator.ChunkData; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.forge.block.ForgeBlockData; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java index 7cc684c35..a3ac19283 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.entity; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.forge.ForgeAdapter; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.UUID; @Mixin(Entity.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.entity.Entity.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.entity.Entity.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EntityMixin { @Shadow public net.minecraft.world.World level; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java index e7bb15a70..37836982f 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; @Mixin(EntityType.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EntityTypeMixin { public Object terra$getHandle() { return this; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java index 7ee5d6731..e0ba8972a 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.mixin.implementations.entity; -import com.dfsek.terra.api.platform.entity.Player; +import com.dfsek.terra.api.entity.Player; import net.minecraft.entity.player.PlayerEntity; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java index 06a279ed3..379c457f5 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.inventory; -import com.dfsek.terra.api.platform.inventory.Inventory; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.item.Items; import net.minecraft.tileentity.LockableTileEntity; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java index a7efd1706..624781bcd 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.mixin.implementations.inventory.item; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.item.Item; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(Item.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.Item.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.Item.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ItemMixin { @Shadow public abstract int getMaxDamage(); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java index 714dcab02..109edbaf7 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.inventory.item; -import com.dfsek.terra.api.platform.inventory.Item; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.ItemMeta; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import org.jetbrains.annotations.Nullable; @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(ItemStack.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.ItemStack.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.ItemStack.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ItemStackMixin { @Shadow public abstract int getCount(); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java index 69bbfecaa..b6c7cb06b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.ItemStack; +import com.dfsek.terra.api.inventory.ItemStack; import net.minecraft.enchantment.Enchantment; import net.minecraft.util.registry.Registry; import org.spongepowered.asm.mixin.Implements; @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Objects; @Mixin(Enchantment.class) -@Implements(@Interface(iface = com.dfsek.terra.api.platform.inventory.item.Enchantment.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.inventory.item.Enchantment.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EnchantmentMixin { @Shadow @@ -33,7 +33,7 @@ public abstract class EnchantmentMixin { return Objects.requireNonNull(Registry.ENCHANTMENT.getId((Enchantment) (Object) this)).toString(); } - public boolean terra$conflictsWith(com.dfsek.terra.api.platform.inventory.item.Enchantment other) { + public boolean terra$conflictsWith(com.dfsek.terra.api.inventory.item.Enchantment other) { return !isCompatibleWith((Enchantment) other); } } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java index 8a1b438f5..38f147475 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.item.Damageable; +import com.dfsek.terra.api.inventory.item.Damageable; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java index aa9b2a41b..b7215982f 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.inventory.meta; -import com.dfsek.terra.api.platform.inventory.item.Enchantment; -import com.dfsek.terra.api.platform.inventory.item.ItemMeta; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java index 024b4970d..984a134e0 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java @@ -1,13 +1,13 @@ package com.dfsek.terra.forge.mixin.implementations.world; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.forge.block.ForgeBlock; import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java index 0b162b591..aa184c147 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java @@ -1,13 +1,13 @@ package com.dfsek.terra.forge.mixin.implementations.world; import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; -import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.forge.block.ForgeBlock; import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; diff --git a/platforms/region/src/main/java/com/dfsek/terra/DirectUtils.java b/platforms/region/src/main/java/com/dfsek/terra/DirectUtils.java index 2be2ebf6e..8d4d0bd9b 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/DirectUtils.java +++ b/platforms/region/src/main/java/com/dfsek/terra/DirectUtils.java @@ -1,6 +1,6 @@ package com.dfsek.terra; -import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.util.MathUtil; import net.querz.mca.MCAUtil; public final class DirectUtils { 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 8cf274b36..917ca45fc 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -2,14 +2,14 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.TerraEventManager; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.handle.ItemHandle; -import com.dfsek.terra.api.platform.handle.WorldHandle; -import com.dfsek.terra.api.platform.world.Biome; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; @@ -39,7 +39,7 @@ public class StandalonePlugin implements TerraPlugin { private final PluginConfig config = new PluginConfig(); private final RawWorldHandle worldHandle = new RawWorldHandle(); - private final EventManager eventManager = new TerraEventManager(this); + private final EventManager eventManager = new EventManagerImpl(this); private final Profiler profiler = new ProfilerImpl(); diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java b/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java index 2267b7f91..eb956ea2a 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import net.querz.nbt.tag.CompoundTag; public class Data implements BlockData, BlockType { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java index 3169d0667..87d1fb788 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java @@ -1,12 +1,12 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockFace; -import com.dfsek.terra.api.platform.block.BlockType; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import net.jafama.FastMath; public class DirectBlock implements Block { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java index db759cb44..e78607792 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java @@ -1,8 +1,8 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.state.BlockState; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; public class DirectBlockState implements BlockState { @Override diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index 4eac21cce..7dcc02815 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -1,15 +1,15 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkData; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; import net.querz.mca.Chunk; import net.querz.nbt.tag.CompoundTag; import org.jetbrains.annotations.NotNull; -public class DirectChunkData implements ChunkData, com.dfsek.terra.api.platform.world.Chunk { +public class DirectChunkData implements ChunkData, com.dfsek.terra.api.world.Chunk { private final Chunk delegate; private final DirectWorld world; private final int x; @@ -61,6 +61,6 @@ public class DirectChunkData implements ChunkData, com.dfsek.terra.api.platform. @Override public Block getBlock(int x, int y, int z) { - return new DirectBlock(world, new Vector3(x + (this.x << 4), y, z + (this.z << 4))); + return new DirectBlock(world, new Vector3Impl(x + (this.x << 4), y, z + (this.z << 4))); } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 84b90b7d8..86f2697b6 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,14 +1,14 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.block.Block; -import com.dfsek.terra.api.platform.entity.Entity; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.Vector3Impl; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import net.jafama.FastMath; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -58,7 +58,7 @@ public class DirectWorld implements World { @Override public Block getBlockAt(int x, int y, int z) { - return new DirectBlock(this, new Vector3(x, y, z)); + return new DirectBlock(this, new Vector3Impl(x, y, z)); } @Override 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 7de56d5bf..b4ec0a5c3 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,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; public class GenWrapper implements ChunkGenerator { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawBiome.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawBiome.java index d9082aa4c..7046dcdee 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawBiome.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawBiome.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.platform.world.Biome; +import com.dfsek.terra.api.world.biome.Biome; public class RawBiome implements Biome { private final String id; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index e86172ce5..75528e905 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.platform.world.Tree; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.Random; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java index 2e2ce5b63..0c78798b1 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java @@ -1,8 +1,8 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.handle.WorldHandle; public class RawWorldHandle implements WorldHandle { 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 cd6a55e66..cf33cdd1a 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,12 +1,11 @@ package com.dfsek.terra.region; import com.dfsek.terra.StandalonePlugin; -import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.world.World; 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.generation.math.SamplerCache; 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/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java index 781b5f91e..669253dd9 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.sponge; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.sponge.world.block.data.SpongeBlockData; import org.spongepowered.api.block.BlockState; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index e15135a51..7d3adeeec 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -2,12 +2,12 @@ package com.dfsek.terra.sponge; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.TerraEventManager; -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.api.event.EventManagerImpl; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; @@ -40,7 +40,7 @@ public class TerraSpongePlugin implements TerraPlugin { private final SpongeWorldHandle spongeWorldHandle = new SpongeWorldHandle(); - private final EventManager eventManager = new TerraEventManager(this); + private final EventManager eventManager = new EventManagerImpl(this); @Inject @ConfigDir(sharedRoot = false) diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java index 422229ba9..f48453aaa 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java @@ -1,8 +1,8 @@ package com.dfsek.terra.sponge.world; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.sponge.SpongeAdapter; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockState; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java index eb68b9030..5782d392a 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java @@ -1,7 +1,7 @@ package com.dfsek.terra.sponge.world.block.data; -import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.api.platform.block.BlockType; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockType; import org.spongepowered.api.block.BlockState; public class SpongeBlockData implements BlockData { From bb888380aacc6088f5165e11bab7e4231712978d Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:05:29 -0700 Subject: [PATCH 0039/1529] more refactors --- .../terra/api}/profiler/ProfileFrame.java | 2 +- .../dfsek/terra/api}/profiler/Profiler.java | 2 +- .../dfsek/terra/api}/profiler/Timings.java | 4 +-- .../terra/api}/structure/buffer/Buffer.java | 3 +- .../api/structure/buffer}/BufferedItem.java | 2 +- .../api/structure/rotation}/Rotation.java | 2 +- .../api/structure/rotation}/RotationUtil.java | 2 +- .../java/com/dfsek/terra/api/util/Range.java | 36 +++++++++++++++++++ .../terra/api/util/generic/either/Either.java | 0 .../api/util/generic/pair/ImmutablePair.java | 0 .../terra/api/util/generic/pair/Pair.java | 0 .../api/util/mutable/MutableBoolean.java | 0 .../terra/api/util/mutable/MutableDouble.java | 0 .../api/util/mutable/MutableInteger.java | 0 .../terra/api/util/mutable/MutableNumber.java | 0 .../api/util/mutable/MutablePrimitive.java | 0 .../terra/api/util/mutable/package-info.java | 0 .../com/dfsek/terra/api/vector/Vector2.java | 2 ++ .../com/dfsek/terra/api/world}/Flora.java | 2 +- .../{Range.java => range/ConstantRange.java} | 29 ++++++++++----- .../structures/script/StructureScript.java | 6 ++-- .../script/TerraImplementationArguments.java | 4 +-- .../functions/AbstractBlockFunction.java | 2 +- .../script/functions/BiomeFunction.java | 2 +- .../script/functions/CheckBlockFunction.java | 2 +- .../script/functions/CheckFunction.java | 2 +- .../script/functions/EntityFunction.java | 2 +- .../script/functions/GetMarkFunction.java | 2 +- .../script/functions/LootFunction.java | 2 +- .../script/functions/PullFunction.java | 2 +- .../script/functions/SetMarkFunction.java | 2 +- .../script/functions/StateFunction.java | 2 +- .../script/functions/StructureFunction.java | 4 +-- .../api/structures/structure/buffer/Cell.java | 2 +- .../structure/buffer/DirectBuffer.java | 3 +- .../structure/buffer/IntermediateBuffer.java | 3 +- .../structure/buffer/StructureBuffer.java | 3 +- .../structure/buffer/items/BufferedBlock.java | 1 + .../buffer/items/BufferedEntity.java | 1 + .../buffer/items/BufferedLootApplication.java | 1 + .../buffer/items/BufferedPulledBlock.java | 1 + .../items/BufferedStateManipulator.java | 1 + .../world/locate/AsyncStructureFinder.java | 2 +- .../terra/carving/UserDefinedCarver.java | 5 +-- .../commands/structure/SpawnCommand.java | 2 +- .../structure/StructureLoadCommand.java | 2 +- .../dfsek/terra/config/GenericLoaders.java | 4 +-- .../terra/config/factories/FloraFactory.java | 2 +- .../terra/config/loaders/RangeLoader.java | 5 +-- .../com/dfsek/terra/config/loaders/Types.java | 2 +- .../loaders/config/FloraLayerLoader.java | 6 ++-- .../loaders/config/OreConfigLoader.java | 7 ++-- .../loaders/config/TreeLayerLoader.java | 4 +-- .../config/templates/CarverTemplate.java | 5 +-- .../terra/config/templates/OreTemplate.java | 2 +- .../config/templates/StructureTemplate.java | 2 +- .../dfsek/terra/profiler/ProfilerImpl.java | 2 ++ .../registry/config/ConfigTypeRegistry.java | 2 +- .../terra/registry/config/FloraRegistry.java | 2 +- .../terra/world/carving/NoiseCarver.java | 2 +- .../generators/DefaultChunkGenerator2D.java | 6 ++-- .../generators/DefaultChunkGenerator3D.java | 6 ++-- .../terra/world/population/CavePopulator.java | 2 +- .../world/population/FloraPopulator.java | 2 +- .../terra/world/population/OrePopulator.java | 2 +- .../world/population/StructurePopulator.java | 4 +-- .../terra/world/population/TreePopulator.java | 2 +- .../population/items/PlaceableLayer.java | 7 ++-- .../population/items/TerraStructure.java | 2 +- .../population/items/flora/BlockFlora.java | 4 +-- .../population/items/flora/ConstantFlora.java | 4 +-- .../population/items/flora/FloraLayer.java | 6 ++-- .../population/items/flora/TerraFlora.java | 4 +-- .../items/ores/DeformedSphereOre.java | 2 +- .../population/items/ores/OreConfig.java | 2 +- .../population/items/ores/VanillaOre.java | 2 +- .../population/items/tree/TerraTree.java | 2 +- .../population/items/tree/TreeLayer.java | 4 +-- .../src/test/java/profiler/ProfilerTest.java | 2 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../bukkit/population/PopulationManager.java | 2 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../ConfiguredFeatureMixin.java | 2 +- .../com/dfsek/terra/StandalonePlugin.java | 2 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 2 +- 86 files changed, 169 insertions(+), 104 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra => api/src/main/java/com/dfsek/terra/api}/profiler/ProfileFrame.java (86%) rename common/{implementation/src/main/java/com/dfsek/terra => api/src/main/java/com/dfsek/terra/api}/profiler/Profiler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => api/src/main/java/com/dfsek/terra/api}/profiler/Timings.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api/structures => api/src/main/java/com/dfsek/terra/api}/structure/buffer/Buffer.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items => api/src/main/java/com/dfsek/terra/api/structure/buffer}/BufferedItem.java (82%) rename common/{implementation/src/main/java/com/dfsek/terra/api/structures/structure => api/src/main/java/com/dfsek/terra/api/structure/rotation}/Rotation.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/structures/structure => api/src/main/java/com/dfsek/terra/api/structure/rotation}/RotationUtil.java (99%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/Range.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java (100%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/flora => api/src/main/java/com/dfsek/terra/api/world}/Flora.java (88%) rename common/implementation/src/main/java/com/dfsek/terra/api/math/{Range.java => range/ConstantRange.java} (76%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java b/common/api/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java rename to common/api/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java index bf5c64dab..e00ffcecd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfileFrame.java +++ b/common/api/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.profiler; +package com.dfsek.terra.api.profiler; public class ProfileFrame implements AutoCloseable { private final Runnable action; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/Profiler.java b/common/api/src/main/java/com/dfsek/terra/api/profiler/Profiler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/profiler/Profiler.java rename to common/api/src/main/java/com/dfsek/terra/api/profiler/Profiler.java index 65560ad56..fb76e77ce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/Profiler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/profiler/Profiler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.profiler; +package com.dfsek.terra.api.profiler; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/Timings.java b/common/api/src/main/java/com/dfsek/terra/api/profiler/Timings.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/profiler/Timings.java rename to common/api/src/main/java/com/dfsek/terra/api/profiler/Timings.java index 3875285b3..88f2c05e1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/Timings.java +++ b/common/api/src/main/java/com/dfsek/terra/api/profiler/Timings.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.profiler; +package com.dfsek.terra.api.profiler; import java.util.ArrayList; import java.util.Collections; @@ -41,7 +41,7 @@ public class Timings { return subItems.computeIfAbsent(id, s -> new Timings()); } - public String toString(int indent, Timings parent, Set branches) { + private String toString(int indent, Timings parent, Set branches) { StringBuilder builder = new StringBuilder(); builder.append((double) min() / 1000000).append("ms min / ").append(average() / 1000000).append("ms avg / ") diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java rename to common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java index 76366bd1f..4fc0366c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Buffer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java @@ -1,7 +1,6 @@ -package com.dfsek.terra.api.structures.structure.buffer; +package com.dfsek.terra.api.structure.buffer; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; public interface Buffer { Buffer addItem(BufferedItem item, Location location); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java rename to common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java index 87ed8f65d..27d3ef9ca 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedItem.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.api.structure.buffer; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java b/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java rename to common/api/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java index f81c8f63e..e4091ac49 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/Rotation.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure; +package com.dfsek.terra.api.structure.rotation; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java index 7a1c0e33c..25a5f398d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/RotationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure; +package com.dfsek.terra.api.structure.rotation; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.block.Axis; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Range.java b/common/api/src/main/java/com/dfsek/terra/api/util/Range.java new file mode 100644 index 000000000..b7fb7d1ca --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Range.java @@ -0,0 +1,36 @@ +package com.dfsek.terra.api.util; + +import org.jetbrains.annotations.NotNull; + +import java.util.Iterator; +import java.util.Random; + +public interface Range extends Iterable { + boolean isInRange(int test); + + int getMax(); + + ConstantRange setMax(int max); + + int getMin(); + + ConstantRange setMin(int min); + + int getRange(); + + ConstantRange multiply(int mult); + + ConstantRange reflect(int pt); + + int get(Random r); + + ConstantRange intersects(ConstantRange other); + + ConstantRange add(int add); + + ConstantRange sub(int sub); + + @NotNull + @Override + Iterator iterator(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java rename to common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java rename to common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java rename to common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java rename to common/api/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java index bfc63ee16..25a725c55 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -11,6 +11,8 @@ public interface Vector2 extends Cloneable { */ double getX(); + Vector2 clone(); + Vector2 setX(double x); /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java rename to common/api/src/main/java/com/dfsek/terra/api/world/Flora.java index 3abd739c1..44e0f7b87 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/flora/Flora.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.flora; +package com.dfsek.terra.api.world; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.vector.Location; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/Range.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/Range.java rename to common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java index ce8ae477d..bfae45827 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/Range.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java @@ -1,75 +1,88 @@ -package com.dfsek.terra.api.math; +package com.dfsek.terra.api.math.range; +import com.dfsek.terra.api.util.Range; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Iterator; import java.util.Random; -public class Range implements Iterable { +public class ConstantRange implements Range { private int min; private int max; - public Range(int min, int max) { + public ConstantRange(int min, int max) { if(min > max) throw new IllegalArgumentException("Minimum must not be grater than maximum!"); this.max = max; this.min = min; } + @Override public boolean isInRange(int test) { return test >= min && test < max; } + @Override public int getMax() { return max; } + @Override public Range setMax(int max) { this.max = max; return this; } + @Override public int getMin() { return min; } + @Override public Range setMin(int min) { this.min = min; return this; } + @Override public int getRange() { return max - min; } + @Override public Range multiply(int mult) { min *= mult; max *= mult; return this; } + @Override public Range reflect(int pt) { - return new Range(2 * pt - this.getMax(), 2 * pt - this.getMin()); + return new ConstantRange(2 * pt - this.getMax(), 2 * pt - this.getMin()); } + @Override public int get(Random r) { return r.nextInt((max - min) + 1) + min; } - public Range intersects(com.dfsek.terra.api.math.Range other) { + @Override + public Range intersects(Range other) { try { - return new Range(FastMath.max(this.getMin(), other.getMin()), FastMath.min(this.getMax(), other.getMax())); + return new ConstantRange(FastMath.max(this.getMin(), other.getMin()), FastMath.min(this.getMax(), other.getMax())); } catch(IllegalArgumentException e) { return null; } } + @Override public Range add(int add) { this.min += add; this.max += add; return this; } + @Override public Range sub(int sub) { this.min -= sub; this.max -= sub; @@ -88,8 +101,8 @@ public class Range implements Iterable { @Override public boolean equals(Object obj) { - if(!(obj instanceof com.dfsek.terra.api.math.Range)) return false; - Range other = (com.dfsek.terra.api.math.Range) obj; + if(!(obj instanceof ConstantRange)) return false; + Range other = (Range) obj; return other.getMin() == this.getMin() && other.getMax() == this.getMax(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 7c1381097..b1a376d1a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -28,11 +28,11 @@ import com.dfsek.terra.api.structures.script.builders.UnaryBooleanFunctionBuilde import com.dfsek.terra.api.structures.script.builders.UnaryNumberFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.UnaryStringFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.structures.structure.Rotation; -import com.dfsek.terra.api.structures.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java index 6d80871ea..c81f73224 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.structure.Rotation; -import com.dfsek.terra.api.structures.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.structure.buffer.Buffer; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index dbb6d8806..292be05f2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index ba459a624..707bd651a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index eb73a66e3..985544608 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 94d873fdf..5612571a8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 4708a45e6..6cc1ac539 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.tokenizer.Position; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index b033b486e..6abb28ebd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index bf4a9968d..69108c41e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.structure.RotationUtil; +import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 528d4ebea..97320d1a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index e1e81034c..f37df8c08 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index d2792fe9c..d10129885 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; 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.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipulator; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 63b64c399..0b40cc993 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -12,8 +12,8 @@ import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.structure.Rotation; -import com.dfsek.terra.api.structures.structure.RotationUtil; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index 68205f5ba..de57b35b7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 94f65b889..4d1d18cc9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.structures.structure.buffer; +import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import java.util.LinkedHashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 439d91585..7f990062b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer; +import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; +import com.dfsek.terra.api.structure.buffer.BufferedItem; public class IntermediateBuffer implements Buffer { private final Buffer original; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index ff2d3f9a1..45daa63d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer; +import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import net.jafama.FastMath; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index b547eca97..dbd5eda25 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 22735a5bb..f47b8c6e0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index e1ab11b32..25676451b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 9df3b44fb..a6437cca5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index ab81b3225..e9cb56151 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 8bb5cabe5..14558e0f3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 5610fa151..2022d7f93 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -5,10 +5,11 @@ import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; @@ -43,7 +44,7 @@ public class UserDefinedCarver extends Carver { private final Map cacheMap = new ConcurrentHashMap<>(); private final TerraPlugin main; private double step = 2; - private Range recalc = new Range(8, 10); + private Range recalc = new ConstantRange(8, 10); private double recalcMagnitude = 3; public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, int topCut, int bottomCut, CarverTemplate config, TerraPlugin main, Map functions, Map definedFunctions) throws ParseException { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 73e9351b9..f77bde4a4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -13,7 +13,7 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.functions.CheckFunction; -import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index 0ff923ab3..42d51a138 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.commands.structure.argument.ScriptArgumentParser; import com.dfsek.terra.commands.structure.completer.RotationCompleter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index d6f891731..083ad7c7a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.samplers.ImageSampler; import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.block.BlockType; @@ -70,7 +70,7 @@ public class GenericLoaders implements LoaderRegistrar { @Override public void register(TypeRegistry registry) { registry.registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()) - .registerLoader(Range.class, new RangeLoader()) + .registerLoader(ConstantRange.class, new RangeLoader()) .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 0fcb02d78..52537c1d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index 7b0913ba7..7c0f2633b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -3,7 +3,8 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.Range; import java.lang.reflect.Type; import java.util.Map; @@ -13,6 +14,6 @@ public class RangeLoader implements TypeLoader { @Override public Range load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - return new Range(map.get("min"), map.get("max")); + return new ConstantRange(map.get("min"), map.get("max")); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index ba1c05778..d5571376a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 837d2cd75..cbf967dd3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -4,11 +4,11 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.world.population.items.flora.FloraLayer; @@ -21,7 +21,7 @@ public class FloraLayerLoader implements TypeLoader { public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - Range range = configLoader.loadClass(Range.class, map.get("y")); + ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); if(range == null) throw new LoadException("Flora range unspecified"); ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java index 548da2181..52167ced2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java @@ -2,7 +2,8 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.world.population.items.ores.OreConfig; import java.lang.reflect.Type; @@ -13,8 +14,8 @@ public class OreConfigLoader implements TypeLoader { @Override public OreConfig load(Type type, Object o, ConfigLoader configLoader) { Map map = (Map) o; - Range amount = new Range(map.get("min"), map.get("max")); - Range height = new Range(map.get("min-height"), map.get("max-height")); + Range amount = new ConstantRange(map.get("min"), map.get("max")); + Range height = new ConstantRange(map.get("min-height"), map.get("max-height")); return new OreConfig(amount, height); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 1ed99af7a..ab1ff5bdd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -20,7 +20,7 @@ public class TreeLayerLoader implements TypeLoader { public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - Range range = configLoader.loadClass(Range.class, map.get("y")); + ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); if(range == null) throw new LoadException("Tree range unspecified"); ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index 001adb36c..5e11d9a32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java @@ -3,8 +3,9 @@ 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.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.carving.CarverPalette; @@ -29,7 +30,7 @@ public class CarverTemplate extends AbstractableTemplate { @Value("recalculate-direction") @Abstractable @Default - private Range recalc = new Range(8, 10); + private Range recalc = new ConstantRange(8, 10); @Value("length") @Abstractable diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index de58654fc..234c83254 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -3,9 +3,9 @@ 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.math.Range; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.world.population.items.ores.Ore; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 0537fcea3..e71ef4583 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -5,9 +5,9 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index f91deecd1..981dfc763 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -1,5 +1,7 @@ package com.dfsek.terra.profiler; +import com.dfsek.terra.api.profiler.Profiler; +import com.dfsek.terra.api.profiler.Timings; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.profiler.exception.MalformedStackException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 2148949f3..a2e53ff84 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index 5ae64fabd..e9f162971 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -3,7 +3,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.world.population.items.flora.ConstantFlora; 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 e3ee142fa..657b2ff13 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 @@ -1,8 +1,8 @@ package com.dfsek.terra.world.carving; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.block.BlockData; +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; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index d2e93ced2..ea1cd3ee7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; @@ -15,7 +15,7 @@ import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; @@ -50,7 +50,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { blockPopulators.add(new OrePopulator(main)); blockPopulators.add(new TreePopulator(main)); blockPopulators.add(new TreePopulator(main)); - carver = new NoiseCarver(new Range(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); + carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); this.cache = cache; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 6902852b9..f77582606 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; @@ -24,7 +24,7 @@ import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; @@ -61,7 +61,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { blockPopulators.add(new TreePopulator(main)); blockPopulators.add(new FloraPopulator(main)); - carver = new NoiseCarver(new Range(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); + carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType(); blank = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:air")); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index f68c37b8f..69ac8375e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index 976c82247..2550ec8d2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 69cb3fc37..c37ff2a2c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -10,7 +10,7 @@ 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.config.templates.BiomeTemplate; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index ea8b42361..887146c64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -5,14 +5,14 @@ import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index 8437809d0..618a02f37 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index 164c01e17..ca3287a57 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,18 +1,19 @@ package com.dfsek.terra.world.population.items; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public abstract class PlaceableLayer { protected final double density; - protected final Range level; + protected final ConstantRange level; protected final ProbabilityCollectionImpl layer; protected final NoiseSampler noise; - public PlaceableLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public PlaceableLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index 56980f163..eb6b87f3d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -1,8 +1,8 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index 48ad7ab5a..05b4ee9e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,13 +1,13 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index 771b3588b..b1bee9cda 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -1,6 +1,6 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -8,7 +8,7 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index 8d042f238..ba4db2cfa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -1,16 +1,16 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.world.population.items.PlaceableLayer; public class FloraLayer extends PlaceableLayer { - public FloraLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public FloraLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 0c4fe265e..8dd36a055 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -14,7 +14,7 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.world.flora.Flora; +import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.Palette; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java index aa5466c0f..c34da3b4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java @@ -1,8 +1,8 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java index 67048c34d..8b9286dd6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java @@ -1,6 +1,6 @@ package com.dfsek.terra.world.population.items.ores; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; public class OreConfig { private final Range amount; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 699590b63..f0422b2f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 083c4f670..5a6f1e9bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -3,7 +3,7 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index da19f47ec..853d301a9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -1,6 +1,6 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.block.Block; @@ -13,7 +13,7 @@ import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { - public TreeLayer(double density, Range level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public TreeLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index b4d97856d..e8853a1e8 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -1,6 +1,6 @@ package profiler; -import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; public class ProfilerTest { 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 47d3fe4ef..dcda5c306 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 @@ -41,7 +41,7 @@ import com.dfsek.terra.config.PluginConfig; 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.profiler.Profiler; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 233ed8e9e..7f75a374e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.bukkit.world.BukkitWorld; import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; 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 a32542ac3..eff1a7969 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 @@ -5,7 +5,7 @@ import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import org.bukkit.TreeType; import java.util.Locale; 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 81af2b609..6e16df083 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 @@ -48,7 +48,7 @@ import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.ProtoBiome; -import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.registry.master.AddonRegistry; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 0934235e4..f8ea27372 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.profiler.ProfileFrame; +import com.dfsek.terra.api.profiler.ProfileFrame; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.world.StructureWorldAccess; 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 917ca45fc..b61ea24a0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -21,7 +21,7 @@ import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; -import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 7d3adeeec..2fad02b1e 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.profiler.Profiler; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; From a5f879ae7a47b8388c558ebae30b252fd6f62dc9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:09:55 -0700 Subject: [PATCH 0040/1529] ConfigPack interfaceification --- .../com/dfsek/terra/api/config/ConfigPack.java | 16 ++++++++++++++++ .../world/generation/TerraChunkGenerator.java | 4 ++-- .../com/dfsek/terra/commands/PacksCommand.java | 2 +- .../config/builder/UserDefinedBiomeBuilder.java | 6 +++--- .../terra/config/factories/BiomeFactory.java | 6 +++--- .../terra/config/factories/CarverFactory.java | 6 +++--- .../{ConfigPack.java => ConfigPackImpl.java} | 13 +++++++++---- .../com/dfsek/terra/config/pack/WorldConfig.java | 4 ++-- .../dfsek/terra/config/prototype/ConfigType.java | 2 +- .../terra/config/templates/BiomeTemplate.java | 7 ++++--- .../registry/config/ConfigTypeRegistry.java | 7 ++++--- .../terra/registry/master/ConfigRegistry.java | 8 ++++---- .../java/com/dfsek/terra/world/TerraWorld.java | 4 ++-- .../generators/DefaultChunkGenerator2D.java | 8 ++++---- .../generators/DefaultChunkGenerator3D.java | 8 ++++---- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../generation/FabricChunkGeneratorWrapper.java | 9 +++++---- .../fabric/generation/TerraBiomeSource.java | 7 ++++--- .../fabric/generation/TerraGeneratorType.java | 8 +++----- .../lifecycle/server/GeneratorOptionsMixin.java | 6 ++---- .../com/dfsek/terra/fabric/util/FabricUtil.java | 6 +++--- .../java/com/dfsek/terra/StandalonePlugin.java | 2 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 2 +- 24 files changed, 83 insertions(+), 62 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java rename common/implementation/src/main/java/com/dfsek/terra/config/pack/{ConfigPack.java => ConfigPackImpl.java} (97%) 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 new file mode 100644 index 000000000..cc1c79f7d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.api.config; + +import com.dfsek.terra.api.LoaderRegistrar; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +public interface ConfigPack extends LoaderRegistrar { + @SuppressWarnings("unchecked") + CheckedRegistry getRegistry(Class clazz); + + BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); + + WorldConfig toWorldConfig(TerraWorld world); + + CheckedRegistry> getConfigTypeRegistry(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java index 3ccb98191..fc8f7bd91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.world.generation.math.samplers.Sampler; import org.jetbrains.annotations.NotNull; @@ -27,7 +27,7 @@ public interface TerraChunkGenerator { boolean shouldGenerateStructures(); - ConfigPack getConfigPack(); + ConfigPackImpl getConfigPack(); TerraPlugin getMain(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index fc71ccad2..5b257ea06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -3,11 +3,11 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackTemplate; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 1ea9dbeff..832bb1df8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.WorldGenerator; @@ -20,11 +20,11 @@ import java.util.concurrent.ConcurrentHashMap; public class UserDefinedBiomeBuilder implements BiomeBuilder { private final BiomeTemplate template; - private final ConfigPack pack; + private final ConfigPackImpl pack; private final Map biomeMap = new ConcurrentHashMap<>(); - public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPack pack) { + public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPackImpl pack) { this.template = template; this.pack = pack; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java index c19ea0988..267ec8bf4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java @@ -3,13 +3,13 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.UserDefinedBiomeBuilder; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; public class BiomeFactory implements ConfigFactory { - private final ConfigPack pack; + private final ConfigPackImpl pack; - public BiomeFactory(ConfigPack pack) { + public BiomeFactory(ConfigPackImpl pack) { this.pack = pack; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java index dc044c062..9a66fe2ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java @@ -5,16 +5,16 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.CarverTemplate; import java.util.Arrays; import java.util.List; public class CarverFactory implements ConfigFactory { - private final ConfigPack pack; + private final ConfigPackImpl pack; - public CarverFactory(ConfigPack pack) { + public CarverFactory(ConfigPackImpl pack) { this.pack = pack; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ed57d3fdb..6cfca6b64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -10,9 +10,11 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; @@ -34,7 +36,6 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; -import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.LootRegistry; @@ -66,7 +67,7 @@ import java.util.zip.ZipFile; /** * Represents a Terra configuration pack. */ -public class ConfigPack implements LoaderRegistrar { +public class ConfigPackImpl implements ConfigPack { private final ConfigPackTemplate template = new ConfigPackTemplate(); private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); @@ -83,7 +84,7 @@ public class ConfigPack implements LoaderRegistrar { private final ConfigTypeRegistry configTypeRegistry; private final Map, ImmutablePair, CheckedRegistry>> registryMap = newRegistryMap(); - public ConfigPack(File folder, TerraPlugin main) throws ConfigException { + public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); @@ -126,7 +127,7 @@ public class ConfigPack implements LoaderRegistrar { toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } - public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException { + public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); @@ -267,6 +268,7 @@ public class ConfigPack implements LoaderRegistrar { return varScope; } + @Override @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Class clazz) { return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); @@ -290,15 +292,18 @@ public class ConfigPack implements LoaderRegistrar { .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class))); } + @Override public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { return biomeProviderBuilder; } + @Override public WorldConfig toWorldConfig(TerraWorld world) { return new WorldConfig(world, this, main); } + @Override public CheckedRegistry> getConfigTypeRegistry() { return new CheckedRegistry>(configTypeRegistry) { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java index 25eb3dfa3..a0c553ece 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java @@ -22,11 +22,11 @@ public class WorldConfig { private final BiomeProvider provider; private final TerraWorld world; - private final ConfigPack pack; + private final ConfigPackImpl pack; private final Map, LockedRegistry> registryMap = new HashMap<>(); - public WorldConfig(TerraWorld world, ConfigPack pack, TerraPlugin main) { + public WorldConfig(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { this.world = world; this.pack = pack; this.samplerCache = new SamplerCache(main, world); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java index 4c6f66ec7..aab1bf1bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.prototype; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.registry.OpenRegistry; import java.util.function.Supplier; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index ea91e851a..0cf46b1c2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -9,6 +9,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; @@ -24,7 +25,7 @@ import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; @@ -40,7 +41,7 @@ import java.util.Set; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class BiomeTemplate extends AbstractableTemplate implements ValidatedConfigTemplate { - private final ConfigPack pack; + private final ConfigPackImpl pack; @Value("id") private String id; @@ -242,7 +243,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return doSlabs; } - public BiomeTemplate(ConfigPack pack, TerraPlugin main) { + public BiomeTemplate(ConfigPackImpl pack, TerraPlugin main) { this.pack = pack; biomeNoise = new NoiseSeeded() { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index a2e53ff84..eeae11d8d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -3,6 +3,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.Palette; @@ -16,7 +17,7 @@ import com.dfsek.terra.config.factories.OreFactory; import com.dfsek.terra.config.factories.PaletteFactory; import com.dfsek.terra.config.factories.StructureFactory; import com.dfsek.terra.config.factories.TreeFactory; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; @@ -37,7 +38,7 @@ import java.util.function.Supplier; public class ConfigTypeRegistry extends OpenRegistry> { private final BiConsumer> callback; - public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main, BiConsumer> callback) { + public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); @@ -71,7 +72,7 @@ public class ConfigTypeRegistry extends OpenRegistry> { @Override public Class getTypeClass() { - return ConfigPack.class; + return ConfigPackImpl.class; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index c756a2b2b..2667193f5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -2,7 +2,7 @@ package com.dfsek.terra.registry.master; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.registry.OpenRegistry; import java.io.File; @@ -12,9 +12,9 @@ import java.util.zip.ZipFile; /** * Class to hold config packs */ -public class ConfigRegistry extends OpenRegistry { +public class ConfigRegistry extends OpenRegistry { public void load(File folder, TerraPlugin main) throws ConfigException { - ConfigPack pack = new ConfigPack(folder, main); + ConfigPackImpl pack = new ConfigPackImpl(folder, main); add(pack.getTemplate().getID(), pack); } @@ -43,7 +43,7 @@ public class ConfigRegistry extends OpenRegistry { } public void load(ZipFile file, TerraPlugin main) throws ConfigException { - ConfigPack pack = new ConfigPack(file, main); + ConfigPackImpl pack = new ConfigPackImpl(file, main); add(pack.getTemplate().getID(), pack); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java index c50065af0..9332b578d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.world.generation.math.samplers.Sampler; import net.jafama.FastMath; @@ -22,7 +22,7 @@ public class TerraWorld { private final BlockData air; - public TerraWorld(World w, ConfigPack c, TerraPlugin main) { + public TerraWorld(World w, ConfigPackImpl c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; config = c.toWorldConfig(this); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index ea1cd3ee7..b82ac6781 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -13,7 +13,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; @@ -34,7 +34,7 @@ import java.util.List; import java.util.Random; public class DefaultChunkGenerator2D implements TerraChunkGenerator { - private final ConfigPack configPack; + private final ConfigPackImpl configPack; private final TerraPlugin main; private final Carver carver; @@ -42,7 +42,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { private final SamplerCache cache; - public DefaultChunkGenerator2D(ConfigPack c, TerraPlugin main, SamplerCache cache) { + public DefaultChunkGenerator2D(ConfigPackImpl c, TerraPlugin main, SamplerCache cache) { this.configPack = c; this.main = main; blockPopulators.add(new CavePopulator(main)); @@ -80,7 +80,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { } @Override - public ConfigPack getConfigPack() { + public ConfigPackImpl getConfigPack() { return configPack; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index f77582606..2f19be0e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -3,6 +3,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -22,7 +23,6 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator; 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.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; @@ -43,7 +43,7 @@ import java.util.Map; import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { - private final ConfigPack configPack; + private final ConfigPackImpl configPack; private final TerraPlugin main; private final BlockType water; private final SinglePalette blank; @@ -51,7 +51,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final Carver carver; - public DefaultChunkGenerator3D(ConfigPack c, TerraPlugin main) { + public DefaultChunkGenerator3D(ConfigPackImpl c, TerraPlugin main) { this.configPack = c; this.main = main; @@ -92,7 +92,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } @Override - public ConfigPack getConfigPack() { + public ConfigPackImpl getConfigPack() { return configPack; } 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 dcda5c306..2b4a6065f 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 @@ -9,6 +9,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; @@ -40,7 +41,6 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfig; 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.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; 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 6e16df083..f8dfcf8da 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 @@ -11,6 +11,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; @@ -36,7 +37,6 @@ import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.builder.BiomeBuilder; 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.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; 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 d29f2df63..1ee4aa277 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.generation; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.GeneratorWrapper; @@ -7,7 +8,7 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; @@ -71,10 +72,10 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener private final DefaultChunkGenerator3D delegate; private final TerraBiomeSource biomeSource; - private final ConfigPack pack; + private final ConfigPackImpl pack; private DimensionType dimensionType; - public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { + public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPackImpl configPack) { super(biomeSource, new StructuresConfig(false)); this.pack = configPack; @@ -96,7 +97,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener return new FabricChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); } - public ConfigPack getPack() { + public ConfigPackImpl getPack() { return pack; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 040a1f473..716a59918 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -1,8 +1,9 @@ package com.dfsek.terra.fabric.generation; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; import com.mojang.serialization.Codec; @@ -29,9 +30,9 @@ public class TerraBiomeSource extends BiomeSource { private final Registry biomeRegistry; private final long seed; private final BiomeProvider grid; - private final ConfigPack pack; + private final ConfigPackImpl pack; - public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { + public TerraBiomeSource(Registry biomes, long seed, ConfigPackImpl pack) { super(biomes.stream() .filter(biome -> Objects.requireNonNull(biomes.getId(biome)).getNamespace().equals("terra")) // Filter out non-Terra biomes. .collect(Collectors.toList())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index fb842a330..78ec90a94 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -1,13 +1,11 @@ package com.dfsek.terra.fabric.generation; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; -import com.dfsek.terra.fabric.util.FabricUtil; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.world.GeneratorType; -import net.minecraft.util.Identifier; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; import net.minecraft.world.biome.Biome; @@ -17,9 +15,9 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @Environment(EnvType.CLIENT) public class TerraGeneratorType extends GeneratorType { - private final ConfigPack pack; + private final ConfigPackImpl pack; - public TerraGeneratorType(ConfigPack pack) { + public TerraGeneratorType(ConfigPackImpl pack) { super("terra." + pack.getTemplate().getID()); this.pack = pack; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index c665bb3c4..6ad5efd51 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -1,13 +1,11 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.util.FabricUtil; import com.google.common.base.MoreObjects; -import net.minecraft.util.Identifier; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.SimpleRegistry; @@ -58,7 +56,7 @@ public abstract class GeneratorOptionsMixin { prop = prop.substring(prop.indexOf(":") + 1); - ConfigPack config = main.getConfigRegistry().get(prop); + ConfigPackImpl config = main.getConfigRegistry().get(prop); if(config == null) throw new IllegalArgumentException("No such pack " + prop); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index eb6bdee7d..1b523b01d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; @@ -29,7 +29,7 @@ import java.util.Map; import java.util.function.Supplier; public final class FabricUtil { - public static String createBiomeID(ConfigPack pack, String biomeID) { + public static String createBiomeID(ConfigPackImpl pack, String biomeID) { return pack.getTemplate().getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT); } @@ -40,7 +40,7 @@ public final class FabricUtil { * @param pack The ConfigPack this biome belongs to. * @return The Minecraft delegate biome. */ - public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { + public static Biome createBiome(BiomeBuilder biome, ConfigPackImpl pack, DynamicRegistryManager registryManager) { BiomeTemplate template = biome.getTemplate(); Map colors = template.getColors(); 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 b61ea24a0..9809fd804 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -3,6 +3,7 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; @@ -18,7 +19,6 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfig; 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.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; import com.dfsek.terra.api.profiler.Profiler; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 2fad02b1e..710896d74 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -3,6 +3,7 @@ package com.dfsek.terra.sponge; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; @@ -13,7 +14,6 @@ import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; -import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; From fa0bd103f3db8d193ffbdb83923a4ae7badbd084 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:13:50 -0700 Subject: [PATCH 0041/1529] minor cleanup --- .../com/dfsek/terra/api/config}/ConfigType.java | 5 ++--- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 3 +-- .../dfsek/terra/config/prototype/ProtoConfig.java | 1 + .../dfsek/terra/registry/config/BiomeRegistry.java | 4 ++-- .../dfsek/terra/registry/config/CarverRegistry.java | 4 ++-- .../terra/registry/config/ConfigTypeRegistry.java | 13 +++++++------ .../dfsek/terra/registry/config/FloraRegistry.java | 4 ++-- .../terra/registry/config/FunctionRegistry.java | 4 ++-- .../dfsek/terra/registry/config/NoiseRegistry.java | 4 ++-- .../dfsek/terra/registry/config/OreRegistry.java | 4 ++-- .../terra/registry/config/PaletteRegistry.java | 4 ++-- .../dfsek/terra/registry/config/ScriptRegistry.java | 4 ++-- .../terra/registry/config/StructureRegistry.java | 4 ++-- .../dfsek/terra/registry/config/TreeRegistry.java | 8 ++------ 14 files changed, 31 insertions(+), 35 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/prototype => api/src/main/java/com/dfsek/terra/api/config}/ConfigType.java (77%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java similarity index 77% rename from common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java rename to common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index aab1bf1bc..7e8ed0b39 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -1,10 +1,9 @@ -package com.dfsek.terra.config.prototype; +package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; import java.util.function.Supplier; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 6cfca6b64..fd44c2b39 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -8,7 +8,6 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; @@ -34,7 +33,7 @@ import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProvi import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.config.prototype.ConfigType; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java index 329a88113..b74681e54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java @@ -2,6 +2,7 @@ package com.dfsek.terra.config.prototype; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.ConfigType; public class ProtoConfig implements ConfigTemplate { @Value("id") diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java index 5ad1d32a6..fb1bdd999 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java @@ -3,11 +3,11 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import java.lang.reflect.Type; -public class BiomeRegistry extends OpenRegistry { +public class BiomeRegistry extends OpenRegistryImpl { @Override public BiomeBuilder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { if(o.equals("SELF")) return null; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java index 63b80f715..d7d3d7cb8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class CarverRegistry extends OpenRegistry { +public class CarverRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index eeae11d8d..994880086 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.Palette; @@ -18,7 +19,7 @@ import com.dfsek.terra.config.factories.PaletteFactory; import com.dfsek.terra.config.factories.StructureFactory; import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.prototype.ConfigType; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; @@ -27,7 +28,7 @@ import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.config.templates.PaletteTemplate; import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.TreeTemplate; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.ores.Ore; @@ -35,7 +36,7 @@ import java.util.LinkedHashMap; import java.util.function.BiConsumer; import java.util.function.Supplier; -public class ConfigTypeRegistry extends OpenRegistry> { +public class ConfigTypeRegistry extends OpenRegistryImpl> { private final BiConsumer> callback; public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { @@ -52,7 +53,7 @@ public class ConfigTypeRegistry extends OpenRegistry> { } @Override - protected boolean add(String identifier, Entry> value) { + public boolean add(String identifier, Entry> value) { callback.accept(identifier, value.getValue()); return super.add(identifier, value); } @@ -72,12 +73,12 @@ public class ConfigTypeRegistry extends OpenRegistry> { @Override public Class getTypeClass() { - return ConfigPackImpl.class; + return ConfigPack.class; } @Override public Supplier> registrySupplier() { - return OpenRegistry::new; + return OpenRegistryImpl::new; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index e9f162971..ee6c49c19 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -4,14 +4,14 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.population.items.flora.ConstantFlora; import java.util.Arrays; import java.util.Collections; import java.util.concurrent.Callable; -public class FloraRegistry extends OpenRegistry { +public class FloraRegistry extends OpenRegistryImpl { private final TerraPlugin main; public FloraRegistry(TerraPlugin main) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java index 2d140137a..951dfa6b0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class FunctionRegistry extends OpenRegistry> { +public class FunctionRegistry extends OpenRegistryImpl> { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index 72752f96f..43f093960 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -23,9 +23,9 @@ import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.Rid import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class NoiseRegistry extends OpenRegistry { +public class NoiseRegistry extends OpenRegistryImpl { public NoiseRegistry() { add("LINEAR", LinearNormalizerTemplate::new); add("NORMAL", NormalNormalizerTemplate::new); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java index 010a812f2..41b62bef1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.population.items.ores.Ore; -public class OreRegistry extends OpenRegistry { +public class OreRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java index bcdfea683..9c0b871f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java @@ -3,9 +3,9 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class PaletteRegistry extends OpenRegistry { +public class PaletteRegistry extends OpenRegistryImpl { private final TerraPlugin main; public PaletteRegistry(TerraPlugin main) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java index a715c5ad9..110659b58 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class ScriptRegistry extends OpenRegistry { +public class ScriptRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java index 56a24711d..b44ab7fa3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.population.items.TerraStructure; -public class StructureRegistry extends OpenRegistry { +public class StructureRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java index 9812cf4da..69534bb3d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java @@ -1,11 +1,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; -public class TreeRegistry extends OpenRegistry { - @Override - public boolean add(String identifier, Tree value) { - return super.add(identifier, value); - } +public class TreeRegistry extends OpenRegistryImpl { } From 506f59f8afeae2d7627f1753eb4ead12c58c65a2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:22:19 -0700 Subject: [PATCH 0042/1529] fix Range --- .../main/java/com/dfsek/terra/api/util/Range.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Range.java b/common/api/src/main/java/com/dfsek/terra/api/util/Range.java index b7fb7d1ca..c3297e5b4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Range.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Range.java @@ -10,25 +10,25 @@ public interface Range extends Iterable { int getMax(); - ConstantRange setMax(int max); + Range setMax(int max); int getMin(); - ConstantRange setMin(int min); + Range setMin(int min); int getRange(); - ConstantRange multiply(int mult); + Range multiply(int mult); - ConstantRange reflect(int pt); + Range reflect(int pt); int get(Random r); - ConstantRange intersects(ConstantRange other); + Range intersects(Range other); - ConstantRange add(int add); + Range add(int add); - ConstantRange sub(int sub); + Range sub(int sub); @NotNull @Override From 24b8fc859cd31d23beceaafe96e74406dfedd86c Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:39:37 -0700 Subject: [PATCH 0043/1529] more refactors, create platform module --- .../com/dfsek/terra/api/vector/Location.java | 2 +- .../com/dfsek/terra/api/vector/Vector2.java | 8 +-- .../com/dfsek/terra/api/vector/Vector3.java | 14 +++-- .../java/com/dfsek/terra/api/world/World.java | 2 +- .../api/world/generator}/Chunkified.java | 2 +- .../terra/api/world/generator/Palette.java | 21 +++++++ .../world/generator}/TerraBlockPopulator.java | 2 +- .../world/generator}/TerraChunkGenerator.java | 16 +---- .../com/dfsek/terra/api/math/GridSpawn.java | 4 +- .../terra/api/util/world/PaletteUtil.java | 2 +- .../terra/api/world/palette/NoisePalette.java | 2 +- .../{Palette.java => PaletteImpl.java} | 40 ++++++++----- .../api/world/palette/SinglePalette.java | 16 ----- .../world/palette/holder/PaletteHolder.java | 2 +- .../palette/holder/PaletteHolderBuilder.java | 2 +- .../api/world/palette/slant/SlantHolder.java | 1 - .../terra/config/factories/FloraFactory.java | 4 +- .../config/factories/PaletteFactory.java | 2 +- .../loaders/palette/PaletteHolderLoader.java | 5 +- .../terra/config/templates/BiomeTemplate.java | 6 +- .../registry/config/ConfigTypeRegistry.java | 4 +- .../registry/config/PaletteRegistry.java | 6 +- .../com/dfsek/terra/world/TerraWorld.java | 2 +- .../world/generation/WorldGenerator.java | 2 +- .../generators/DefaultChunkGenerator2D.java | 6 +- .../generators/DefaultChunkGenerator3D.java | 12 ++-- .../terra/world/population/CavePopulator.java | 4 +- .../world/population/FloraPopulator.java | 2 +- .../terra/world/population/OrePopulator.java | 2 +- .../world/population/StructurePopulator.java | 4 +- .../terra/world/population/TreePopulator.java | 2 +- .../population/items/flora/TerraFlora.java | 2 +- common/platform/build.gradle.kts | 60 +++++++++++++++++++ .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../BukkitChunkGeneratorWrapper.java | 2 +- .../generator/BukkitPopulatorWrapper.java | 5 +- .../bukkit/population/PopulationManager.java | 4 +- .../FabricChunkGeneratorWrapper.java | 4 +- .../fabric/generation/PopulatorFeature.java | 2 +- .../world/ChunkRegionMixin.java | 2 +- .../world/ServerWorldMixin.java | 2 +- settings.gradle.kts | 3 + 42 files changed, 178 insertions(+), 109 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/generation => api/src/main/java/com/dfsek/terra/api/world/generator}/Chunkified.java (74%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java rename common/{implementation/src/main/java/com/dfsek/terra/api/world/generation => api/src/main/java/com/dfsek/terra/api/world/generator}/TerraBlockPopulator.java (78%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/generation => api/src/main/java/com/dfsek/terra/api/world/generator}/TerraChunkGenerator.java (72%) rename common/implementation/src/main/java/com/dfsek/terra/api/world/palette/{Palette.java => PaletteImpl.java} (73%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java create mode 100644 common/platform/build.gradle.kts diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java index 7712d2f10..3a2595588 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java @@ -163,7 +163,7 @@ public class Location implements Cloneable { return hash; } - public Vector3Impl toVector() { + public Vector3 toVector() { return vector.clone(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java index 25a725c55..b8f1a6010 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -38,7 +38,7 @@ public interface Vector2 extends Cloneable { * @param other Vector to add * @return Mutated vector, for chaining. */ - Vector2 add(Vector2Impl other); + Vector2 add(Vector2 other); /** * Subtract a vector from this vector, @@ -46,7 +46,7 @@ public interface Vector2 extends Cloneable { * @param other Vector to subtract * @return Mutated vector, for chaining. */ - Vector2 subtract(Vector2Impl other); + Vector2 subtract(Vector2 other); /** * Normalize this vector to length 1 @@ -83,7 +83,7 @@ public interface Vector2 extends Cloneable { * @param other Another vector * @return Distance between vectors */ - double distance(Vector2Impl other); + double distance(Vector2 other); /** * Get the squared distance between 2 vectors. @@ -91,7 +91,7 @@ public interface Vector2 extends Cloneable { * @param other Another vector * @return Squared distance */ - double distanceSquared(Vector2Impl other); + double distanceSquared(Vector2 other); Vector2 add(double x, double z); diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index db8be7194..4acfa2ef1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -95,7 +95,7 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distance(@NotNull Vector3Impl o); + double distance(@NotNull Vector3 o); /** * Get the squared distance between this vector and another. @@ -103,7 +103,7 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distanceSquared(@NotNull Vector3Impl o); + double distanceSquared(@NotNull Vector3 o); /** * Rotates the vector around a given arbitrary axis in 3 dimensional space. @@ -117,7 +117,7 @@ public interface Vector3 extends Cloneable { * * @param axis the axis to rotate the vector around. If the passed vector is * not of length 1, it gets copied and normalized before using it for the - * rotation. Please use {@link Vector3Impl#normalize()} on the instance before + * rotation. Please use {@link Vector3#normalize()} on the instance before * passing it to this method * @param angle the angle to rotate the vector around the axis * @return the same vector @@ -144,7 +144,7 @@ public interface Vector3 extends Cloneable { * @throws IllegalArgumentException if the provided axis vector instance is * null */ - @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3Impl axis, double angle) throws IllegalArgumentException; + @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; /** * Calculates the dot product of this vector with another. The dot product @@ -153,7 +153,7 @@ public interface Vector3 extends Cloneable { * @param other The other vector * @return dot product */ - double dot(@NotNull Vector3Impl other); + double dot(@NotNull Vector3 other); Location toLocation(World world); @@ -161,5 +161,7 @@ public interface Vector3 extends Cloneable { Vector3 subtract(int x, int y, int z); - Vector3 subtract(Vector3Impl end); + Vector3 subtract(Vector3 end); + + public Vector3 clone(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index e35fb3b64..1a4a96d1e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; public interface World extends Handle { long getSeed(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java similarity index 74% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java index 3b9925d46..7308b3343 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/Chunkified.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.generation; +package com.dfsek.terra.api.world.generator; /** * Marker interface that marks a feature as "chunkified" (only modifying one chunk at a time) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java new file mode 100644 index 000000000..676acb412 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; + +public interface Palette { + Palette add(BlockData m, int layers, NoiseSampler sampler); + + Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler); + + /** + * Fetches a material from the palette, at a given layer. + * + * @param layer - The layer at which to fetch the material. + * @return BlockData - The material fetched. + */ + BlockData get(int layer, double x, double y, double z); + + int getSize(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java index 8ee6659cd..191c8a650 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.generation; +package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java index fc8f7bd91..7c70aaca6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.generation; +package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.world.generation.math.samplers.Sampler; @@ -17,17 +17,7 @@ public interface TerraChunkGenerator { void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome); - boolean isParallelCapable(); - - boolean shouldGenerateCaves(); - - boolean shouldGenerateDecorations(); - - boolean shouldGenerateMobs(); - - boolean shouldGenerateStructures(); - - ConfigPackImpl getConfigPack(); + ConfigPack getConfigPack(); TerraPlugin getMain(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index da48b601d..ed0074249 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -40,9 +40,9 @@ public class GridSpawn { zones.add(getChunkSpawn(xi, zi, seed)); } } - Vector3Impl shortest = zones.get(0); + Vector3 shortest = zones.get(0); Vector3 compare = new Vector3Impl(x, 0, z); - for(Vector3Impl v : zones) { + for(Vector3 v : zones) { if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone(); } return shortest; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index a8416b8a5..59f22623f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.math.samplers.Sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index 4f1ce92c6..f40004922 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.BlockData; import java.util.List; -public class NoisePalette extends Palette { +public class NoisePalette extends PaletteImpl { private final NoiseSampler sampler; private final boolean is2D; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java rename to common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java index c16fc737a..b0fc2429b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/Palette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java @@ -3,7 +3,9 @@ package com.dfsek.terra.api.world.palette; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.world.generator.Palette; import java.util.List; import java.util.Random; @@ -12,39 +14,34 @@ import java.util.Random; * A class representation of a "slice" of the world. * Used to get a section of blocks, based on the depth at which they are found. */ -public abstract class Palette { +public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator.Palette { private final List pallet = new GlueList<>(); /** * Constructs a blank palette. */ - public Palette() { + public PaletteImpl() { } - public com.dfsek.terra.api.world.palette.Palette add(BlockData m, int layers, NoiseSampler sampler) { + @Override + public Palette add(BlockData m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { pallet.add(new PaletteLayer(m, sampler)); } return this; } - public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollectionImpl m, int layers, NoiseSampler sampler) { + @Override + public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { pallet.add(new PaletteLayer(m, sampler)); } return this; } - /** - * Fetches a material from the palette, at a given layer. - * - * @param layer - The layer at which to fetch the material. - * @return BlockData - The material fetched. - */ - public abstract BlockData get(int layer, double x, double y, double z); - + @Override public int getSize() { return pallet.size(); } @@ -58,7 +55,7 @@ public abstract class Palette { */ public static class PaletteLayer { private final boolean col; // Is layer using a collection? - private ProbabilityCollectionImpl collection; + private ProbabilityCollection collection; private final NoiseSampler sampler; private BlockData m; @@ -68,7 +65,7 @@ public abstract class Palette { * @param type The collection of materials to choose from. * @param sampler Noise sampler to use */ - public PaletteLayer(ProbabilityCollectionImpl type, NoiseSampler sampler) { + public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { this.sampler = sampler; this.col = true; this.collection = type; @@ -106,8 +103,21 @@ public abstract class Palette { return m; } - public ProbabilityCollectionImpl getCollection() { + public ProbabilityCollection getCollection() { return collection; } } + + public static class Singleton extends PaletteImpl { + private final BlockData item; + + public Singleton(BlockData item) { + this.item = item; + } + + @Override + public BlockData get(int layer, double x, double y, double z) { + return item; + } + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java deleted file mode 100644 index 8bba80e14..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/SinglePalette.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.api.world.palette; - -import com.dfsek.terra.api.block.BlockData; - -public class SinglePalette extends Palette { - private final BlockData item; - - public SinglePalette(BlockData item) { - this.item = item; - } - - @Override - public BlockData get(int layer, double x, double y, double z) { - return item; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java index 256f82eed..64231d6d3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; public class PaletteHolder { private final Palette[] palettes; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java index 17587ac6a..b00c74e77 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java index d74da5eb3..8adec8761 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.world.palette.slant; -import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import java.util.TreeMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 52537c1d7..47b6a3210 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.templates.FloraTemplate; import com.dfsek.terra.world.population.items.flora.TerraFlora; @@ -12,7 +12,7 @@ import com.dfsek.terra.world.population.items.flora.TerraFlora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - Palette palette = new NoisePalette(new WhiteNoiseSampler(2403), false); + PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); for(PaletteLayerHolder layer : config.getFloraPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java index e4d9fbeda..1e97f368e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.NoisePalette; -import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.templates.PaletteTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java index 7dc94a21b..b0aaa5a2c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java @@ -3,7 +3,8 @@ package com.dfsek.terra.config.loaders.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder; @@ -19,7 +20,7 @@ public class PaletteHolderLoader implements TypeLoader { PaletteHolderBuilder builder = new PaletteHolderBuilder(); for(Map layer : palette) { for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); + builder.add(entry.getValue(), (Palette) configLoader.loadType(PaletteImpl.class, entry.getKey())); } } return builder.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 0cf46b1c2..73393cf6f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -19,8 +19,8 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.api.world.palette.SinglePalette; +import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; @@ -256,7 +256,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return 2; } }; - oceanPalette = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:water")); + oceanPalette = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:water")); } public Map getSlabPalettes() { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 994880086..c5d12445c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.factories.BiomeFactory; @@ -42,7 +42,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; - add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); + add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, PaletteImpl.class, () -> new PaletteRegistry(main))); add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main))); add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java index 9c0b871f6..2971c5c59 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java @@ -1,8 +1,8 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.api.world.palette.SinglePalette; +import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.registry.OpenRegistryImpl; public class PaletteRegistry extends OpenRegistryImpl { @@ -15,7 +15,7 @@ public class PaletteRegistry extends OpenRegistryImpl { @Override public Palette get(String identifier) { if(identifier.startsWith("BLOCK:")) - return new SinglePalette(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. + return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. return super.get(identifier); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java index 9332b578d..5faeb2007 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.world.generation.math.samplers.Sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java index 8fb83d9c4..e6ec7c402 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java @@ -2,7 +2,7 @@ package com.dfsek.terra.world.generation; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index b82ac6781..58b9e1213 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -10,9 +10,9 @@ 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.generation.BiomeProvider; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 2f19be0e4..1421a1a9f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -3,6 +3,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; @@ -19,10 +20,9 @@ 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.generation.BiomeProvider; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -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.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; @@ -46,7 +46,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final ConfigPackImpl configPack; private final TerraPlugin main; private final BlockType water; - private final SinglePalette blank; + private final PaletteImpl.Singleton blank; private final List blockPopulators = new ArrayList<>(); private final Carver carver; @@ -63,7 +63,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType(); - blank = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:air")); + blank = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:air")); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 69ac8375e..616f31fb1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -9,8 +9,8 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.world.PopulationUtil; -import com.dfsek.terra.api.world.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.templates.CarverTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index 2550ec8d2..fc3800147 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.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.generation.BiomeProvider; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.flora.FloraLayer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index c37ff2a2c..750e0a9a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.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.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 887146c64..aaf32af6a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -9,8 +9,8 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index 618a02f37..dca8b6daa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.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.generation.BiomeProvider; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.tree.TreeLayer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 8dd36a055..09a0f67a2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; import java.util.ArrayList; diff --git a/common/platform/build.gradle.kts b/common/platform/build.gradle.kts new file mode 100644 index 000000000..7c1ecd52c --- /dev/null +++ b/common/platform/build.gradle.kts @@ -0,0 +1,60 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "shadedApi"(project(":common:implementation")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file 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 2b4a6065f..1b80392b2 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 @@ -22,7 +22,7 @@ import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; import com.dfsek.terra.api.util.logging.Logger; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; import com.dfsek.terra.bukkit.command.SaveDataCommand; 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 c54407525..54b2d6267 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 @@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.population.PopulationManager; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitBiomeGrid; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java index eb57cb2dc..8c3088cc8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java @@ -1,8 +1,7 @@ package com.dfsek.terra.bukkit.generator; -import com.dfsek.terra.api.world.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Chunk; import org.bukkit.World; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 7f75a374e..4e8036cea 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.world.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.api.profiler.ProfileFrame; 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 1ee4aa277..554823475 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 @@ -5,8 +5,8 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.world.generation.Chunkified; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java index 0af63397b..4ea573d51 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generation.Chunkified; +import com.dfsek.terra.api.world.generator.Chunkified; import com.mojang.serialization.Codec; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 7df859f37..488a4a8fe 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import net.minecraft.server.world.ServerWorld; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 9e9a844de..bf77a1d81 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import net.minecraft.server.world.ServerWorld; diff --git a/settings.gradle.kts b/settings.gradle.kts index f8e46baae..69a622230 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,6 +10,9 @@ rootProject.name = "Terra" include("common:api") include("common:implementation") +include("common:platform") + + include("platforms:bukkit") include("platforms:fabric") include("platforms:region") From e34e2dd0b247a19f6d14ad76fc15de4fa70d9012 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 10:48:57 -0700 Subject: [PATCH 0044/1529] cleanup --- .../java/com/dfsek/terra/api/TerraPlugin.java | 18 ++++++------------ .../com/dfsek/terra/api/block/BlockFace.java | 1 - .../terra/api/event/events/PackEvent.java | 2 +- .../events/config/ConfigPackLoadEvent.java | 2 +- .../events/config/ConfigPackPostLoadEvent.java | 2 +- .../events/config/ConfigPackPreLoadEvent.java | 3 +-- .../events/world/TerraWorldLoadEvent.java | 5 ++--- .../world/generation/EntitySpawnEvent.java | 7 +++---- .../world/generation/LootPopulateEvent.java | 7 ++----- .../dfsek/terra/api/noise/NoiseSampler.java | 5 +++-- .../api/noise/normalizer/NormalNormalizer.java | 2 +- .../api/noise/samplers/ExpressionSampler.java | 5 ----- .../noise/samplers/noise/CellularSampler.java | 4 ++-- .../exception/AttemptsFailedException.java | 4 ++-- .../com/dfsek/terra/api/util/MathUtil.java | 2 +- .../terra/api/util/ProbabilityCollection.java | 4 ++-- .../com/dfsek/terra/api/world/BiomeGrid.java | 1 + .../java/com/dfsek/terra/api/world/Flora.java | 3 +-- .../java/com/dfsek/terra/api/world/Tree.java | 1 - .../dfsek/terra/api/world/biome/Generator.java | 2 +- .../terra/api/world/biome/TerraBiome.java | 1 + .../api/world/generator/GeneratorWrapper.java | 1 - .../terra/api/world/generator}/Sampler.java | 2 +- .../world/generator/TerraChunkGenerator.java | 2 -- .../terra/api/util/world/PaletteUtil.java | 2 +- .../api/world/biome/UserDefinedBiome.java | 7 ++++--- .../java/com/dfsek/terra/world/TerraWorld.java | 2 +- .../generators/DefaultChunkGenerator2D.java | 2 +- .../generators/DefaultChunkGenerator3D.java | 2 +- .../world/generation/math/SamplerCache.java | 2 +- .../generation/math/samplers/Sampler2D.java | 1 + .../generation/math/samplers/Sampler3D.java | 1 + .../population/items/flora/TerraFlora.java | 2 -- 33 files changed, 44 insertions(+), 63 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers => api/src/main/java/com/dfsek/terra/api/world/generator}/Sampler.java (85%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 8d7e55682..d127535e2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -1,20 +1,14 @@ package com.dfsek.terra.api; -import com.dfsek.terra.api.addons.TerraAddon; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.util.JarUtil; -import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.util.logging.Logger; -import com.dfsek.terra.config.PluginConfig; -import com.dfsek.terra.config.lang.Language; -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.profiler.Profiler; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.World; import java.io.File; import java.io.IOException; @@ -39,7 +33,7 @@ public interface TerraPlugin extends LoaderRegistrar { CheckedRegistry getConfigRegistry(); - LockedRegistry getAddons(); + Registry getAddons(); boolean reload(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java index ccb463640..033c53232 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; public enum BlockFace { diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index 66f7b7d6c..048885f1f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.event.events; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.annotations.Global; -import com.dfsek.terra.config.pack.ConfigPack; /** * An event with functionality directly linked to a {@link ConfigPack}. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java index e995c8897..08238e3fa 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java @@ -2,8 +2,8 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.config.pack.ConfigPack; /** * An event related to the loading process of config packs. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java index 1398ec219..7ebced059 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.api.config.ConfigPack; /** * Called when a config pack has finished loading. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java index 1ac2de54d..bd5ff66c1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java @@ -1,8 +1,7 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.api.config.ConfigPack; /** * Called before a config pack's registries are filled. At this point, the pack manifest has been loaded, and all registries are empty. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java index 52e5bf956..3bc2bfeec 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java @@ -1,9 +1,8 @@ package com.dfsek.terra.api.event.events.world; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.world.TerraWorld; + /** * Called upon initialization of a TerraWorld. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index f5748ee4c..22ac7cd66 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -1,13 +1,12 @@ package com.dfsek.terra.api.event.events.world.generation; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; -import com.dfsek.terra.config.pack.ConfigPack; +import com.dfsek.terra.api.vector.Location; /** - * Called when an entity is spawned via {@link BufferedEntity}. + * Called when an entity is spawned. */ public class EntitySpawnEvent implements PackEvent { private final ConfigPack pack; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 39657595b..392fa0528 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,18 +1,15 @@ package com.dfsek.terra.api.event.events.world.generation; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.AbstractCancellable; import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.structures.loot.LootTable; -import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; -import com.dfsek.terra.config.pack.ConfigPack; import org.jetbrains.annotations.NotNull; /** - * Called when loot is populated via {@link BufferedLootApplication}. + * Called when loot is populated. */ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, Cancellable { private final Block block; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index 7d04c5619..1509e752e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -1,7 +1,8 @@ package com.dfsek.terra.api.noise; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; + +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; public interface NoiseSampler { /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java index 377a43fd3..0cb62d681 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.noise.normalizer; -import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; import net.jafama.FastMath; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java index 291384220..2f42d8bda 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java @@ -5,11 +5,6 @@ import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import java.util.Map; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java index 01e0f5424..8c27f612d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java @@ -2,8 +2,8 @@ package com.dfsek.terra.api.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; /** * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java index f3a27d657..77bf897e6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.transform.exception; -import com.dfsek.terra.api.util.GlueList; +import java.util.ArrayList; import java.util.List; public class AttemptsFailedException extends RuntimeException { @@ -14,6 +14,6 @@ public class AttemptsFailedException extends RuntimeException { } public List getCauses() { - return new GlueList<>(causes); + return new ArrayList<>(causes); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java index fea8bade5..178b18a37 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; import java.util.List; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java index 0753f428b..37087089f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java @@ -8,7 +8,7 @@ import java.util.Set; import java.util.function.Function; public interface ProbabilityCollection extends Collection { - ProbabilityCollectionImpl add(E item, int probability); + ProbabilityCollection add(E item, int probability); E get(Random r); @@ -16,7 +16,7 @@ public interface ProbabilityCollection extends Collection { E get(NoiseSampler n, double x, double z); - ProbabilityCollectionImpl map(Function mapper, boolean carryNull); + ProbabilityCollection map(Function mapper, boolean carryNull); int getTotalProbability(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java b/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java index 528cf7a4b..89cf26061 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.world.biome.Biome; import org.jetbrains.annotations.NotNull; public interface BiomeGrid extends Handle { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java index 44e0f7b87..536018fac 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,9 +1,8 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.math.Range; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.world.Chunk; import java.util.List; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 450ca83cf..22065ff88 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.Random; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index b3e6f9628..ff446a90e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.palette.Palette; +import com.dfsek.terra.api.world.generator.Palette; public interface Generator { /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index a05210ab5..dd2cfa170 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.world.World; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java index ad41a7026..0b6cac8e4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; public interface GeneratorWrapper extends Handle { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Sampler.java similarity index 85% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/Sampler.java index d7dffcbe4..082215c19 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Sampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math.samplers; +package com.dfsek.terra.api.world.generator; @FunctionalInterface public interface Sampler { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java index 7c70aaca6..8a4b19c28 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java @@ -5,8 +5,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.world.generation.math.samplers.Sampler; import org.jetbrains.annotations.NotNull; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index 59f22623f..8fafaed40 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; public final class PaletteUtil { public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java index 6dcbe2d09..729cff32b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.world.biome; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.BiomeTemplate; @@ -12,14 +13,14 @@ import java.util.Set; */ public class UserDefinedBiome implements TerraBiome { private final WorldGenerator gen; - private final ProbabilityCollectionImpl vanilla; + private final ProbabilityCollection vanilla; private final String id; private final BiomeTemplate config; private final int color; private final Set tags; - public UserDefinedBiome(ProbabilityCollectionImpl vanilla, WorldGenerator gen, BiomeTemplate config) { + public UserDefinedBiome(ProbabilityCollection vanilla, WorldGenerator gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); @@ -35,7 +36,7 @@ public class UserDefinedBiome implements TerraBiome { * @return Collection of biomes to represent the custom biome. */ @Override - public ProbabilityCollectionImpl getVanillaBiomes() { + public ProbabilityCollection getVanillaBiomes() { return vanilla; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java index 5faeb2007..bb882cf4a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; public class TerraWorld { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 58b9e1213..c94950fd5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -20,7 +20,7 @@ import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.SamplerCache; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler2D; import com.dfsek.terra.world.population.CavePopulator; import com.dfsek.terra.world.population.OrePopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 1421a1a9f..90fd79338 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -28,7 +28,7 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; import com.dfsek.terra.world.population.CavePopulator; import com.dfsek.terra.world.population.FloraPopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java index f80c9684a..37776fa7c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java @@ -3,7 +3,7 @@ package com.dfsek.terra.world.generation.math; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.world.TerraWorld; -import com.dfsek.terra.world.generation.math.samplers.Sampler; +import com.dfsek.terra.api.world.generator.Sampler; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; 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 index 4ce0f2eae..8e0105127 100644 --- 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 @@ -2,6 +2,7 @@ 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; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java index f85600c27..ea1113195 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java @@ -2,6 +2,7 @@ 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.ChunkInterpolator3D; import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 09a0f67a2..02e5253b3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -94,8 +94,6 @@ public class TerraFlora implements Flora { @Override public boolean plant(Location location) { - WorldHandle handle = main.getWorldHandle(); - boolean doRotation = testRotation.size() > 0; int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; From 686680d7313412387c85289b1378572cdf7094f7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 12:03:17 -0700 Subject: [PATCH 0045/1529] location garbage --- .../java/com/dfsek/terra/api/TerraPlugin.java | 1 + .../dfsek/terra/api/config/ConfigPack.java | 1 + .../dfsek/terra/api/config/WorldConfig.java | 20 ++ .../events/world/TerraWorldLoadEvent.java | 2 + .../dfsek/terra/api/handle/WorldHandle.java | 2 +- .../com/dfsek/terra/api/vector/Location.java | 174 +++------------ .../com/dfsek/terra/api/world/TerraWorld.java | 31 +++ .../java/com/dfsek/terra/api/world/Tree.java | 4 +- .../structures/script/StructureScript.java | 14 +- .../script/functions/CheckFunction.java | 8 +- .../api/structures/structure/buffer/Cell.java | 4 +- .../structure/buffer/DirectBuffer.java | 16 +- .../structure/buffer/IntermediateBuffer.java | 10 +- .../structure/buffer/StructureBuffer.java | 18 +- .../structure/buffer/items/BufferedBlock.java | 4 +- .../buffer/items/BufferedEntity.java | 4 +- .../buffer/items/BufferedLootApplication.java | 4 +- .../buffer/items/BufferedPulledBlock.java | 4 +- .../items/BufferedStateManipulator.java | 4 +- .../api/world/locate/AsyncBiomeFinder.java | 4 +- .../api/world/locate/AsyncFeatureFinder.java | 4 +- .../world/locate/AsyncStructureFinder.java | 6 +- .../commands/biome/BiomeLocateCommand.java | 4 +- .../commands/structure/SpawnCommand.java | 6 +- .../structure/StructureExportCommand.java | 12 +- .../structure/StructureLocateCommand.java | 4 +- .../dfsek/terra/config/dummy/DummyWorld.java | 4 +- .../terra/config/pack/ConfigPackImpl.java | 11 +- ...{WorldConfig.java => WorldConfigImpl.java} | 29 ++- .../com/dfsek/terra/vector/LocationImpl.java | 205 ++++++++++++++++++ .../com/dfsek/terra/vector/Vector3Impl.java | 5 +- .../{TerraWorld.java => TerraWorldImpl.java} | 29 ++- .../generators/DefaultChunkGenerator2D.java | 2 +- .../generators/DefaultChunkGenerator3D.java | 2 +- .../world/generation/math/SamplerCache.java | 2 +- .../terra/world/population/CavePopulator.java | 16 +- .../world/population/FloraPopulator.java | 2 +- .../terra/world/population/OrePopulator.java | 2 +- .../world/population/StructurePopulator.java | 10 +- .../terra/world/population/TreePopulator.java | 2 +- .../population/items/flora/BlockFlora.java | 4 +- .../population/items/flora/ConstantFlora.java | 4 +- .../population/items/flora/TerraFlora.java | 5 +- .../population/items/tree/TerraTree.java | 4 +- .../com/dfsek/terra/bukkit/BukkitEntity.java | 6 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 8 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 9 +- .../bukkit/handles/BukkitWorldHandle.java | 4 +- .../bukkit/listeners/CommonListener.java | 10 +- .../terra/bukkit/listeners/PaperListener.java | 2 +- .../bukkit/listeners/SpigotListener.java | 2 +- .../terra/bukkit/world/BukkitAdapter.java | 7 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 4 +- .../dfsek/terra/bukkit/world/BukkitWorld.java | 4 +- .../terra/bukkit/world/block/BukkitBlock.java | 4 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 5 +- .../dfsek/terra/fabric/block/FabricBlock.java | 4 +- .../FabricChunkGeneratorWrapper.java | 2 +- .../fabric/handle/FabricWorldHandle.java | 4 +- .../terra/fabric/mixin/ServerWorldMixin.java | 4 +- .../ConfiguredFeatureMixin.java | 4 +- .../implementations/entity/EntityMixin.java | 8 +- .../world/ChunkRegionMixin.java | 4 +- .../world/ServerWorldMixin.java | 4 +- .../terra/fabric/util/WorldEditUtil.java | 8 +- .../com/dfsek/terra/StandalonePlugin.java | 5 +- .../com/dfsek/terra/platform/DirectBlock.java | 4 +- .../com/dfsek/terra/platform/DirectWorld.java | 4 +- .../com/dfsek/terra/platform/RawTree.java | 4 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 2 +- 70 files changed, 488 insertions(+), 341 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java rename common/implementation/src/main/java/com/dfsek/terra/config/pack/{WorldConfig.java => WorldConfigImpl.java} (67%) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java rename common/implementation/src/main/java/com/dfsek/terra/world/{TerraWorld.java => TerraWorldImpl.java} (83%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index d127535e2..6a710c714 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import java.io.File; 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 cc1c79f7d..f409317ff 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 @@ -2,6 +2,7 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public interface ConfigPack extends LoaderRegistrar { diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java new file mode 100644 index 000000000..a6361b3ba --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.api.config; + +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.Set; + +public interface WorldConfig { + @SuppressWarnings("unchecked") + Registry getRegistry(Class clazz); + + TerraWorld getWorld(); + + SamplerCache getSamplerCache(); + + Set getCarvers(); + + BiomeProvider getProvider(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java index 3bc2bfeec..18341ca9e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java @@ -1,7 +1,9 @@ package com.dfsek.terra.api.event.events.world; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.event.events.PackEvent; +import com.dfsek.terra.api.world.TerraWorld; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 4575b5d2c..43a5e0357 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.handle; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.vector.Location; /** * Interface to be implemented for world manipulation. diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java index 3a2595588..1d3006dec 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java @@ -3,177 +3,55 @@ package com.dfsek.terra.api.vector; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.world.World; -import java.util.Objects; - @Deprecated -public class Location implements Cloneable { - private World world; - private Vector3 vector; - private double pitch; - private double yaw; +public interface Location extends Cloneable { + void setWorld(World world); - public Location(World w, double x, double y, double z) { - this.world = w; - this.vector = new Vector3Impl(x, y, z); - } + Vector3 getVector(); - public Location(World w, Vector3 vector) { - this.world = w; - this.vector = vector; - } + void setVector(Vector3 vector); - public void setWorld(World world) { - this.world = world; - } + Location clone(); - public Vector3 getVector() { - return vector; - } + int getBlockX(); - public void setVector(Vector3 vector) { - this.vector = vector; - } + int getBlockY(); - @Override - public Location clone() { - try { - Location other = (Location) super.clone(); - other.setVector(other.getVector().clone()); - return other; - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } + int getBlockZ(); - public int getBlockX() { - return vector.getBlockX(); - } + double getY(); - public int getBlockY() { - return vector.getBlockY(); - } + Location setY(double y); - public int getBlockZ() { - return vector.getBlockZ(); - } + double getX(); - public double getY() { - return vector.getY(); - } + Location setX(double x); - public Location setY(double y) { - vector.setY(y); - return this; - } + double getZ(); - public double getX() { - return vector.getX(); - } + Location setZ(double z); - public Location setX(double x) { - vector.setX(x); - return this; - } + World getWorld(); - public double getZ() { - return vector.getZ(); - } + Location add(double x, double y, double z); - public Location setZ(double z) { - vector.setZ(z); - return this; - } + Block getBlock(); - public World getWorld() { - return world; - } + Location subtract(int x, int y, int z); - public Location add(double x, double y, double z) { - vector.add(x, y, z); - return this; - } + Location add(Vector3 add); - public Block getBlock() { - return world.getBlockAt(this); - } + Location add(Location add); - public Location subtract(int x, int y, int z) { - vector.subtract(x, y, z); - return this; - } + double getPitch(); - public Location add(Vector3 add) { - vector.add(add); - return this; - } + void setPitch(double pitch); - public Location add(Location add) { - vector.add(add.toVector()); - return this; - } + double getYaw(); - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Location)) { - return false; - } - final Location other = (Location) obj; + void setYaw(double yaw); - World world = this.world; - World otherWorld = other.world; - if(!Objects.equals(world, otherWorld)) { - return false; - } - if(Double.doubleToLongBits(this.vector.getX()) != Double.doubleToLongBits(other.vector.getX())) { - return false; - } - if(Double.doubleToLongBits(this.vector.getY()) != Double.doubleToLongBits(other.vector.getY())) { - return false; - } - return Double.doubleToLongBits(this.vector.getZ()) == Double.doubleToLongBits(other.vector.getZ()); - } + Vector3 toVector(); - public double getPitch() { - return pitch; - } - - public void setPitch(double pitch) { - this.pitch = pitch; - } - - public double getYaw() { - return yaw; - } - - public void setYaw(double yaw) { - this.yaw = yaw; - } - - @Override - public int hashCode() { - int hash = 3; - - World world = (this.world == null) ? null : this.world; - hash = 19 * hash + (world != null ? world.hashCode() : 0); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getX()) ^ (Double.doubleToLongBits(this.vector.getX()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getY()) ^ (Double.doubleToLongBits(this.vector.getY()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getZ()) ^ (Double.doubleToLongBits(this.vector.getZ()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.pitch) ^ Double.doubleToLongBits(this.pitch) >>> 32); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.yaw) ^ Double.doubleToLongBits(this.yaw) >>> 32); - return hash; - } - - public Vector3 toVector() { - return vector.clone(); - } - - @Override - public String toString() { - return "[" + world + ": (" + getX() + ", " + getY() + ", " + getZ() + ")]"; - } - - public Location multiply(double v) { - vector.multiply(v); - return this; - } + Location multiply(double v); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java new file mode 100644 index 000000000..6e612db1d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.api.world; + +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.config.WorldConfig; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +public interface TerraWorld { + World getWorld(); + + BiomeProvider getBiomeProvider(); + + WorldConfig getConfig(); + + boolean isSafe(); + + /** + * Get a block at an ungenerated location + * + * @param x X coordinate + * @param y Y coordinate + * @param z Z coordinate + * @return BlockData + */ + BlockData getUngeneratedBlock(int x, int y, int z); + + BlockData getUngeneratedBlock(Location l); + + BlockData getUngeneratedBlock(Vector3 v); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 22065ff88..81e15f84e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -1,12 +1,12 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.LocationImpl; import java.util.Random; public interface Tree { - boolean plant(Location l, Random r); + boolean plant(LocationImpl l, Random r); MaterialSet getSpawnable(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index b1a376d1a..fb1dd2281 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structures.loot.LootTable; @@ -47,7 +47,7 @@ import java.util.concurrent.ExecutionException; public class StructureScript { private final Block block; private final String id; - private final Cache cache; + private final Cache cache; private final TerraPlugin main; private String tempID; @@ -118,7 +118,7 @@ public class StructureScript { * @return Whether generation was successful */ @SuppressWarnings("try") - public boolean execute(Location location, Random random, Rotation rotation) { + public boolean execute(LocationImpl location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { StructureBuffer buffer = new StructureBuffer(location); boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); @@ -128,7 +128,7 @@ public class StructureScript { } @SuppressWarnings("try") - public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) { + public boolean execute(LocationImpl location, Chunk chunk, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); buffer.paste(chunk); @@ -137,14 +137,14 @@ public class StructureScript { } @SuppressWarnings("try") - public boolean test(Location location, Random random, Rotation rotation) { + public boolean test(LocationImpl location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); return buffer.succeeded(); } } - private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { + private StructureBuffer computeBuffer(LocationImpl location, Random random, Rotation rotation) { try { return cache.get(location, () -> { StructureBuffer buf = new StructureBuffer(location); @@ -164,7 +164,7 @@ public class StructureScript { } @SuppressWarnings("try") - public boolean executeDirect(Location location, Random random, Rotation rotation) { + public boolean executeDirect(LocationImpl location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { DirectBuffer buffer = new DirectBuffer(location); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 5612571a8..85d08baab 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; @@ -16,7 +17,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.SamplerCache; import net.jafama.FastMath; @@ -47,12 +47,12 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + LocationImpl location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getBuffer().getOrigin().getWorld()); } - private String apply(Location vector, World world) { + private String apply(LocationImpl vector, World world) { TerraWorld tw = main.getWorld(world); SamplerCache cache = tw.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index de57b35b7..e6b16161b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; @@ -12,7 +12,7 @@ public class Cell implements BufferedItem { @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { items.forEach(item -> item.paste(origin)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 4d1d18cc9..83c34df4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; import java.util.LinkedHashMap; @@ -11,31 +11,31 @@ import java.util.Map; * Buffer implementation that directly pastes to the world. */ public class DirectBuffer implements Buffer { - private final Location origin; - private final Map marks = new LinkedHashMap<>(); + private final LocationImpl origin; + private final Map marks = new LinkedHashMap<>(); - public DirectBuffer(Location origin) { + public DirectBuffer(LocationImpl origin) { this.origin = origin; } @Override - public Buffer addItem(BufferedItem item, Location location) { + public Buffer addItem(BufferedItem item, LocationImpl location) { item.paste(origin.clone().add(location)); return this; } @Override - public Location getOrigin() { + public LocationImpl getOrigin() { return origin; } @Override - public String getMark(Location location) { + public String getMark(LocationImpl location) { return marks.get(location); } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, LocationImpl location) { marks.put(location, mark); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 7f990062b..a32c7a40a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -15,22 +15,22 @@ public class IntermediateBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, Location location) { + public Buffer addItem(BufferedItem item, LocationImpl location) { return original.addItem(item, location.add(offset)); } @Override - public Location getOrigin() { + public LocationImpl getOrigin() { return original.getOrigin().clone().add(offset); } @Override - public String getMark(Location location) { + public String getMark(LocationImpl location) { return original.getMark(location.add(offset)); } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, LocationImpl location) { original.setMark(mark, location.add(offset)); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 45daa63d1..63e148c68 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.structure.buffer.BufferedItem; import net.jafama.FastMath; @@ -10,11 +10,11 @@ import java.util.LinkedHashMap; import java.util.Map; public class StructureBuffer implements Buffer { - private final Map bufferedItemMap = new LinkedHashMap<>(); - private final Location origin; + private final Map bufferedItemMap = new LinkedHashMap<>(); + private final LocationImpl origin; private boolean succeeded; - public StructureBuffer(Location origin) { + public StructureBuffer(LocationImpl origin) { this.origin = origin; } @@ -24,7 +24,7 @@ public class StructureBuffer implements Buffer { public void paste(Chunk chunk) { bufferedItemMap.forEach(((location, item) -> { - Location current = origin.clone().add(location); + LocationImpl current = origin.clone().add(location); if(FastMath.floorDiv(current.getBlockX(), 16) != chunk.getX() || FastMath.floorDiv(current.getBlockZ(), 16) != chunk.getZ()) return; item.paste(chunk, current); @@ -32,13 +32,13 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, Location location) { + public Buffer addItem(BufferedItem item, LocationImpl location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item); return this; } @Override - public String getMark(Location location) { + public String getMark(LocationImpl location) { Cell cell = bufferedItemMap.get(location); if(cell != null) { return cell.getMark(); @@ -47,7 +47,7 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, LocationImpl location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark); return this; } @@ -61,7 +61,7 @@ public class StructureBuffer implements Buffer { } @Override - public Location getOrigin() { + public LocationImpl getOrigin() { return origin.clone(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index dbd5eda25..9ac42cee5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.data.Waterlogged; @@ -21,7 +21,7 @@ public class BufferedBlock implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { Block block = origin.getBlock(); try { if(overwrite || block.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index f47b8c6e0..08d279f01 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -18,7 +18,7 @@ public class BufferedEntity implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type); main.getEventManager().callEvent(new EntitySpawnEvent(entity.getWorld().getTerraGenerator().getConfigPack(), entity, entity.getLocation())); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 25676451b..d13d2cd2f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.Container; @@ -23,7 +23,7 @@ public class BufferedLootApplication implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { try { Block block = origin.getBlock(); BlockState data = block.getState(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index a6437cca5..8d0fcb1b8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -14,7 +14,7 @@ public class BufferedPulledBlock implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { Block pos = origin.getBlock(); while(pos.getY() > origin.getWorld().getMinHeight()) { if(!pos.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index e9cb56151..161f6c385 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.state.BlockState; public class BufferedStateManipulator implements BufferedItem { @@ -15,7 +15,7 @@ public class BufferedStateManipulator implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(LocationImpl origin) { try { BlockState state = origin.getBlock().getState(); state.applyState(data); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index d5355509b..ef3d7b6c5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -14,7 +14,7 @@ import java.util.function.Consumer; */ public class AsyncBiomeFinder extends AsyncFeatureFinder { - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index f5d905511..71ce825cc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; @@ -22,7 +22,7 @@ public abstract class AsyncFeatureFinder implements Runnable { protected int searchSize = 1; protected final TerraPlugin main; - public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { this.provider = provider; this.target = target; this.main = main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 14558e0f3..f1d46f297 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; @@ -16,7 +16,7 @@ import java.util.Random; import java.util.function.Consumer; public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } @@ -28,7 +28,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { @Override public boolean isValid(int x, int z, TerraStructure target) { - Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); + LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random random = new FastRandom(MathUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index bad1ab4c2..20f885fd9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -69,7 +69,7 @@ public class BiomeLocateCommand implements CommandTemplate { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.setLocation(new Location(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index f77bde4a4..4ee07f659 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; @@ -33,14 +33,14 @@ public class SpawnCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - Location p = player.getLocation(); + LocationImpl p = player.getLocation(); int x = p.getBlockX(); int y = p.getBlockY(); int z = p.getBlockZ(); Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new Location(player.getWorld(), x, y, z) + new LocationImpl(player.getWorld(), x, y, z) ), Rotation.NONE, new FastRandom(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 37b3cf7c9..7a934a553 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -45,10 +45,10 @@ public class StructureExportCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - Pair l = main.getWorldHandle().getSelectedLocation(player); + Pair l = main.getWorldHandle().getSelectedLocation(player); - Location l1 = l.getLeft(); - Location l2 = l.getRight(); + LocationImpl l1 = l.getLeft(); + LocationImpl l2 = l.getRight(); StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); @@ -59,7 +59,7 @@ public class StructureExportCommand implements CommandTemplate { for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - Block block = new Location(l1.getWorld(), x, y, z).getBlock(); + Block block = new LocationImpl(l1.getWorld(), x, y, z).getBlock(); BlockState state = block.getState(); if(state instanceof Sign) { Sign sign = (Sign) state; @@ -77,7 +77,7 @@ public class StructureExportCommand implements CommandTemplate { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - Block block = new Location(l1.getWorld(), x, y, z).getBlock(); + Block block = new LocationImpl(l1.getWorld(), x, y, z).getBlock(); BlockData data = block.getBlockData(); if(block.getBlockData().isStructureVoid()) continue; BlockState state = block.getState(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index 17eea5e15..97a909a3f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -67,7 +67,7 @@ public class StructureLocateCommand implements CommandTemplate { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.setLocation(new Location(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index d6f1441d9..67eb7891e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -41,7 +41,7 @@ public class DummyWorld implements World { } @Override - public Entity spawnEntity(Location location, EntityType entityType) { + public Entity spawnEntity(LocationImpl location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index fd44c2b39..db6dd826a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -21,6 +21,7 @@ import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; @@ -40,7 +41,7 @@ import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.LootRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; import com.dfsek.terra.registry.config.ScriptRegistry; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.TerraWorldImpl; import com.dfsek.terra.world.population.items.TerraStructure; import org.apache.commons.io.IOUtils; import org.json.simple.parser.ParseException; @@ -123,7 +124,7 @@ public class ConfigPackImpl implements ConfigPack { main.logger().severe("Failed to load config pack from folder \"" + folder.getAbsolutePath() + "\""); throw e; } - toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately. + toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { @@ -171,7 +172,7 @@ public class ConfigPackImpl implements ConfigPack { throw e; } - toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately. + toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } @SuppressWarnings({"unchecked", "rawtypes"}) @@ -298,8 +299,8 @@ public class ConfigPackImpl implements ConfigPack { @Override - public WorldConfig toWorldConfig(TerraWorld world) { - return new WorldConfig(world, this, main); + public WorldConfigImpl toWorldConfig(TerraWorld world) { + return new WorldConfigImpl(world, this, main); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index a0c553ece..b68752b9d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -1,13 +1,15 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.registry.LockedRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.registry.OpenRegistry; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.registry.LockedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.world.population.items.TerraStructure; @@ -16,7 +18,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -public class WorldConfig { +public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig { private final SamplerCache samplerCache; private final BiomeProvider provider; @@ -24,39 +26,44 @@ public class WorldConfig { private final TerraWorld world; private final ConfigPackImpl pack; - private final Map, LockedRegistry> registryMap = new HashMap<>(); + private final Map, Registry> registryMap = new HashMap<>(); - public WorldConfig(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { + public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { this.world = world; this.pack = pack; this.samplerCache = new SamplerCache(main, world); - pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistry<>(pair.getLeft()))); + pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); - OpenRegistry biomeOpenRegistry = new OpenRegistry<>(); + OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); - registryMap.put(TerraBiome.class, new LockedRegistry<>(biomeOpenRegistry)); + registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); } + @Override @SuppressWarnings("unchecked") - public LockedRegistry getRegistry(Class clazz) { - return (LockedRegistry) registryMap.get(clazz); + public Registry getRegistry(Class clazz) { + return (LockedRegistryImpl) registryMap.get(clazz); } + @Override public TerraWorld getWorld() { return world; } + @Override public SamplerCache getSamplerCache() { return samplerCache; } + @Override public Set getCarvers() { return new HashSet<>(getRegistry(UserDefinedCarver.class).entries()); } + @Override public BiomeProvider getProvider() { return provider; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java new file mode 100644 index 000000000..a14581f8c --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java @@ -0,0 +1,205 @@ +package com.dfsek.terra.vector; + +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; + +import java.util.Objects; + +@Deprecated +public class LocationImpl implements Location { + private World world; + private Vector3 vector; + private double pitch; + private double yaw; + + public LocationImpl(World w, double x, double y, double z) { + this.world = w; + this.vector = new Vector3Impl(x, y, z); + } + + public LocationImpl(World w, Vector3 vector) { + this.world = w; + this.vector = vector; + } + + @Override + public void setWorld(World world) { + this.world = world; + } + + @Override + public Vector3 getVector() { + return vector; + } + + @Override + public void setVector(Vector3 vector) { + this.vector = vector; + } + + @Override + public Location clone() { + try { + LocationImpl other = (LocationImpl) super.clone(); + other.setVector(other.getVector().clone()); + return other; + } catch(CloneNotSupportedException e) { + throw new Error(e); + } + } + + @Override + public int getBlockX() { + return vector.getBlockX(); + } + + @Override + public int getBlockY() { + return vector.getBlockY(); + } + + @Override + public int getBlockZ() { + return vector.getBlockZ(); + } + + @Override + public double getY() { + return vector.getY(); + } + + @Override + public Location setY(double y) { + vector.setY(y); + return this; + } + + @Override + public double getX() { + return vector.getX(); + } + + @Override + public Location setX(double x) { + vector.setX(x); + return this; + } + + @Override + public double getZ() { + return vector.getZ(); + } + + @Override + public LocationImpl setZ(double z) { + vector.setZ(z); + return this; + } + + @Override + public World getWorld() { + return world; + } + + @Override + public Location add(double x, double y, double z) { + vector.add(x, y, z); + return this; + } + + @Override + public Block getBlock() { + return world.getBlockAt(this); + } + + @Override + public Location subtract(int x, int y, int z) { + vector.subtract(x, y, z); + return this; + } + + @Override + public Location add(Vector3 add) { + vector.add(add); + return this; + } + + @Override + public Location add(Location add) { + vector.add(add.toVector()); + return this; + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof LocationImpl)) { + return false; + } + final LocationImpl other = (LocationImpl) obj; + + World world = this.world; + World otherWorld = other.world; + if(!Objects.equals(world, otherWorld)) { + return false; + } + if(Double.doubleToLongBits(this.vector.getX()) != Double.doubleToLongBits(other.vector.getX())) { + return false; + } + if(Double.doubleToLongBits(this.vector.getY()) != Double.doubleToLongBits(other.vector.getY())) { + return false; + } + return Double.doubleToLongBits(this.vector.getZ()) == Double.doubleToLongBits(other.vector.getZ()); + } + + @Override + public double getPitch() { + return pitch; + } + + @Override + public void setPitch(double pitch) { + this.pitch = pitch; + } + + @Override + public double getYaw() { + return yaw; + } + + @Override + public void setYaw(double yaw) { + this.yaw = yaw; + } + + @Override + public int hashCode() { + int hash = 3; + + World world = (this.world == null) ? null : this.world; + hash = 19 * hash + (world != null ? world.hashCode() : 0); + hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getX()) ^ (Double.doubleToLongBits(this.vector.getX()) >>> 32)); + hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getY()) ^ (Double.doubleToLongBits(this.vector.getY()) >>> 32)); + hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getZ()) ^ (Double.doubleToLongBits(this.vector.getZ()) >>> 32)); + hash = 19 * hash + (int) (Double.doubleToLongBits(this.pitch) ^ Double.doubleToLongBits(this.pitch) >>> 32); + hash = 19 * hash + (int) (Double.doubleToLongBits(this.yaw) ^ Double.doubleToLongBits(this.yaw) >>> 32); + return hash; + } + + @Override + public Vector3 toVector() { + return vector.clone(); + } + + @Override + public String toString() { + return "[" + world + ": (" + getX() + ", " + getY() + ", " + getZ() + ")]"; + } + + @Override + public LocationImpl multiply(double v) { + vector.multiply(v); + return this; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index 2f1906941..9475cd2f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -2,7 +2,6 @@ package com.dfsek.terra.vector; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import net.jafama.FastMath; @@ -208,8 +207,8 @@ public class Vector3Impl implements Vector3 { } @Override - public Location toLocation(World world) { - return new Location(world, this.clone()); + public LocationImpl toLocation(World world) { + return new LocationImpl(world, this.clone()); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java rename to common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index bb882cf4a..ac68b683b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -2,7 +2,7 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.World; @@ -10,19 +10,19 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.pack.WorldConfig; +import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; -public class TerraWorld { +public class TerraWorldImpl implements com.dfsek.terra.api.world.TerraWorld { private final BiomeProvider provider; - private final WorldConfig config; + private final WorldConfigImpl config; private final boolean safe; private final World world; private final BlockData air; - public TerraWorld(World w, ConfigPackImpl c, TerraPlugin main) { + public TerraWorldImpl(World w, ConfigPackImpl c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; config = c.toWorldConfig(this); @@ -33,32 +33,29 @@ public class TerraWorld { } + @Override public World getWorld() { return world; } + @Override public BiomeProvider getBiomeProvider() { return provider; } - public WorldConfig getConfig() { + @Override + public WorldConfigImpl getConfig() { return config; } + @Override public boolean isSafe() { return safe; } - /** - * Get a block at an ungenerated location - * - * @param x X coordinate - * @param y Y coordinate - * @param z Z coordinate - * @return BlockData - */ + @Override public BlockData getUngeneratedBlock(int x, int y, int z) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(x, z); Palette palette = biome.getGenerator(world).getPalette(y); @@ -78,10 +75,12 @@ public class TerraWorld { } else return air; } - public BlockData getUngeneratedBlock(Location l) { + @Override + public BlockData getUngeneratedBlock(LocationImpl l) { return getUngeneratedBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); } + @Override public BlockData getUngeneratedBlock(Vector3 v) { return getUngeneratedBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index c94950fd5..5ed1316ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.BiomeGrid; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.util.world.PaletteUtil; @@ -17,7 +18,6 @@ import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.api.world.generator.Sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 90fd79338..3f2709a6a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -3,6 +3,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.vector.Vector3Impl; @@ -26,7 +27,6 @@ import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java index 37776fa7c..6ca432233 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java @@ -2,7 +2,7 @@ package com.dfsek.terra.world.generation.math; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.Sampler; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 616f31fb1..38ab60273 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,21 +1,21 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.pack.WorldConfig; +import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -41,12 +41,12 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); if(!tw.isSafe()) return; - WorldConfig config = tw.getConfig(); + WorldConfigImpl config = tw.getConfig(); if(config.getTemplate().disableCarvers()) return; for(UserDefinedCarver c : config.getCarvers()) { CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); + Map shiftCandidate = new HashMap<>(); Set updateNeeded = new HashSet<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { @@ -85,9 +85,9 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { } } }); - for(Map.Entry entry : shiftCandidate.entrySet()) { - Location l = entry.getKey(); - Location mut = l.clone(); + for(Map.Entry entry : shiftCandidate.entrySet()) { + LocationImpl l = entry.getKey(); + LocationImpl mut = l.clone(); BlockData orig = l.getBlock().getBlockData(); do mut.subtract(0, 1, 0); while(mut.getY() > world.getMinHeight() && mut.getBlock().getBlockData().matches(orig)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index fc3800147..d315b5472 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -2,6 +2,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -10,7 +11,6 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 750e0a9a1..24b63d96a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -2,6 +2,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -11,7 +12,6 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index aaf32af6a..8f8486e33 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -2,8 +2,9 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; @@ -11,9 +12,8 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.config.pack.WorldConfig; +import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -38,9 +38,9 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { int cz = (chunk.getZ() << 4); if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); - WorldConfig config = tw.getConfig(); + WorldConfigImpl config = tw.getConfig(); for(TerraStructure conf : config.getStructures()) { - Location spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); + LocationImpl spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index dca8b6daa..f4e1efd3a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -9,7 +10,6 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index 05b4ee9e2..d9ee0aa9c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -37,7 +37,7 @@ public class BlockFlora implements Flora { } @Override - public boolean plant(Location location) { + public boolean plant(LocationImpl location) { location.add(0, 1, 0).getBlock().setBlockData(data, true); return true; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index b1bee9cda..a52eb7ed1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -43,7 +43,7 @@ public class ConstantFlora implements Flora { } @Override - public boolean plant(Location l) { + public boolean plant(LocationImpl l) { for(int i = 1; i < data.size() + 1; i++) { l.clone().add(0, i, 0).getBlock().setBlockData(data.get(i - 1), false); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 02e5253b3..7f6536bd1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -2,14 +2,13 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; @@ -93,7 +92,7 @@ public class TerraFlora implements Flora { @Override - public boolean plant(Location location) { + public boolean plant(LocationImpl location) { boolean doRotation = testRotation.size() > 0; int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 5a6f1e9bc..3dd2bddcb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,6 +1,6 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -21,7 +21,7 @@ public class TerraTree implements Tree { } @Override - public synchronized boolean plant(Location location, Random random) { + public synchronized boolean plant(LocationImpl location, Random random) { return structure.get(random).executeDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index 25fd3a142..ea783ca11 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; @@ -18,12 +18,12 @@ public class BukkitEntity implements Entity { } @Override - public Location getLocation() { + public LocationImpl getLocation() { return BukkitAdapter.adapt(entity.getLocation()); } @Override - public void setLocation(Location location) { + public void setLocation(LocationImpl location) { entity.teleport(BukkitAdapter.adapt(location)); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index c9ca72228..a207af7b3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; @@ -18,13 +18,13 @@ public class BukkitPlayer implements Player { } @Override - public Location getLocation() { + public LocationImpl getLocation() { org.bukkit.Location bukkit = delegate.getLocation(); - return new Location(BukkitAdapter.adapt(bukkit.getWorld()), bukkit.getX(), bukkit.getY(), bukkit.getZ()); + return new LocationImpl(BukkitAdapter.adapt(bukkit.getWorld()), bukkit.getX(), bukkit.getY(), bukkit.getZ()); } @Override - public void setLocation(Location location) { + public void setLocation(LocationImpl location) { delegate.teleport(BukkitAdapter.adapt(location)); } 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 1b80392b2..afec03924 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 @@ -15,6 +15,7 @@ import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -45,7 +46,7 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.TerraWorldImpl; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; import io.papermc.lib.PaperLib; import org.bstats.bukkit.Metrics; @@ -105,7 +106,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { worldMap.forEach((world, tw) -> { tw.getConfig().getSamplerCache().clear(); String packID = tw.getConfig().getTemplate().getID(); - newMap.put(world, new TerraWorld(world, registry.get(packID), this)); + newMap.put(world, new TerraWorldImpl(world, registry.get(packID), this)); }); worldMap.clear(); worldMap.putAll(newMap); @@ -272,9 +273,9 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator()); if(!worlds.containsKey(w.getName())) { getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\""); - return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator().getHandle()).getConfigPack(), this); + return new TerraWorldImpl(w, ((TerraChunkGenerator) w.getGenerator().getHandle()).getConfigPack(), this); } - return worldMap.computeIfAbsent(w, w2 -> new TerraWorld(w, worlds.get(w.getName()), this)); + return worldMap.computeIfAbsent(w, w2 -> new TerraWorldImpl(w, worlds.get(w.getName()), this)); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 81741caab..db8130caf 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; @@ -26,7 +26,7 @@ public class BukkitWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); return Pair.of(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index afe0ed6b4..7ad0252fa 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,15 +1,15 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.transform.MapTransform; import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.config.pack.WorldConfigImpl; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -46,7 +46,7 @@ public class CommonListener implements Listener { World bukkit = BukkitAdapter.adapt(e.getWorld()); if(!bukkit.isTerraWorld()) return; TerraWorld tw = main.getWorld(bukkit); - WorldConfig c = tw.getConfig(); + WorldConfigImpl c = tw.getConfig(); if(c.getTemplate().isDisableSaplings()) return; e.setCancelled(true); Block block = e.getLocation().getBlock(); @@ -54,6 +54,6 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new Location(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data); + if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index a94300592..3d7a2c387 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; import io.papermc.paper.event.world.StructureLocateEvent; import org.bukkit.event.EventHandler; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index bbe0a1947..d752cc81a 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.TerraStructure; import org.bukkit.entity.EnderSignal; import org.bukkit.entity.Entity; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 2dd92d1c2..41d27739b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.CommandSender; @@ -337,12 +338,12 @@ public final class BukkitAdapter { } } - public static Location adapt(com.dfsek.terra.api.vector.Location location) { + public static Location adapt(LocationImpl location) { return new Location(((BukkitWorld) location.getWorld()).getHandle(), location.getX(), location.getY(), location.getZ()); } - public static com.dfsek.terra.api.vector.Location adapt(Location location) { - return new com.dfsek.terra.api.vector.Location(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ()); + public static LocationImpl adapt(Location location) { + return new LocationImpl(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ()); } public static Vector adapt(Vector3 vector3) { 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 eff1a7969..592d267d1 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 @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -43,7 +43,7 @@ public class BukkitTree implements Tree { @Override @SuppressWarnings("try") - public boolean plant(Location l, Random r) { + public boolean plant(LocationImpl l, Random r) { try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index e29fb1786..39034b58d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -64,7 +64,7 @@ public class BukkitWorld implements World { } @Override - public Entity spawnEntity(Location location, EntityType entityType) { + public Entity spawnEntity(LocationImpl location, EntityType entityType) { return new BukkitEntity(delegate.spawnEntity(BukkitAdapter.adapt(location), ((BukkitEntityType) entityType).getHandle())); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java index 9c9e10669..8af761a0e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -48,7 +48,7 @@ public class BukkitBlock implements Block { } @Override - public Location getLocation() { + public LocationImpl getLocation() { return BukkitAdapter.adapt(delegate.getLocation()); } 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 f8dfcf8da..29d6f7dd7 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 @@ -22,6 +22,7 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -53,7 +54,7 @@ import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.TerraWorldImpl; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.server.world.ServerWorld; @@ -204,7 +205,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { worldMap.forEach((seed, pair) -> { pair.getRight().getConfig().getSamplerCache().clear(); String packID = pair.getRight().getConfig().getTemplate().getID(); - pair.setRight(new TerraWorld(pair.getRight().getWorld(), configRegistry.get(packID), this)); + pair.setRight(new TerraWorldImpl(pair.getRight().getWorld(), configRegistry.get(packID), this)); }); return succeed; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java index 167bd72a4..b4e428bb0 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -49,7 +49,7 @@ public class FabricBlock implements Block { } @Override - public Location getLocation() { + public LocationImpl getLocation() { return FabricAdapter.adapt(delegate.position).toLocation((World) delegate.worldAccess); } 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 554823475..04a847c1a 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 @@ -1,6 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.GeneratorWrapper; @@ -13,7 +14,6 @@ import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; import com.dfsek.terra.fabric.util.FabricAdapter; -import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; import com.dfsek.terra.world.population.items.TerraStructure; import com.mojang.serialization.Codec; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index e211d9989..f6c8b7f12 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.handle; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; @@ -39,7 +39,7 @@ public class FabricWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { try { Class.forName("com.sk89q.worldedit.WorldEdit"); } catch(ClassNotFoundException e) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index 399c80208..36388dedb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.mixin; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.TerraWorldImpl; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; @@ -27,7 +27,7 @@ public abstract class ServerWorldMixin { @Inject(method = "", at = @At(value = "RETURN")) public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey registryKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { - TerraFabricPlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.world.World) this, ((FabricChunkGeneratorWrapper) chunkGenerator).getPack(), TerraFabricPlugin.getInstance()))); + TerraFabricPlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorldImpl((com.dfsek.terra.api.world.World) this, ((FabricChunkGeneratorWrapper) chunkGenerator).getPack(), TerraFabricPlugin.getInstance()))); ((FabricChunkGeneratorWrapper) chunkGenerator).setDimensionType(dimensionType); TerraFabricPlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index f8ea27372..7c89391fe 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.fabric.TerraFabricPlugin; @@ -25,7 +25,7 @@ public abstract class ConfiguredFeatureMixin { public abstract boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos); @SuppressWarnings({"ConstantConditions", "try"}) - public boolean terra$plant(Location l, Random r) { + public boolean terra$plant(LocationImpl l, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) l.getWorld()); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 1738950c4..34555f4c1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.entity.Entity; @@ -35,11 +35,11 @@ public abstract class EntityMixin { return this; } - public Location terra$getLocation() { - return new Location((World) world, FabricAdapter.adapt(blockPos)); + public LocationImpl terra$getLocation() { + return new LocationImpl((World) world, FabricAdapter.adapt(blockPos)); } - public void terra$setLocation(Location location) { + public void terra$setLocation(LocationImpl location) { teleport(location.getX(), location.getY(), location.getZ()); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 488a4a8fe..88972927c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -51,7 +51,7 @@ public abstract class ChunkRegionMixin { } @SuppressWarnings("deprecation") - public Entity terra$spawnEntity(Location location, EntityType entityType) { + public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ChunkRegion) (Object) this).toServerWorld()); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ChunkRegion) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index bf77a1d81..24acd2eec 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -42,7 +42,7 @@ public abstract class ServerWorldMixin { return new FabricBlock(new BlockPos(x, y, z), ((ServerWorld) (Object) this)); } - public Entity terra$spawnEntity(Location location, EntityType entityType) { + public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ServerWorld) (Object) this)); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ServerWorld) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 2372965cb..3680fa146 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.sk89q.worldedit.IncompleteRegionException; @@ -11,7 +11,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.World; public final class WorldEditUtil { - public static Pair getSelection(Player player) { + public static Pair getSelection(Player player) { WorldEdit worldEdit = WorldEdit.getInstance(); try { Region selection = worldEdit.getSessionManager() @@ -19,8 +19,8 @@ public final class WorldEditUtil { .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.getWorld())); BlockVector3 min = selection.getMinimumPoint(); BlockVector3 max = selection.getMaximumPoint(); - Location l1 = new Location(player.getWorld(), min.getBlockX(), min.getBlockY(), min.getBlockZ()); - Location l2 = new Location(player.getWorld(), max.getBlockX(), max.getBlockY(), max.getBlockZ()); + LocationImpl l1 = new LocationImpl(player.getWorld(), min.getBlockX(), min.getBlockY(), min.getBlockZ()); + LocationImpl l2 = new LocationImpl(player.getWorld(), max.getBlockX(), max.getBlockY(), max.getBlockZ()); return Pair.of(l1, l2); } catch(IncompleteRegionException e) { throw new IllegalStateException("No selection has been made", e); 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 9809fd804..59084224e 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -25,7 +26,7 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.TerraWorldImpl; import java.io.File; import java.io.IOException; @@ -50,7 +51,7 @@ public class StandalonePlugin implements TerraPlugin { @Override public TerraWorld getWorld(World world) { - return new TerraWorld(world, registry.get("DEFAULT"), this); + return new TerraWorldImpl(world, registry.get("DEFAULT"), this); } @Override diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java index 87d1fb788..6d19a881d 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -51,7 +51,7 @@ public class DirectBlock implements Block { } @Override - public Location getLocation() { + public LocationImpl getLocation() { return pos.toLocation(world); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 86f2697b6..47f8deff9 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -62,7 +62,7 @@ public class DirectWorld implements World { } @Override - public Entity spawnEntity(Location location, EntityType entityType) { + public Entity spawnEntity(LocationImpl location, EntityType entityType) { return null; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index 75528e905..97ef48609 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -8,7 +8,7 @@ import java.util.Random; public class RawTree implements Tree { // TODO: implement @Override - public boolean plant(Location l, Random r) { + public boolean plant(LocationImpl l, Random r) { return false; } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 710896d74..47d266c45 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; @@ -18,7 +19,6 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; -import com.dfsek.terra.world.TerraWorld; import com.google.inject.Inject; import org.slf4j.Logger; import org.spongepowered.api.config.ConfigDir; From f380247613e467aac38d8ba8382f9e1fc79188c2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 12:43:16 -0700 Subject: [PATCH 0046/1529] API compiles now --- .../java/com/dfsek/terra/api}/Logger.java | 6 +++- .../java/com/dfsek/terra/api/TerraPlugin.java | 5 ++- .../com/dfsek/terra/api/block/BlockFace.java | 14 -------- .../dfsek/terra/api/config/PluginConfig.java | 33 ++++++++++++++++++ .../dfsek/terra/api/config/WorldConfig.java | 3 +- .../world/generation/LootPopulateEvent.java | 12 ++++--- .../com/dfsek/terra/api/lang/Language.java | 15 ++++++++ .../com/dfsek/terra/api}/lang/Message.java | 2 +- .../dfsek/terra/api/structure/LootTable.java | 25 ++++++++++++++ .../dfsek/terra/api/structure/Structure.java | 34 +++++++++++++++++++ .../com/dfsek/terra/api/util/JarUtil.java | 0 .../com/dfsek/terra/api/util/MathUtil.java | 14 -------- .../java/com/dfsek/terra/api/world/Tree.java | 8 +++-- .../api/world/generator/SamplerCache.java | 9 +++++ .../com/dfsek/terra/api/math/GridSpawn.java | 4 +-- .../{LootTable.java => LootTableImpl.java} | 18 +++------- .../structures/script/StructureScript.java | 33 +++++++++--------- .../script/builders/CheckFunctionBuilder.java | 1 - .../script/builders/LootFunctionBuilder.java | 2 +- .../builders/StructureFunctionBuilder.java | 6 ++-- .../functions/AbstractBlockFunction.java | 2 +- .../script/functions/BiomeFunction.java | 2 +- .../script/functions/CheckBlockFunction.java | 2 +- .../script/functions/CheckFunction.java | 4 +-- .../script/functions/EntityFunction.java | 2 +- .../script/functions/GetMarkFunction.java | 2 +- .../script/functions/LootFunction.java | 7 ++-- .../script/functions/PullFunction.java | 2 +- .../script/functions/SetMarkFunction.java | 2 +- .../script/functions/StateFunction.java | 2 +- .../script/functions/StructureFunction.java | 12 +++---- .../structure/buffer/DirectBuffer.java | 15 ++++---- .../buffer/items/BufferedLootApplication.java | 6 ++-- .../api/util/{world => }/PaletteUtil.java | 2 +- .../dfsek/terra/api/util/PopulationUtil.java | 28 +++++++++++++++ .../dfsek/terra/api/util}/RotationUtil.java | 3 +- .../terra/api/util/logging/DebugLogger.java | 2 ++ .../terra/api/util/logging/JavaLogger.java | 2 ++ .../terra/api/util/world/PopulationUtil.java | 15 -------- .../world/locate/AsyncStructureFinder.java | 4 +-- .../com/dfsek/terra/carving/CarverCache.java | 5 +-- .../structure/StructureLoadCommand.java | 8 ++--- .../argument/ScriptArgumentParser.java | 5 +-- .../structure/completer/ScriptCompleter.java | 3 +- .../dfsek/terra/config/GenericLoaders.java | 4 +-- ...luginConfig.java => PluginConfigImpl.java} | 22 +++++++++--- .../builder/UserDefinedBiomeBuilder.java | 4 +-- .../terra/config/factories/FloraFactory.java | 2 +- .../com/dfsek/terra/config/lang/LangUtil.java | 5 +-- .../lang/{Language.java => LanguageImpl.java} | 8 +++-- .../terra/config/lang/MultiLineMessage.java | 1 + .../terra/config/lang/SingleLineMessage.java | 1 + .../loaders/config/FloraLayerLoader.java | 2 +- .../loaders/config/TreeLayerLoader.java | 2 +- .../provider/BiomeProviderTemplate.java | 2 +- .../sampler/templates/DomainWarpTemplate.java | 2 +- .../templates/ImageSamplerTemplate.java | 2 +- .../sampler/templates/KernelTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 4 +-- .../noise/ConstantNoiseTemplate.java | 2 +- .../noise/ExpressionFunctionTemplate.java | 2 +- .../templates/noise/GaborNoiseTemplate.java | 2 +- .../templates/noise/NoiseTemplate.java | 2 +- .../templates/noise/SimpleNoiseTemplate.java | 2 +- .../noise/fractal/BrownianMotionTemplate.java | 2 +- .../noise/fractal/FractalTemplate.java | 2 +- .../noise/fractal/PingPongTemplate.java | 2 +- .../noise/fractal/RidgedFractalTemplate.java | 2 +- .../normalizer/ClampNormalizerTemplate.java | 4 +-- .../normalizer/LinearNormalizerTemplate.java | 2 +- .../normalizer/NormalNormalizerTemplate.java | 2 +- .../normalizer/NormalizerTemplate.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 11 +++--- .../terra/config/pack/WorldConfigImpl.java | 11 ++---- .../terra/config/templates/BiomeTemplate.java | 2 +- .../config/templates/PaletteTemplate.java | 2 +- .../config/templates/StructureTemplate.java | 6 ++-- .../terra/config/templates/TreeTemplate.java | 6 ++-- .../noise/normalizer/ClampNormalizer.java | 2 +- .../noise/normalizer/LinearNormalizer.java | 2 +- .../noise/normalizer/NormalNormalizer.java | 2 +- .../terra}/noise/normalizer/Normalizer.java | 2 +- .../noise/samplers/DomainWarpedSampler.java | 2 +- .../noise/samplers/ExpressionSampler.java | 7 +++- .../terra}/noise/samplers/ImageSampler.java | 2 +- .../terra}/noise/samplers/KernelSampler.java | 2 +- .../noise/samplers/noise/CellularSampler.java | 4 +-- .../noise/samplers/noise/ConstantSampler.java | 2 +- .../samplers/noise/ExpressionFunction.java | 2 +- .../samplers/noise/GaborNoiseSampler.java | 4 +-- .../noise/samplers/noise/NoiseFunction.java | 2 +- .../noise/fractal/BrownianMotionSampler.java | 2 +- .../noise/fractal/FractalNoiseFunction.java | 4 +-- .../noise/fractal/PingPongSampler.java | 2 +- .../noise/fractal/RidgedFractalSampler.java | 2 +- .../noise/random/GaussianNoiseSampler.java | 4 +-- .../noise/random/WhiteNoiseSampler.java | 4 +-- .../noise/simplex/OpenSimplex2SSampler.java | 2 +- .../noise/simplex/OpenSimplex2Sampler.java | 2 +- .../samplers/noise/simplex/PerlinSampler.java | 2 +- .../noise/simplex/SimplexSampler.java | 2 +- .../noise/simplex/SimplexStyleSampler.java | 4 +-- .../noise/value/ValueCubicSampler.java | 2 +- .../samplers/noise/value/ValueSampler.java | 2 +- .../samplers/noise/value/ValueStyleNoise.java | 4 +-- .../terra/registry/config/LootRegistry.java | 2 +- .../terra/registry/config/NoiseRegistry.java | 16 ++++----- .../terra/registry/config/ScriptRegistry.java | 4 +-- .../generators/DefaultChunkGenerator2D.java | 4 +-- .../generators/DefaultChunkGenerator3D.java | 2 +- ...amplerCache.java => SamplerCacheImpl.java} | 7 ++-- .../terra/world/population/CavePopulator.java | 2 +- .../world/population/FloraPopulator.java | 2 +- .../terra/world/population/OrePopulator.java | 4 +-- .../world/population/StructurePopulator.java | 6 ++-- .../terra/world/population/TreePopulator.java | 2 +- .../population/items/TerraStructure.java | 8 ++--- .../items/ores/DeformedSphereOre.java | 2 +- .../population/items/tree/TerraTree.java | 8 ++--- .../population/items/tree/TreeLayer.java | 2 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 9 ++--- .../dfsek/terra/fabric/TerraFabricPlugin.java | 9 ++--- .../com/dfsek/terra/StandalonePlugin.java | 14 ++++---- .../com/dfsek/terra/sponge/SpongeLogger.java | 2 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 12 ++++--- 125 files changed, 421 insertions(+), 279 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/api/util/logging => api/src/main/java/com/dfsek/terra/api}/Logger.java (55%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/lang/Language.java rename common/{implementation/src/main/java/com/dfsek/terra/config => api/src/main/java/com/dfsek/terra/api}/lang/Message.java (88%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/LootTable.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/JarUtil.java (100%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java rename common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/{LootTable.java => LootTableImpl.java} (83%) rename common/implementation/src/main/java/com/dfsek/terra/api/util/{world => }/PaletteUtil.java (94%) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java rename common/{api/src/main/java/com/dfsek/terra/api/structure/rotation => implementation/src/main/java/com/dfsek/terra/api/util}/RotationUtil.java (99%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java rename common/implementation/src/main/java/com/dfsek/terra/config/{PluginConfig.java => PluginConfigImpl.java} (87%) rename common/implementation/src/main/java/com/dfsek/terra/config/lang/{Language.java => LanguageImpl.java} (86%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/normalizer/ClampNormalizer.java (90%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/normalizer/LinearNormalizer.java (91%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/normalizer/NormalNormalizer.java (96%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/normalizer/Normalizer.java (94%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/DomainWarpedSampler.java (96%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/ExpressionSampler.java (84%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/ImageSampler.java (97%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/KernelSampler.java (97%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/CellularSampler.java (99%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/ConstantSampler.java (90%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/ExpressionFunction.java (95%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/GaborNoiseSampler.java (96%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/NoiseFunction.java (98%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/fractal/BrownianMotionSampler.java (95%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/fractal/FractalNoiseFunction.java (91%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/fractal/PingPongSampler.java (96%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/fractal/RidgedFractalSampler.java (95%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/random/GaussianNoiseSampler.java (91%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/random/WhiteNoiseSampler.java (94%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/simplex/OpenSimplex2SSampler.java (99%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/simplex/OpenSimplex2Sampler.java (98%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/simplex/PerlinSampler.java (97%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/simplex/SimplexSampler.java (99%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/simplex/SimplexStyleSampler.java (98%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/value/ValueCubicSampler.java (98%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/value/ValueSampler.java (96%) rename common/{api/src/main/java/com/dfsek/terra/api => implementation/src/main/java/com/dfsek/terra}/noise/samplers/noise/value/ValueStyleNoise.java (83%) rename common/implementation/src/main/java/com/dfsek/terra/world/generation/math/{SamplerCache.java => SamplerCacheImpl.java} (88%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/Logger.java b/common/api/src/main/java/com/dfsek/terra/api/Logger.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/logging/Logger.java rename to common/api/src/main/java/com/dfsek/terra/api/Logger.java index df812533f..d0026b3ce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/Logger.java +++ b/common/api/src/main/java/com/dfsek/terra/api/Logger.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util.logging; +package com.dfsek.terra.api; public interface Logger { void info(String message); @@ -6,4 +6,8 @@ public interface Logger { void warning(String message); void severe(String message); + + default void stack(Throwable t) { + t.printStackTrace(); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 6a710c714..68f58b009 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -2,12 +2,15 @@ package com.dfsek.terra.api; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.JarUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -44,7 +47,7 @@ public interface TerraPlugin extends LoaderRegistrar { String platformName(); - DebugLogger getDebugLogger(); + Logger getDebugLogger(); EventManager getEventManager(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java index 033c53232..d367839e7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java @@ -67,20 +67,6 @@ public enum BlockFace { return modZ; } - /** - * Gets the normal vector corresponding to this block face. - * - * @return the normal vector - */ - @NotNull - public Vector3 getDirection() { - Vector3 direction = new Vector3Impl(modX, modY, modZ); - if(modX != 0 || modY != 0 || modZ != 0) { - direction.normalize(); - } - return direction; - } - @NotNull public BlockFace getOppositeFace() { switch(this) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java new file mode 100644 index 000000000..2275c7283 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java @@ -0,0 +1,33 @@ +package com.dfsek.terra.api.config; + +import com.dfsek.terra.api.TerraPlugin; + +public interface PluginConfig { + void load(TerraPlugin main); + + String getLanguage(); + + boolean isDebugCommands(); + + boolean isDebugLogging(); + + boolean isDebugProfiler(); + + boolean isDebugScript(); + + long getDataSaveInterval(); + + int getBiomeSearchResolution(); + + int getCarverCacheSize(); + + int getStructureCache(); + + int getSamplerCache(); + + int getMaxRecursion(); + + int getBiomeCache(); + + int getProviderCache(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index a6361b3ba..15c5fc085 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.SamplerCache; import java.util.Set; @@ -14,7 +15,5 @@ public interface WorldConfig { SamplerCache getSamplerCache(); - Set getCarvers(); - BiomeProvider getProvider(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 392fa0528..7e22770f0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -6,6 +6,8 @@ import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.structure.LootTable; +import com.dfsek.terra.api.structure.Structure; import org.jetbrains.annotations.NotNull; /** @@ -16,14 +18,14 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, private final Container container; private LootTable table; private final ConfigPack pack; - private final StructureScript script; + private final Structure structure; - public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, StructureScript script) { + public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, Structure structure) { this.block = block; this.container = container; this.table = table; this.pack = pack; - this.script = script; + this.structure = structure; } @Override @@ -71,7 +73,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, * * @return Structure script. */ - public StructureScript getStructureScript() { - return script; + public Structure getStructure() { + return structure; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/lang/Language.java b/common/api/src/main/java/com/dfsek/terra/api/lang/Language.java new file mode 100644 index 000000000..2d50e8d5d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/lang/Language.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.api.lang; + +import com.dfsek.terra.api.entity.CommandSender; + +import java.util.logging.Level; +import java.util.logging.Logger; + +public interface Language { + @SuppressWarnings("unchecked") + Message getMessage(String id); + + void log(String messageID, Level level, Logger logger, String... args); + + void send(String messageID, CommandSender sender, String... args); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java b/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java rename to common/api/src/main/java/com/dfsek/terra/api/lang/Message.java index 3fa11e901..9fedd163d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Message.java +++ b/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.lang; +package com.dfsek.terra.api.lang; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/LootTable.java b/common/api/src/main/java/com/dfsek/terra/api/structure/LootTable.java new file mode 100644 index 000000000..c71fe1918 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/LootTable.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.api.structure; + +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; + +import java.util.List; +import java.util.Random; + +public interface LootTable { + /** + * Fetches a list of ItemStacks from the loot table using the given Random instance. + * + * @param r The Random instance to use. + * @return List<ItemStack> - The list of loot fetched. + */ + List getLoot(Random r); + + /** + * Fills an Inventory with loot. + * + * @param i The Inventory to fill. + * @param r The The Random instance to use. + */ + void fillInventory(Inventory i, Random r); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java new file mode 100644 index 000000000..321f18a17 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.api.structure; + +import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; + +import java.util.Random; + +public interface Structure { + /** + * Paste the structure at a location + * + * @param location Location to paste structure + * @param rotation Rotation of structure + * @return Whether generation was successful + */ + @SuppressWarnings("try") + boolean generate(Location location, Random random, Rotation rotation); + + @SuppressWarnings("try") + boolean generate(Location location, Chunk chunk, Random random, Rotation rotation); + + @SuppressWarnings("try") + boolean test(Location location, Random random, Rotation rotation); + + @SuppressWarnings("try") + boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions); + + @SuppressWarnings("try") + boolean generateDirect(Location location, Random random, Rotation rotation); + + String getId(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/JarUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/JarUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java index 178b18a37..2109e3088 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; @@ -43,19 +42,6 @@ public final class MathUtil { return FastMath.sqrt(standardDeviation / length); } - /** - * Gets the carver seed for a chunk. - * - * @param chunkX Chunk's X coordinate - * @param chunkZ Chunk's Z coordinate - * @param seed World seed - * @return long - The carver seed. - */ - public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) { - Random r = new FastRandom(seed); - return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed; - } - public static long hashToLong(String s) { if(s == null) { return 0; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 81e15f84e..11103cf1c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -1,12 +1,14 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.vector.LocationImpl; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.vector.Location; import java.util.Random; +import java.util.Set; public interface Tree { - boolean plant(LocationImpl l, Random r); + boolean plant(Location l, Random r); - MaterialSet getSpawnable(); + Set getSpawnable(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java new file mode 100644 index 000000000..9ec505a25 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.api.world.generator; + +public interface SamplerCache { + Sampler get(int x, int z); + + Sampler getChunk(int cx, int cz); + + void clear(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index ed0074249..00cd32036 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.math; -import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.util.FastRandom; @@ -57,7 +57,7 @@ public class GridSpawn { * @return Vector representing spawnpoint */ public Vector3 getChunkSpawn(int structureChunkX, int structureChunkZ, long seed) { - Random r = new FastRandom(MathUtil.getCarverChunkSeed(structureChunkX, structureChunkZ, seed + salt)); + Random r = new FastRandom(PopulationUtil.getCarverChunkSeed(structureChunkX, structureChunkZ, seed + salt)); int offsetX = r.nextInt(width); int offsetZ = r.nextInt(width); int sx = structureChunkX * (width + 2 * separation) + offsetX; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java rename to common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java index cb4679658..706896cf7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java @@ -15,7 +15,7 @@ import java.util.Random; /** * Class representation of a Loot Table to populate chest loot. */ -public class LootTable { +public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { private final List pools = new GlueList<>(); /** @@ -24,7 +24,7 @@ public class LootTable { * @param json The JSON String representing the loot table. * @throws ParseException if malformed JSON is passed. */ - public LootTable(String json, TerraPlugin main) throws ParseException { + public LootTableImpl(String json, TerraPlugin main) throws ParseException { JSONParser jsonParser = new JSONParser(); Object tableJSON = jsonParser.parse(json); JSONArray poolArray = (JSONArray) ((JSONObject) tableJSON).get("pools"); @@ -33,12 +33,7 @@ public class LootTable { } } - /** - * Fetches a list of ItemStacks from the loot table using the given Random instance. - * - * @param r The Random instance to use. - * @return List<ItemStack> - The list of loot fetched. - */ + @Override public List getLoot(Random r) { List itemList = new GlueList<>(); for(Pool pool : pools) { @@ -47,12 +42,7 @@ public class LootTable { return itemList; } - /** - * Fills an Inventory with loot. - * - * @param i The Inventory to fill. - * @param r The The Random instance to use. - */ + @Override public void fillInventory(Inventory i, Random r) { List loot = getLoot(r); for(ItemStack stack : loot) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index fb1dd2281..f595e4bd0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -1,10 +1,12 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.LootTable; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.parser.Parser; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.Block; @@ -44,14 +46,14 @@ import java.nio.charset.Charset; import java.util.Random; import java.util.concurrent.ExecutionException; -public class StructureScript { +public class StructureScript implements Structure { private final Block block; private final String id; private final Cache cache; private final TerraPlugin main; private String tempID; - public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { + public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { Parser parser; try { parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); @@ -110,15 +112,9 @@ public class StructureScript { this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); } - /** - * Paste the structure at a location - * - * @param location Location to paste structure - * @param rotation Rotation of structure - * @return Whether generation was successful - */ + @Override @SuppressWarnings("try") - public boolean execute(LocationImpl location, Random random, Rotation rotation) { + public boolean generate(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { StructureBuffer buffer = new StructureBuffer(location); boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); @@ -127,8 +123,9 @@ public class StructureScript { } } + @Override @SuppressWarnings("try") - public boolean execute(LocationImpl location, Chunk chunk, Random random, Rotation rotation) { + public boolean generate(Location location, Chunk chunk, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); buffer.paste(chunk); @@ -136,15 +133,16 @@ public class StructureScript { } } + @Override @SuppressWarnings("try") - public boolean test(LocationImpl location, Random random, Rotation rotation) { + public boolean test(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { StructureBuffer buffer = computeBuffer(location, random, rotation); return buffer.succeeded(); } } - private StructureBuffer computeBuffer(LocationImpl location, Random random, Rotation rotation) { + private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { try { return cache.get(location, () -> { StructureBuffer buf = new StructureBuffer(location); @@ -156,21 +154,24 @@ public class StructureScript { } } + @Override @SuppressWarnings("try") - public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { + public boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); } } + @Override @SuppressWarnings("try") - public boolean executeDirect(LocationImpl location, Random random, Rotation rotation) { + public boolean generateDirect(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { DirectBuffer buffer = new DirectBuffer(location); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); } } + @Override public String getId() { return id; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java index 4ac870f49..bd2bd6497 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.functions.CheckFunction; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.world.generation.math.SamplerCache; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java index b894743a7..110c32e5a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structures.loot.LootTable; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.StructureScript; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java index 918fec245..b84e89662 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java @@ -2,10 +2,10 @@ package com.dfsek.terra.api.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.functions.StructureFunction; import com.dfsek.terra.api.structures.tokenizer.Position; @@ -13,10 +13,10 @@ import java.util.List; import java.util.stream.Collectors; public class StructureFunctionBuilder implements FunctionBuilder { - private final Registry registry; + private final Registry registry; private final TerraPlugin main; - public StructureFunctionBuilder(Registry registry, TerraPlugin main) { + public StructureFunctionBuilder(Registry registry, TerraPlugin main) { this.registry = registry; this.main = main; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index 292be05f2..99761f949 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 707bd651a..d90384b5c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 985544608..3ea7addc7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 85d08baab..f84bde8b4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.TerraWorld; @@ -12,12 +13,11 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.generation.math.SamplerCache; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 6cc1ac539..e5c0875ed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.tokenizer.Position; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index 6abb28ebd..60468a73d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index 69108c41e..a1cc8c923 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -1,18 +1,19 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structures.loot.LootTable; +import com.dfsek.terra.api.structures.loot.LootTableImpl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; @@ -46,7 +47,7 @@ public class LootFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); String id = data.apply(implementationArguments, variableMap); - LootTable table = registry.get(id); + LootTableImpl table = registry.get(id); if(table == null) { main.logger().severe("No such loot table " + id); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 97320d1a1..0c27d0f2f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index f37df8c08..fdf9d3ba0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index d10129885..6ff2263d2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipulator; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 0b40cc993..7e4c6c6b5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.vector.Vector3; @@ -10,10 +11,9 @@ import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structure.rotation.RotationUtil; +import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import net.jafama.FastMath; @@ -22,14 +22,14 @@ import java.util.List; import java.util.Map; public class StructureFunction implements Function { - private final Registry registry; + private final Registry registry; private final Returnable id; private final Returnable x, y, z; private final Position position; private final TerraPlugin main; private final List> rotations; - public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, List> rotations, Registry registry, Position position, TerraPlugin main) { + public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, List> rotations, Registry registry, Position position, TerraPlugin main) { this.registry = registry; this.id = id; this.position = position; @@ -57,7 +57,7 @@ public class StructureFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); String app = id.apply(implementationArguments, variableMap); - StructureScript script = registry.get(app); + Structure script = registry.get(app); if(script == null) { main.logger().severe("No such structure " + app); return null; @@ -74,7 +74,7 @@ public class StructureFunction implements Function { Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); - return script.executeInBuffer(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); + return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 83c34df4e..c947e7d76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -11,31 +12,31 @@ import java.util.Map; * Buffer implementation that directly pastes to the world. */ public class DirectBuffer implements Buffer { - private final LocationImpl origin; - private final Map marks = new LinkedHashMap<>(); + private final Location origin; + private final Map marks = new LinkedHashMap<>(); - public DirectBuffer(LocationImpl origin) { + public DirectBuffer(Location origin) { this.origin = origin; } @Override - public Buffer addItem(BufferedItem item, LocationImpl location) { + public Buffer addItem(BufferedItem item, Location location) { item.paste(origin.clone().add(location)); return this; } @Override - public LocationImpl getOrigin() { + public Location getOrigin() { return origin; } @Override - public String getMark(LocationImpl location) { + public String getMark(Location location) { return marks.get(location); } @Override - public Buffer setMark(String mark, LocationImpl location) { + public Buffer setMark(String mark, Location location) { marks.put(location, mark); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index d13d2cd2f..ae3b2f59b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -7,16 +7,16 @@ import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.structures.loot.LootTable; +import com.dfsek.terra.api.structures.loot.LootTableImpl; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; public class BufferedLootApplication implements BufferedItem { - private final LootTable table; + private final LootTableImpl table; private final TerraPlugin main; private final StructureScript structure; - public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { + public BufferedLootApplication(LootTableImpl table, TerraPlugin main, StructureScript structure) { this.table = table; this.main = main; this.structure = structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java index 8fafaed40..9672c7746 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util.world; +package com.dfsek.terra.api.util; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java new file mode 100644 index 000000000..6cf0320bb --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.api.util; + +import com.dfsek.terra.api.world.Chunk; + +import java.util.Random; + +public final class PopulationUtil { + public static FastRandom getRandom(Chunk c) { + return getRandom(c, 0); + } + + public static FastRandom getRandom(Chunk c, long salt) { + return new FastRandom(getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); + } + + /** + * Gets the carver seed for a chunk. + * + * @param chunkX Chunk's X coordinate + * @param chunkZ Chunk's Z coordinate + * @param seed World seed + * @return long - The carver seed. + */ + public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) { + Random r = new FastRandom(seed); + return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed; + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java similarity index 99% rename from common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 25a5f398d..13e67bd48 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/rotation/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,5 +1,6 @@ -package com.dfsek.terra.api.structure.rotation; +package com.dfsek.terra.api.util; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.BlockData; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java index 5236401f9..a22d805eb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.util.logging; +import com.dfsek.terra.api.Logger; + public class DebugLogger { private final Logger logger; private boolean debug = false; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java index 8a8a62e56..4ee2cba24 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.util.logging; +import com.dfsek.terra.api.Logger; + public class JavaLogger implements Logger { private final java.util.logging.Logger logger; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java deleted file mode 100644 index 18ebe5f0a..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.api.util.world; - -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.util.FastRandom; - -public final class PopulationUtil { - public static FastRandom getRandom(Chunk c) { - return getRandom(c, 0); - } - - public static FastRandom getRandom(Chunk c, long salt) { - return new FastRandom(MathUtil.getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index f1d46f297..cea1b4952 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -30,7 +30,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { public boolean isValid(int x, int z, TerraStructure target) { LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; - Random random = new FastRandom(MathUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index 79b2fdc71..9d18e058f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -2,6 +2,7 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.FastRandom; @@ -33,8 +34,8 @@ public class CarverCache { int chunkX = (int) (key >> 32); int chunkZ = (int) key.longValue(); BiomeProvider provider = main.getWorld(w).getBiomeProvider(); - if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { - long seed = MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); + if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { + long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); Random r = new FastRandom(seed); Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); List points = new GlueList<>(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index 42d51a138..ef98977a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.commands.structure.argument.ScriptArgumentParser; @@ -56,7 +56,7 @@ public class StructureLoadCommand implements CommandTemplate { private boolean chunk; @ArgumentTarget("structure") - private StructureScript script; + private Structure script; @Inject private TerraPlugin main; @@ -79,9 +79,9 @@ public class StructureLoadCommand implements CommandTemplate { return; } if(this.chunk) { - script.execute(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r); + script.generate(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r); } else { - script.execute(player.getLocation(), random, r); + script.generate(player.getLocation(), random, r); } long l = System.nanoTime() - t; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index 81a7a28cb..4f520d5bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -5,14 +5,15 @@ import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.script.StructureScript; -public class ScriptArgumentParser implements ArgumentParser { +public class ScriptArgumentParser implements ArgumentParser { @Inject private TerraPlugin main; @Override - public StructureScript parse(CommandSender sender, String arg) { + public Structure parse(CommandSender sender, String arg) { return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index 70ae70723..220b4e257 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.script.StructureScript; import java.util.List; @@ -16,6 +17,6 @@ public class ScriptCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(StructureScript::getId).collect(Collectors.toList()); + return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 083ad7c7a..b38c72323 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -6,8 +6,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.api.noise.samplers.ImageSampler; -import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.noise.samplers.ImageSampler; +import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/config/PluginConfig.java rename to common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index 46795525d..5ddf1806c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -7,7 +7,7 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.JarUtil; -import com.dfsek.terra.api.util.logging.Logger; +import com.dfsek.terra.api.Logger; import java.io.File; import java.io.FileInputStream; @@ -17,7 +17,7 @@ import java.time.Duration; import java.util.jar.JarFile; @SuppressWarnings("FieldMayBeFinal") -public class PluginConfig implements ConfigTemplate { +public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.config.PluginConfig { @Value("debug.commands") @Default private boolean debugCommands = false; @@ -74,6 +74,7 @@ public class PluginConfig implements ConfigTemplate { @Default private int maxRecursion = 1000; + @Override public void load(TerraPlugin main) { Logger logger = main.logger(); logger.info("Loading config values"); @@ -84,9 +85,9 @@ public class PluginConfig implements ConfigTemplate { try(JarFile jar = main.getModJar()) { JarUtil.copyResourcesToDirectory(jar, "packs", new File(main.getDataFolder(), "packs").toString()); } catch(IOException | URISyntaxException e) { - main.getDebugLogger().error("Failed to dump default config files!"); + main.getDebugLogger().severe("Failed to dump default config files!"); e.printStackTrace(); - main.getDebugLogger().error("Either you're on Forge, or this is a bug. If it's the latter, report this to Terra!"); + main.getDebugLogger().severe("Either you're on Forge, or this is a bug. If it's the latter, report this to Terra!"); } } } catch(ConfigException | IOException e) { @@ -99,54 +100,67 @@ public class PluginConfig implements ConfigTemplate { if(isDebugScript()) logger.info("Script debug blocks enabled."); } + @Override public String getLanguage() { return language; } + @Override public boolean isDebugCommands() { return debugCommands; } + @Override public boolean isDebugLogging() { return debugLog; } + @Override public boolean isDebugProfiler() { return debugProfiler; } + @Override public boolean isDebugScript() { return debugScript; } + @Override public long getDataSaveInterval() { return dataSave.toMillis() / 20L; } + @Override public int getBiomeSearchResolution() { return biomeSearch; } + @Override public int getCarverCacheSize() { return carverCache; } + @Override public int getStructureCache() { return structureCache; } + @Override public int getSamplerCache() { return samplerCache; } + @Override public int getMaxRecursion() { return maxRecursion; } + @Override public int getBiomeCache() { return biomeCache; } + @Override public int getProviderCache() { return providerCache; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 832bb1df8..2f1ebe5f4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -3,8 +3,8 @@ package com.dfsek.terra.config.builder; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.ExpressionSampler; -import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.noise.samplers.ExpressionSampler; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 47b6a3210..5f79cd72a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.PaletteImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index d11d1e15f..109e85bd0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -2,7 +2,8 @@ package com.dfsek.terra.config.lang; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.util.logging.Logger; +import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.lang.Language; import java.io.File; import java.io.IOException; @@ -26,7 +27,7 @@ public final class LangUtil { try { File file1 = new File(file, langID + ".yml"); logger.info(file1.getAbsolutePath()); - language = new Language(file1); + language = new LanguageImpl(file1); logger.info("Loaded language " + langID); } catch(IOException e) { logger.severe("Unable to load language: " + langID); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java rename to common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java index 782eee0c7..3faa20dae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/Language.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.tectonic.config.Configuration; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.lang.Message; import java.io.File; import java.io.FileInputStream; @@ -11,11 +12,12 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -public class Language { +public class LanguageImpl implements com.dfsek.terra.api.lang.Language { private final Configuration configuration; - public Language(File file) throws IOException { + public LanguageImpl(File file) throws IOException { configuration = new Configuration(new FileInputStream(file)); } + @Override @SuppressWarnings("unchecked") public Message getMessage(String id) { Message temp = null; @@ -31,9 +33,11 @@ public class Language { if(temp == null || temp.isEmpty()) return new SingleLineMessage("message:" + id + ":translation_undefined"); return temp; } + @Override public void log(String messageID, Level level, Logger logger, String... args) { getMessage(messageID).log(logger, level, args); } + @Override public void send(String messageID, CommandSender sender, String... args) { getMessage(messageID).send(sender, args); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java index 8cf574425..854204231 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.lang.Message; import java.util.Arrays; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java index 23753cff0..3288f58c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java @@ -2,6 +2,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.lang.Message; import java.util.Arrays; import java.util.logging.Level; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index cbf967dd3..0a8288953 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.Flora; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index ab1ff5bdd..c00777fc2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.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.math.range.ConstantRange; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index a8f2597a5..359b6c346 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java index 03b94a4f9..c093dfe04 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.DomainWarpedSampler; +import com.dfsek.terra.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings({"unused", "FieldMayBeFinal"}) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java index e8f3c77e4..cc751580c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.ImageSampler; +import com.dfsek.terra.noise.samplers.ImageSampler; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java index 933aa3bf1..b9a0598f3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.KernelSampler; +import com.dfsek.terra.noise.samplers.KernelSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java index 73149b741..cc5f88064 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java index 693cb1ef1..2a243de48 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java index fb4d26c00..0863555fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java @@ -9,7 +9,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.ExpressionFunction; +import com.dfsek.terra.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java index f426f1f62..c3df2ab8c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.GaborNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.GaborNoiseSampler; public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java index c8bcc8ed8..79d06e230 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; @SuppressWarnings({"unused", "FieldMayBeFinal"}) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java index e4c463743..a922ca27d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; import java.util.function.Function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java index f550b3e77..dd4c33482 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.fractal.BrownianMotionSampler; +import com.dfsek.terra.noise.samplers.noise.fractal.BrownianMotionSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java index b4b9274e7..1a10e7427 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.noise.samplers.noise.fractal.FractalNoiseFunction; +import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java index c59de2b11..f51cd6863 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.fractal.PingPongSampler; +import com.dfsek.terra.noise.samplers.noise.fractal.PingPongSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { @Value("ping-pong") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java index fdebb63a4..91495b5df 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.fractal.RidgedFractalSampler; +import com.dfsek.terra.noise.samplers.noise.fractal.RidgedFractalSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java index b8f0e65ed..c6d16a164 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.normalizer.ClampNormalizer; -import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; +import com.dfsek.terra.noise.normalizer.ClampNormalizer; +import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class ClampNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java index b1c8ad727..ef26b99e8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; +import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class LinearNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java index 8f8bb308b..aa9e01279 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.normalizer.NormalNormalizer; +import com.dfsek.terra.noise.normalizer.NormalNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class NormalNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java index af4f843f7..465d16607 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.noise.normalizer.Normalizer; +import com.dfsek.terra.noise.normalizer.Normalizer; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index db6dd826a..6a7a97f75 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -15,7 +15,8 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structures.loot.LootTable; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structures.loot.LootTableImpl; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; @@ -190,7 +191,7 @@ public class ConfigPackImpl implements ConfigPack { putPair(map, NoiseProvider.class, new NoiseRegistry()); putPair(map, FunctionBuilder.class, (OpenRegistry) (Object) new FunctionRegistry()); - putPair(map, LootTable.class, new LootRegistry()); + putPair(map, LootTableImpl.class, new LootRegistry()); putPair(map, StructureScript.class, new ScriptRegistry()); return map; @@ -217,8 +218,8 @@ public class ConfigPackImpl implements ConfigPack { loader.open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try(InputStream stream = entry.getValue()) { - StructureScript structureScript = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); - getOpenRegistry(StructureScript.class).add(structureScript.getId(), structureScript); + Structure structure = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTableImpl.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); + getOpenRegistry(StructureScript.class).add(structure.getId(), structure); } catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) { throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); } @@ -226,7 +227,7 @@ public class ConfigPackImpl implements ConfigPack { }).close().open("structures/loot", ".json").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTable(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); + getOpenRegistry(LootTableImpl.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); } catch(ParseException | IOException | NullPointerException e) { throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index b68752b9d..2973b5249 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -6,11 +6,11 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.carving.UserDefinedCarver; +import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.generation.math.SamplerCache; +import com.dfsek.terra.world.generation.math.SamplerCacheImpl; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.HashMap; @@ -31,7 +31,7 @@ public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig { public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { this.world = world; this.pack = pack; - this.samplerCache = new SamplerCache(main, world); + this.samplerCache = new SamplerCacheImpl(main, world); pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); @@ -58,11 +58,6 @@ public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig { return samplerCache; } - @Override - public Set getCarvers() { - return new HashSet<>(getRegistry(UserDefinedCarver.class).entries()); - } - @Override public BiomeProvider getProvider() { return provider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 73393cf6f..d6769ce62 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -11,7 +11,7 @@ import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.block.BlockType; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java index 567a9896e..87186a9bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index e71ef4583..6b7cd6e65 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -19,7 +19,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollectionImpl structure; @Value("spawn.start") @Abstractable @@ -38,7 +38,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem return id; } - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollectionImpl getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 5ae0ebb03..5e07626ed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -3,7 +3,7 @@ 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.structures.script.StructureScript; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -11,7 +11,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public class TreeTemplate extends AbstractableTemplate { @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollectionImpl structure; @Value("id") private String id; @@ -25,7 +25,7 @@ public class TreeTemplate extends AbstractableTemplate { @Abstractable private MaterialSet spawnable; - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollectionImpl getStructures() { return structure; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java similarity index 90% rename from common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java index 5386119b4..e4e3598ae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/ClampNormalizer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.normalizer; +package com.dfsek.terra.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java similarity index 91% rename from common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java index e61fefe3d..d062f9c07 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/LinearNormalizer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.normalizer; +package com.dfsek.terra.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java index 0cb62d681..575b60db0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/NormalNormalizer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.normalizer; +package com.dfsek.terra.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java similarity index 94% rename from common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java index 2e61cbe9f..327cb5e72 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/normalizer/Normalizer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.normalizer; +package com.dfsek.terra.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java index 9796999d9..51a40d85a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/DomainWarpedSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers; +package com.dfsek.terra.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java similarity index 84% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java index 2f42d8bda..24ba1549b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ExpressionSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java @@ -1,10 +1,15 @@ -package com.dfsek.terra.api.noise.samplers; +package com.dfsek.terra.noise.samplers; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; +import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; +import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import java.util.Map; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java similarity index 97% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java index d246e53c7..cc1aa3f89 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/ImageSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers; +package com.dfsek.terra.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java similarity index 97% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java index d74fc35a0..e3f0d43ce 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/KernelSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers; +package com.dfsek.terra.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java similarity index 99% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java index 8c27f612d..6f8895ad6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/CellularSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.noise.samplers.noise; +package com.dfsek.terra.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java similarity index 90% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java index 1d8e010c6..59455ffa1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ConstantSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise; +package com.dfsek.terra.noise.samplers.noise; /** * Sampler3D implementation that returns a constant. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java similarity index 95% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java index 60fb2c97e..2cd6bcdac 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/ExpressionFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise; +package com.dfsek.terra.noise.samplers.noise; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java index f1311f2ed..277316a50 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.noise.samplers.noise; +package com.dfsek.terra.noise.samplers.noise; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import net.jafama.FastMath; public class GaborNoiseSampler extends NoiseFunction { diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java index 5e9249faf..7e21160a2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/NoiseFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise; +package com.dfsek.terra.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 95% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java index e04976feb..f974132aa 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.fractal; +package com.dfsek.terra.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 91% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java index 9c5c0f0cd..702ab0b1c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.noise.samplers.noise.fractal; +package com.dfsek.terra.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; public abstract class FractalNoiseFunction extends NoiseFunction { protected final NoiseSampler input; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java index 48b71c018..95fe14387 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.fractal; +package com.dfsek.terra.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 95% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java index 56e92269a..358568bc4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.fractal; +package com.dfsek.terra.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 91% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java index b89346c1f..5a488a6aa 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.noise.samplers.noise.random; +package com.dfsek.terra.noise.samplers.noise.random; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 94% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java index 6f9c2fb42..5a99eed7c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.noise.samplers.noise.random; +package com.dfsek.terra.noise.samplers.noise.random; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 99% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index 94a7de195..17a49e93f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.simplex; +package com.dfsek.terra.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index 43e1e8993..0ce5a2a6f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.simplex; +package com.dfsek.terra.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java similarity index 97% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java index 73832a28d..13fbe326b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.simplex; +package com.dfsek.terra.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide Perlin Noise. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java similarity index 99% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java index 98644c689..7b1ccc099 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.simplex; +package com.dfsek.terra.noise.samplers.noise.simplex; public class SimplexSampler extends SimplexStyleSampler { private static final Double2[] GRAD_2D = { diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java index 7ff57275b..83805d85b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.noise.samplers.noise.simplex; +package com.dfsek.terra.noise.samplers.noise.simplex; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; /** * Abstract NoiseSampler implementation for simplex-style noise functions. diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java index f91376003..154d7053a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.value; +package com.dfsek.terra.noise.samplers.noise.value; public class ValueCubicSampler extends ValueStyleNoise { public ValueCubicSampler(int seed) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java index cc8384b1a..656f60d7f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.noise.samplers.noise.value; +package com.dfsek.terra.noise.samplers.noise.value; public class ValueSampler extends ValueStyleNoise { public ValueSampler(int seed) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java similarity index 83% rename from common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java rename to common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java index 7ea976614..aff9e1a22 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.noise.samplers.noise.value; +package com.dfsek.terra.noise.samplers.noise.value; -import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; public abstract class ValueStyleNoise extends NoiseFunction { public ValueStyleNoise(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java index fbf9bedc8..37b8eb459 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.api.structures.loot.LootTable; public class LootRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index 43f093960..91017c2da 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,13 +1,13 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.api.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.api.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.api.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.api.noise.samplers.noise.value.ValueSampler; +import com.dfsek.terra.noise.samplers.noise.random.GaussianNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.noise.samplers.noise.simplex.PerlinSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.SimplexSampler; +import com.dfsek.terra.noise.samplers.noise.value.ValueCubicSampler; +import com.dfsek.terra.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java index 110659b58..ad865a298 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java @@ -1,7 +1,7 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.registry.OpenRegistryImpl; -public class ScriptRegistry extends OpenRegistryImpl { +public class ScriptRegistry extends OpenRegistryImpl { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 5ed1316ff..732b1dfed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -7,11 +7,12 @@ import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.util.world.PaletteUtil; +import com.dfsek.terra.api.util.PaletteUtil; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.config.pack.ConfigPackImpl; @@ -19,7 +20,6 @@ import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler2D; import com.dfsek.terra.world.population.CavePopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 3f2709a6a..930c6cf6a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -17,7 +17,7 @@ import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.util.world.PaletteUtil; +import com.dfsek.terra.api.util.PaletteUtil; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java rename to common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java index 6ca432233..0ae18180b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java @@ -10,10 +10,10 @@ import com.google.common.cache.LoadingCache; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -public class SamplerCache { +public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.SamplerCache { private final LoadingCache cache; - public SamplerCache(TerraPlugin main, TerraWorld world) { + public SamplerCacheImpl(TerraPlugin main, TerraWorld world) { cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getSamplerCache()) .build(new CacheLoader() { @Override @@ -25,17 +25,20 @@ public class SamplerCache { }); } + @Override public Sampler get(int x, int z) { int cx = FastMath.floorDiv(x, 16); int cz = FastMath.floorDiv(z, 16); return getChunk(cx, cz); } + @Override public Sampler getChunk(int cx, int cz) { long key = MathUtil.squash(cx, cz); return cache.getUnchecked(key); } + @Override public void clear() { cache.invalidateAll(); cache.cleanUp(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 38ab60273..951ee41fa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index d315b5472..c99eed555 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 24b63d96a..142525e07 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.Chunk; @@ -33,7 +33,7 @@ public class OrePopulator implements TerraBlockPopulator { if(!tw.isSafe()) return; for(int cx = -1; cx <= 1; cx++) { for(int cz = -1; cz <= 1; cz++) { - Random random = new FastRandom(MathUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); + Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); int originX = ((chunk.getX() + cx) << 4); int originZ = ((chunk.getZ() + cz) << 4); TerraBiome b = tw.getBiomeProvider().getBiome(originX + 8, originZ + 8); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 8f8486e33..aba5f765a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; @@ -44,8 +44,8 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; - Random random = new FastRandom(MathUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - conf.getStructure().get(random).execute(spawn.setY(conf.getSpawnStart().get(random)), chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); + Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index f4e1efd3a..ba29c522c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index eb6b87f3d..0cd519d8b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -1,18 +1,18 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure { - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollectionImpl structure; private final Range spawnStart; private final GridSpawn spawn; private final StructureTemplate template; - public TerraStructure(ProbabilityCollectionImpl structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollectionImpl structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; @@ -23,7 +23,7 @@ public class TerraStructure { return template; } - public ProbabilityCollectionImpl getStructure() { + public ProbabilityCollectionImpl getStructure() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java index c34da3b4e..2d98cb11f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 3dd2bddcb..2a8c04aae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,8 +1,8 @@ package com.dfsek.terra.world.population.items.tree; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -12,9 +12,9 @@ import java.util.Random; public class TerraTree implements Tree { private final MaterialSet spawnable; private final int yOffset; - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollectionImpl structure; - public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollectionImpl structure) { + public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollectionImpl structure) { this.spawnable = spawnable; this.yOffset = yOffset; this.structure = structure; @@ -22,7 +22,7 @@ public class TerraTree implements Tree { @Override public synchronized boolean plant(LocationImpl location, Random random) { - return structure.get(random).executeDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); + return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 853d301a9..a3409a7be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; -import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { 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 afec03924..cdcd8dc78 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,11 +10,13 @@ import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.World; @@ -22,7 +24,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; -import com.dfsek.terra.api.util.logging.Logger; +import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; @@ -39,9 +41,8 @@ import com.dfsek.terra.bukkit.world.BukkitBiome; import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; -import com.dfsek.terra.config.PluginConfig; +import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; @@ -73,7 +74,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private final ConfigRegistry registry = new ConfigRegistry(); private final CheckedRegistry checkedRegistry = new CheckedRegistry<>(registry); - private final PluginConfig config = new PluginConfig(); + private final PluginConfig config = new PluginConfigImpl(); private final ItemHandle itemHandle = new BukkitItemHandle(); private WorldHandle handle = new BukkitWorldHandle(); private final GenericLoaders genericLoaders = new GenericLoaders(this); 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 29d6f7dd7..2e3a14971 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,6 +12,7 @@ import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; @@ -22,6 +23,7 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -31,13 +33,12 @@ import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.util.logging.Logger; +import com.dfsek.terra.api.Logger; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; -import com.dfsek.terra.config.PluginConfig; +import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -124,7 +125,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final AddonRegistry addonRegistry = new AddonRegistry(fabricAddon, this); private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); - private final PluginConfig config = new PluginConfig(); + private final PluginConfig config = new PluginConfigImpl(); private final TransformerImpl biomeFixer = new TransformerImpl.Builder() .addTransform(this::parseBiome, Validator.notNull()) 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 59084224e..16497596f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -4,11 +4,13 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.World; @@ -17,9 +19,9 @@ import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; import com.dfsek.terra.config.GenericLoaders; -import com.dfsek.terra.config.PluginConfig; +import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.lang.Language; +import com.dfsek.terra.config.lang.LanguageImpl; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; import com.dfsek.terra.api.profiler.Profiler; @@ -38,7 +40,7 @@ public class StandalonePlugin implements TerraPlugin { private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); - private final PluginConfig config = new PluginConfig(); + private final PluginConfig config = new PluginConfigImpl(); private final RawWorldHandle worldHandle = new RawWorldHandle(); private final EventManager eventManager = new EventManagerImpl(this); @@ -55,7 +57,7 @@ public class StandalonePlugin implements TerraPlugin { } @Override - public com.dfsek.terra.api.util.logging.Logger logger() { + public com.dfsek.terra.api.Logger logger() { return new JavaLogger(Logger.getLogger("Terra")); } @@ -72,7 +74,7 @@ public class StandalonePlugin implements TerraPlugin { @Override public Language getLanguage() { try { - return new Language(new File(getDataFolder(), "lang/en_us.yml")); + return new LanguageImpl(new File(getDataFolder(), "lang/en_us.yml")); } catch(IOException e) { throw new IllegalArgumentException(); } @@ -111,7 +113,7 @@ public class StandalonePlugin implements TerraPlugin { @Override public DebugLogger getDebugLogger() { Logger logger = Logger.getLogger("Terra"); - return new DebugLogger(new com.dfsek.terra.api.util.logging.Logger() { + return new DebugLogger(new com.dfsek.terra.api.Logger() { @Override public void info(String message) { logger.info(message); diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java index 1ead85e8d..8ea1150aa 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java @@ -1,6 +1,6 @@ package com.dfsek.terra.sponge; -import com.dfsek.terra.api.util.logging.Logger; +import com.dfsek.terra.api.Logger; public class SpongeLogger implements Logger { private final org.slf4j.Logger logger; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 47d266c45..3bb6729bb 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -4,17 +4,19 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.config.PluginConfig; -import com.dfsek.terra.config.lang.Language; +import com.dfsek.terra.config.PluginConfigImpl; +import com.dfsek.terra.config.lang.LanguageImpl; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; @@ -34,7 +36,7 @@ import java.nio.file.Path; public class TerraSpongePlugin implements TerraPlugin { private final ConfigRegistry configRegistry = new ConfigRegistry(); private final CheckedRegistry packCheckedRegistry = new CheckedRegistry<>(configRegistry); - private final PluginConfig config = new PluginConfig(); + private final PluginConfig config = new PluginConfigImpl(); private final AddonRegistry addonRegistry = new AddonRegistry(this); private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); @@ -72,7 +74,7 @@ public class TerraSpongePlugin implements TerraPlugin { } @Override - public com.dfsek.terra.api.util.logging.Logger logger() { + public com.dfsek.terra.api.Logger logger() { return new SpongeLogger(logger); } @@ -89,7 +91,7 @@ public class TerraSpongePlugin implements TerraPlugin { @Override public Language getLanguage() { try { - return new Language(new File(getDataFolder(), "lang/en_us.yml")); + return new LanguageImpl(new File(getDataFolder(), "lang/en_us.yml")); } catch(IOException e) { throw new IllegalArgumentException(); } From 9631b1b578a8b574e3a123732db9aa8b12770629 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 13:18:16 -0700 Subject: [PATCH 0047/1529] begin work on impl --- .../java/com/dfsek/terra/api/block/Block.java | 1 + .../dfsek/terra/api/config/WorldConfig.java | 12 +++++++ .../pipeline/mutator/ReplaceListMutator.java | 7 ++-- .../biome/provider/ImageBiomeProvider.java | 1 - .../mutator/ReplaceListMutatorTemplate.java | 5 +-- .../terra/config/pack/ConfigPackImpl.java | 21 +++++++----- .../terra/config/pack/WorldConfigImpl.java | 33 ++++++++++++++++++- .../noise/samplers/noise/CellularSampler.java | 6 ++-- .../terra/registry/CheckedRegistryImpl.java | 1 - .../registry/config/ConfigTypeRegistry.java | 3 +- .../terra/registry/master/ConfigRegistry.java | 4 +-- .../com/dfsek/terra/vector/Vector2Impl.java | 22 ++++++------- .../com/dfsek/terra/vector/Vector3Impl.java | 27 +++++++-------- .../com/dfsek/terra/world/TerraWorldImpl.java | 6 ++-- .../generators/DefaultChunkGenerator2D.java | 25 -------------- .../generators/DefaultChunkGenerator3D.java | 25 -------------- .../generation/math/SamplerCacheImpl.java | 2 +- .../terra/world/population/CavePopulator.java | 16 +++++---- .../world/population/FloraPopulator.java | 2 +- .../terra/world/population/TreePopulator.java | 2 +- .../population/items/flora/ConstantFlora.java | 3 +- 21 files changed, 115 insertions(+), 109 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java index 4827a7845..ca9c80a65 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; +@Deprecated public interface Block extends Handle { void setBlockData(BlockData data, boolean physics); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 15c5fc085..84ea2de10 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -16,4 +16,16 @@ public interface WorldConfig { SamplerCache getSamplerCache(); BiomeProvider getProvider(); + + int elevationBlend(); + + boolean disableTrees(); + + boolean disableCarving(); + + boolean disableOres(); + + boolean disableFlora(); + + boolean disableStructures(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java index 84e6fa715..d7a6f47ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -8,12 +9,12 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import java.util.Map; public class ReplaceListMutator implements BiomeMutator { - private final Map> replace; + private final Map> replace; private final NoiseSampler sampler; - private final ProbabilityCollectionImpl replaceDefault; + private final ProbabilityCollection replaceDefault; private final String defaultTag; - public ReplaceListMutator(Map> replace, String defaultTag, ProbabilityCollectionImpl replaceDefault, NoiseSampler sampler) { + public ReplaceListMutator(Map> replace, String defaultTag, ProbabilityCollection replaceDefault, NoiseSampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java index eb52315d1..f5e56e978 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.registry.OpenRegistry; import net.jafama.FastMath; import java.awt.*; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index 12d21f964..e8123f20a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -19,11 +20,11 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollectionImpl defaultTo; @Value("to") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { - Map> replaceMap = new HashMap<>(); + Map> replaceMap = new HashMap<>(); replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.apply(seed), biomeBuilders.map(builder -> builder.apply(seed), true))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 6a7a97f75..5bedeccad 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -15,6 +15,7 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.loot.LootTableImpl; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; @@ -37,6 +38,8 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; +import com.dfsek.terra.registry.CheckedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.LootRegistry; @@ -89,7 +92,7 @@ public class ConfigPackImpl implements ConfigPack { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); - registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); + registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); this.loader = new FolderLoader(folder.toPath()); this.main = main; @@ -132,7 +135,7 @@ public class ConfigPackImpl implements ConfigPack { try { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); - registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistry<>(openRegistry))); + registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); this.loader = new ZIPLoader(file); this.main = main; @@ -191,18 +194,18 @@ public class ConfigPackImpl implements ConfigPack { putPair(map, NoiseProvider.class, new NoiseRegistry()); putPair(map, FunctionBuilder.class, (OpenRegistry) (Object) new FunctionRegistry()); - putPair(map, LootTableImpl.class, new LootRegistry()); - putPair(map, StructureScript.class, new ScriptRegistry()); + putPair(map, LootTable.class, new LootRegistry()); + putPair(map, Structure.class, new ScriptRegistry()); return map; } private void putPair(Map, ImmutablePair, CheckedRegistry>> map, Class key, OpenRegistry l) { - map.put(key, ImmutablePair.of(l, new CheckedRegistry<>(l))); + map.put(key, ImmutablePair.of(l, new CheckedRegistryImpl<>(l))); } private void checkDeadEntries(TerraPlugin main) { - registryMap.forEach((clazz, pair) -> pair.getLeft().getDeadEntries().forEach((id, value) -> main.getDebugLogger().warn("Dead entry in '" + clazz + "' registry: '" + id + "'"))); + registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } protected Map, ImmutablePair, CheckedRegistry>> getRegistryMap() { @@ -218,8 +221,8 @@ public class ConfigPackImpl implements ConfigPack { loader.open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try(InputStream stream = entry.getValue()) { - Structure structure = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTableImpl.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); - getOpenRegistry(StructureScript.class).add(structure.getId(), structure); + Structure structure = new StructureScript(stream, main, getRegistry(Structure.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); + getOpenRegistry(Structure.class).add(structure.getId(), structure); } catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) { throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); } @@ -306,7 +309,7 @@ public class ConfigPackImpl implements ConfigPack { @Override public CheckedRegistry> getConfigTypeRegistry() { - return new CheckedRegistry>(configTypeRegistry) { + return new CheckedRegistryImpl<>(configTypeRegistry) { @Override @SuppressWarnings("deprecation") public void addUnchecked(String identifier, ConfigType value) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 2973b5249..a952f19f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; @@ -18,7 +19,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig { +public class WorldConfigImpl implements WorldConfig { private final SamplerCache samplerCache; private final BiomeProvider provider; @@ -63,6 +64,36 @@ public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig { return provider; } + @Override + public int elevationBlend() { + return pack.getTemplate().getElevationBlend(); + } + + @Override + public boolean disableTrees() { + return pack.getTemplate().disableTrees(); + } + + @Override + public boolean disableCarving() { + return pack.getTemplate().disableCarvers(); + } + + @Override + public boolean disableOres() { + return pack.getTemplate().disableOres(); + } + + @Override + public boolean disableFlora() { + return pack.getTemplate().disableFlora(); + } + + @Override + public boolean disableStructures() { + return pack.getTemplate().disableStructures(); + } + public Set getStructures() { return new HashSet<>(getRegistry(TerraStructure.class).entries()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java index 6f8895ad6..336226a35 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java @@ -4,6 +4,8 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; /** * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. @@ -229,7 +231,7 @@ public class CellularSampler extends NoiseFunction { int xPrimed = (xr - 1) * PRIME_X; int yPrimedBase = (yr - 1) * PRIME_Y; - Vector2 center = new Vector2(x, y); + Vector2 center = new Vector2Impl(x, y); switch(distanceFunction) { default: @@ -382,7 +384,7 @@ public class CellularSampler extends NoiseFunction { int yPrimedBase = (yr - 1) * PRIME_Y; int zPrimedBase = (zr - 1) * PRIME_Z; - Vector3 center = new Vector3(x, y, z); + Vector3 center = new Vector3Impl(x, y, z); switch(distanceFunction) { case Euclidean: diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 85725d943..cfccf8aa3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.api.registry.DuplicateEntryException; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index c5d12445c..f2537159e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; @@ -42,7 +43,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; - add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, PaletteImpl.class, () -> new PaletteRegistry(main))); + add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main))); add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index 2667193f5..a4c13c187 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -3,7 +3,7 @@ package com.dfsek.terra.registry.master; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.registry.OpenRegistry; +import com.dfsek.terra.registry.OpenRegistryImpl; import java.io.File; import java.io.IOException; @@ -12,7 +12,7 @@ import java.util.zip.ZipFile; /** * Class to hold config packs */ -public class ConfigRegistry extends OpenRegistry { +public class ConfigRegistry extends OpenRegistryImpl { public void load(File folder, TerraPlugin main) throws ConfigException { ConfigPackImpl pack = new ConfigPackImpl(folder, main); add(pack.getTemplate().getID(), pack); diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java index 285a15080..42700e30d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java @@ -1,6 +1,6 @@ package com.dfsek.terra.vector; -import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Vector2; import net.jafama.FastMath; @@ -52,16 +52,16 @@ public class Vector2Impl implements Vector2 { } @Override - public Vector2 add(Vector2Impl other) { - x += other.x; - z += other.z; + public Vector2 add(Vector2 other) { + x += other.getX(); + z += other.getZ(); return this; } @Override - public Vector2 subtract(Vector2Impl other) { - x -= other.x; - z -= other.z; + public Vector2 subtract(Vector2 other) { + x -= other.getX(); + z -= other.getZ(); return this; } @@ -89,14 +89,14 @@ public class Vector2Impl implements Vector2 { } @Override - public double distance(Vector2Impl other) { + public double distance(Vector2 other) { return FastMath.sqrt(distanceSquared(other)); } @Override - public double distanceSquared(Vector2Impl other) { - double dx = other.x - x; - double dz = other.z - z; + public double distanceSquared(Vector2 other) { + double dx = other.getX() - x; + double dz = other.getZ() - z; return dx * dx + dz * dz; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index 9475cd2f7..2ab0f974c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.vector; -import com.dfsek.terra.api.math.MathUtil; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; @@ -163,13 +164,13 @@ public class Vector3Impl implements Vector3 { } @Override - public double distance(@NotNull Vector3Impl o) { - return FastMath.sqrt(FastMath.pow2(x - o.x) + FastMath.pow2(y - o.y) + FastMath.pow2(z - o.z)); + public double distance(@NotNull Vector3 o) { + return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); } @Override - public double distanceSquared(@NotNull Vector3Impl o) { - return FastMath.pow2(x - o.x) + FastMath.pow2(y - o.y) + FastMath.pow2(z - o.z); + public double distanceSquared(@NotNull Vector3 o) { + return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); } @Override @@ -180,7 +181,7 @@ public class Vector3Impl implements Vector3 { @Override @NotNull - public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3Impl axis, double angle) throws IllegalArgumentException { + public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { double x = getX(), y = getY(), z = getZ(); double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); @@ -202,12 +203,12 @@ public class Vector3Impl implements Vector3 { } @Override - public double dot(@NotNull Vector3Impl other) { - return x * other.x + y * other.y + z * other.z; + public double dot(@NotNull Vector3 other) { + return x * other.getX() + y * other.getY() + z * other.getZ(); } @Override - public LocationImpl toLocation(World world) { + public Location toLocation(World world) { return new LocationImpl(world, this.clone()); } @@ -225,10 +226,10 @@ public class Vector3Impl implements Vector3 { } @Override - public Vector3 subtract(Vector3Impl end) { - x -= end.x; - y -= end.y; - z -= end.z; + public Vector3 subtract(Vector3 end) { + x -= end.getX(); + y -= end.getY(); + z -= end.getZ(); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index ac68b683b..ed9ac1dfb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -2,6 +2,8 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.block.BlockData; @@ -14,7 +16,7 @@ import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; -public class TerraWorldImpl implements com.dfsek.terra.api.world.TerraWorld { +public class TerraWorldImpl implements TerraWorld { private final BiomeProvider provider; private final WorldConfigImpl config; private final boolean safe; @@ -76,7 +78,7 @@ public class TerraWorldImpl implements com.dfsek.terra.api.world.TerraWorld { } @Override - public BlockData getUngeneratedBlock(LocationImpl l) { + public BlockData getUngeneratedBlock(Location l) { return getUngeneratedBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 732b1dfed..3e4963931 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -54,31 +54,6 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { this.cache = cache; } - @Override - public boolean isParallelCapable() { - return true; - } - - @Override - public boolean shouldGenerateCaves() { - return configPack.getTemplate().vanillaCaves(); - } - - @Override - public boolean shouldGenerateDecorations() { - return configPack.getTemplate().vanillaDecorations(); - } - - @Override - public boolean shouldGenerateMobs() { - return configPack.getTemplate().vanillaMobs(); - } - - @Override - public boolean shouldGenerateStructures() { - return configPack.getTemplate().vanillaStructures(); - } - @Override public ConfigPackImpl getConfigPack() { return configPack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 930c6cf6a..b017db9e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -66,31 +66,6 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { blank = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:air")); } - @Override - public boolean isParallelCapable() { - return true; - } - - @Override - public boolean shouldGenerateCaves() { - return configPack.getTemplate().vanillaCaves(); - } - - @Override - public boolean shouldGenerateDecorations() { - return configPack.getTemplate().vanillaDecorations(); - } - - @Override - public boolean shouldGenerateMobs() { - return configPack.getTemplate().vanillaMobs(); - } - - @Override - public boolean shouldGenerateStructures() { - return configPack.getTemplate().vanillaStructures(); - } - @Override public ConfigPackImpl getConfigPack() { return configPack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java index 0ae18180b..01b1e68fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java @@ -20,7 +20,7 @@ public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.Sam public Sampler load(@NotNull Long key) { int cx = (int) (key >> 32); int cz = (int) key.longValue(); - return world.getWorld().getTerraGenerator().createSampler(cx, cz, world.getBiomeProvider(), world.getWorld(), world.getConfig().getTemplate().getElevationBlend()); + return world.getWorld().getTerraGenerator().createSampler(cx, cz, world.getBiomeProvider(), world.getWorld(), world.getConfig().elevationBlend()); } }); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 951ee41fa..20fbd2d65 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,6 +1,8 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -41,12 +43,12 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); if(!tw.isSafe()) return; - WorldConfigImpl config = tw.getConfig(); - if(config.getTemplate().disableCarvers()) return; + WorldConfig config = tw.getConfig(); + if(config.disableCarving()) return; - for(UserDefinedCarver c : config.getCarvers()) { + for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); + Map shiftCandidate = new HashMap<>(); Set updateNeeded = new HashSet<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { @@ -85,9 +87,9 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { } } }); - for(Map.Entry entry : shiftCandidate.entrySet()) { - LocationImpl l = entry.getKey(); - LocationImpl mut = l.clone(); + for(Map.Entry entry : shiftCandidate.entrySet()) { + Location l = entry.getKey(); + Location mut = l.clone(); BlockData orig = l.getBlock().getBlockData(); do mut.subtract(0, 1, 0); while(mut.getY() > world.getMinHeight() && mut.getBlock().getBlockData().matches(orig)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index c99eed555..a42678384 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -34,7 +34,7 @@ public class FloraPopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("flora")) { - if(tw.getConfig().getTemplate().disableFlora()) return; + if(tw.getConfig().disableFlora()) return; if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index ba29c522c..7e045a488 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -33,7 +33,7 @@ public class TreePopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("tree")) { - if(tw.getConfig().getTemplate().disableTrees()) return; + if(tw.getConfig().disableTrees()) return; if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index a52eb7ed1..1396c96fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -43,7 +44,7 @@ public class ConstantFlora implements Flora { } @Override - public boolean plant(LocationImpl l) { + public boolean plant(Location l) { for(int i = 1; i < data.size() + 1; i++) { l.clone().add(0, i, 0).getBlock().setBlockData(data.get(i - 1), false); } From 89657e362a3551e8a513c1729942e15f10ddccf4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 13:33:59 -0700 Subject: [PATCH 0048/1529] implementation pass 1 --- .../dfsek/terra/api/config/ConfigPack.java | 11 ++++++++++ .../terra/api/event/EventManagerImpl.java | 3 +-- .../structures/script/StructureScript.java | 2 +- .../script/functions/CheckFunction.java | 5 +++-- .../script/functions/LootFunction.java | 2 +- .../api/structures/structure/buffer/Cell.java | 3 ++- .../structure/buffer/IntermediateBuffer.java | 9 ++++---- .../structure/buffer/StructureBuffer.java | 17 ++++++++------- .../structure/buffer/items/BufferedBlock.java | 3 ++- .../buffer/items/BufferedEntity.java | 3 ++- .../buffer/items/BufferedLootApplication.java | 8 ++++--- .../buffer/items/BufferedPulledBlock.java | 3 ++- .../items/BufferedStateManipulator.java | 3 ++- .../pipeline/mutator/BorderListMutator.java | 7 ++++--- .../biome/pipeline/mutator/BorderMutator.java | 5 +++-- .../pipeline/mutator/ReplaceMutator.java | 5 +++-- .../biome/pipeline/source/RandomSource.java | 5 +++-- .../api/world/locate/AsyncBiomeFinder.java | 3 ++- .../api/world/locate/AsyncFeatureFinder.java | 3 ++- .../world/locate/AsyncStructureFinder.java | 5 +++-- .../dfsek/terra/commands/PacksCommand.java | 3 +-- .../commands/structure/SpawnCommand.java | 3 ++- .../structure/StructureExportCommand.java | 7 ++++--- .../dfsek/terra/config/dummy/DummyWorld.java | 3 ++- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../templates/source/NoiseSourceTemplate.java | 3 ++- .../mutator/BorderListMutatorTemplate.java | 7 ++++--- .../stage/mutator/BorderMutatorTemplate.java | 3 ++- .../stage/mutator/ReplaceMutatorTemplate.java | 3 ++- .../terra/config/pack/ConfigPackImpl.java | 21 +++++++++++++++++++ .../terra/world/population/OrePopulator.java | 2 +- .../world/population/StructurePopulator.java | 11 ++++++---- .../population/items/flora/BlockFlora.java | 3 ++- .../population/items/flora/TerraFlora.java | 3 ++- .../population/items/tree/TerraTree.java | 3 ++- 35 files changed, 121 insertions(+), 61 deletions(-) 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 f409317ff..d9c58e274 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 @@ -1,10 +1,13 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.LoaderRegistrar; +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.world.biome.generation.BiomeProvider; +import java.util.Set; + public interface ConfigPack extends LoaderRegistrar { @SuppressWarnings("unchecked") CheckedRegistry getRegistry(Class clazz); @@ -14,4 +17,12 @@ public interface ConfigPack extends LoaderRegistrar { WorldConfig toWorldConfig(TerraWorld world); CheckedRegistry> getConfigTypeRegistry(); + + Set addons(); + + String getID(); + + String getAuthor(); + + String getVersion(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java index cc97be2b2..d4d281b54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java @@ -36,8 +36,7 @@ public class EventManagerImpl implements EventManager { PackEvent packEvent = (PackEvent) event; if(packEvent .getPack() - .getTemplate() - .getAddons() + .addons() .contains(listenerHolder.addon)) { listenerHolder.method.invoke(listenerHolder.listener, event); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index f595e4bd0..fcdf95946 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -49,7 +49,7 @@ import java.util.concurrent.ExecutionException; public class StructureScript implements Structure { private final Block block; private final String id; - private final Cache cache; + private final Cache cache; private final TerraPlugin main; private String tempID; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index f84bde8b4..5a9813acc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector2; @@ -47,12 +48,12 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - LocationImpl location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getBuffer().getOrigin().getWorld()); } - private String apply(LocationImpl vector, World world) { + private String apply(Location vector, World world) { TerraWorld tw = main.getWorld(world); SamplerCache cache = tw.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index a1cc8c923..a3f0f7079 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -47,7 +47,7 @@ public class LootFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); String id = data.apply(implementationArguments, variableMap); - LootTableImpl table = registry.get(id); + LootTable table = registry.get(id); if(table == null) { main.logger().severe("No such loot table " + id); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index e6b16161b..21e9a7def 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; @@ -12,7 +13,7 @@ public class Cell implements BufferedItem { @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { items.forEach(item -> item.paste(origin)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index a32c7a40a..737a6bd2b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -15,22 +16,22 @@ public class IntermediateBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, LocationImpl location) { + public Buffer addItem(BufferedItem item, Location location) { return original.addItem(item, location.add(offset)); } @Override - public LocationImpl getOrigin() { + public Location getOrigin() { return original.getOrigin().clone().add(offset); } @Override - public String getMark(LocationImpl location) { + public String getMark(Location location) { return original.getMark(location.add(offset)); } @Override - public Buffer setMark(String mark, LocationImpl location) { + public Buffer setMark(String mark, Location location) { original.setMark(mark, location.add(offset)); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 63e148c68..4e53c92dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -10,11 +11,11 @@ import java.util.LinkedHashMap; import java.util.Map; public class StructureBuffer implements Buffer { - private final Map bufferedItemMap = new LinkedHashMap<>(); - private final LocationImpl origin; + private final Map bufferedItemMap = new LinkedHashMap<>(); + private final Location origin; private boolean succeeded; - public StructureBuffer(LocationImpl origin) { + public StructureBuffer(Location origin) { this.origin = origin; } @@ -24,7 +25,7 @@ public class StructureBuffer implements Buffer { public void paste(Chunk chunk) { bufferedItemMap.forEach(((location, item) -> { - LocationImpl current = origin.clone().add(location); + Location current = origin.clone().add(location); if(FastMath.floorDiv(current.getBlockX(), 16) != chunk.getX() || FastMath.floorDiv(current.getBlockZ(), 16) != chunk.getZ()) return; item.paste(chunk, current); @@ -32,13 +33,13 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, LocationImpl location) { + public Buffer addItem(BufferedItem item, Location location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item); return this; } @Override - public String getMark(LocationImpl location) { + public String getMark(Location location) { Cell cell = bufferedItemMap.get(location); if(cell != null) { return cell.getMark(); @@ -47,7 +48,7 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer setMark(String mark, LocationImpl location) { + public Buffer setMark(String mark, Location location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark); return this; } @@ -61,7 +62,7 @@ public class StructureBuffer implements Buffer { } @Override - public LocationImpl getOrigin() { + public Location getOrigin() { return origin.clone(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 9ac42cee5..df40380fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -21,7 +22,7 @@ public class BufferedBlock implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Block block = origin.getBlock(); try { if(overwrite || block.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 08d279f01..f02e90d1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -18,7 +19,7 @@ public class BufferedEntity implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type); main.getEventManager().callEvent(new EntitySpawnEvent(entity.getWorld().getTerraGenerator().getConfigPack(), entity, entity.getLocation())); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index ae3b2f59b..0222fd51b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -2,7 +2,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; @@ -12,18 +14,18 @@ import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; public class BufferedLootApplication implements BufferedItem { - private final LootTableImpl table; + private final LootTable table; private final TerraPlugin main; private final StructureScript structure; - public BufferedLootApplication(LootTableImpl table, TerraPlugin main, StructureScript structure) { + public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { this.table = table; this.main = main; this.structure = structure; } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { try { Block block = origin.getBlock(); BlockState data = block.getState(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 8d0fcb1b8..9b5117283 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -14,7 +15,7 @@ public class BufferedPulledBlock implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Block pos = origin.getBlock(); while(pos.getY() > origin.getWorld().getMinHeight()) { if(!pos.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 161f6c385..1fcb2801c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.state.BlockState; @@ -15,7 +16,7 @@ public class BufferedStateManipulator implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { try { BlockState state = origin.getBlock().getState(); state.applyState(data); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java index 97b37dde1..fabb52e76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -10,11 +11,11 @@ import java.util.Map; public class BorderListMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollectionImpl replaceDefault; + private final ProbabilityCollection replaceDefault; private final String defaultReplace; - private final Map> replace; + private final Map> replace; - public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollectionImpl replaceDefault) { + public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { this.border = border; this.noiseSampler = noiseSampler; this.replaceDefault = replaceDefault; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java index 039f7d3af..d4a922f49 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -8,10 +9,10 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class BorderMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollectionImpl replace; + private final ProbabilityCollection replace; private final String replaceTag; - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollectionImpl replace) { + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { this.border = border; this.noiseSampler = noiseSampler; this.replace = replace; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java index 9b40f8b2d..f5d0015d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java @@ -1,16 +1,17 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; - private final ProbabilityCollectionImpl replace; + private final ProbabilityCollection replace; private final NoiseSampler sampler; - public ReplaceMutator(String replaceable, ProbabilityCollectionImpl replace, NoiseSampler sampler) { + public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java index 0a64c1ba0..e74186aea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java @@ -1,15 +1,16 @@ package com.dfsek.terra.api.world.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class RandomSource implements BiomeSource { - private final ProbabilityCollectionImpl biomes; + private final ProbabilityCollection biomes; private final NoiseSampler sampler; - public RandomSource(ProbabilityCollectionImpl biomes, NoiseSampler sampler) { + public RandomSource(ProbabilityCollection biomes, NoiseSampler sampler) { this.biomes = biomes; this.sampler = sampler; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index ef3d7b6c5..2fac9bd54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -14,7 +15,7 @@ import java.util.function.Consumer; */ public class AsyncBiomeFinder extends AsyncFeatureFinder { - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index 71ce825cc..79b0a0961 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; @@ -22,7 +23,7 @@ public abstract class AsyncFeatureFinder implements Runnable { protected int searchSize = 1; protected final TerraPlugin main; - public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { this.provider = provider; this.target = target; this.main = main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index cea1b4952..6df9b92d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -16,7 +17,7 @@ import java.util.Random; import java.util.function.Consumer; public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } @@ -28,7 +29,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { @Override public boolean isValid(int x, int z, TerraStructure target) { - LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); + Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index 5b257ea06..b354cbbb3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -28,8 +28,7 @@ public class PacksCommand implements CommandTemplate { LangUtil.send("command.packs.main", sender); registry.entries().forEach(entry -> { - ConfigPackTemplate template = entry.getTemplate(); - LangUtil.send("command.packs.pack", sender, template.getID(), template.getAuthor(), template.getVersion()); + LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion()); }); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 4ee07f659..f3dac6ce1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -33,7 +34,7 @@ public class SpawnCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - LocationImpl p = player.getLocation(); + Location p = player.getLocation(); int x = p.getBlockX(); int y = p.getBlockY(); int z = p.getBlockZ(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 7a934a553..8d6623294 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.block.Block; @@ -45,10 +46,10 @@ public class StructureExportCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - Pair l = main.getWorldHandle().getSelectedLocation(player); + Pair l = main.getWorldHandle().getSelectedLocation(player); - LocationImpl l1 = l.getLeft(); - LocationImpl l2 = l.getRight(); + Location l1 = l.getLeft(); + Location l2 = l.getRight(); StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 67eb7891e..f75118b1a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.dummy; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -41,7 +42,7 @@ public class DummyWorld implements World { } @Override - public Entity spawnEntity(LocationImpl location, EntityType entityType) { + public Entity spawnEntity(Location location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 109e85bd0..026b37d45 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -21,7 +21,7 @@ public final class LangUtil { try(JarFile jar = main.getModJar()) { copyResourcesToDirectory(jar, "lang", file.toString()); } catch(IOException | URISyntaxException e) { - main.getDebugLogger().error("Failed to dump language files!"); + main.getDebugLogger().severe("Failed to dump language files!"); main.getDebugLogger().stack(e); } try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java index d82d90c23..05a670879 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -12,7 +13,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private NoiseSeeded noise; @Value("biomes") - private ProbabilityCollectionImpl biomes; + private ProbabilityCollection biomes; @Override public BiomeSource apply(Long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java index 1ddcfbd11..f9bce049a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -19,15 +20,15 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { private String defaultReplace; @Value("default-to") - private ProbabilityCollectionImpl defaultTo; + private ProbabilityCollection defaultTo; @Value("replace") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { - Map> replaceMap = new HashMap<>(); + Map> replaceMap = new HashMap<>(); replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.apply(seed), replacements.map(replacement -> replacement.apply(seed), true))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java index f84f88265..6a7ada974 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; @@ -15,7 +16,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private String replace; @Value("to") - private ProbabilityCollectionImpl to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java index d4a81b3e6..2f64878e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; @@ -12,7 +13,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private String from; @Value("to") - private ProbabilityCollectionImpl to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 5bedeccad..3f110cf41 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -9,6 +9,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; @@ -317,4 +318,24 @@ public class ConfigPackImpl implements ConfigPack { } }; } + + @Override + public Set addons() { + return template.getAddons(); + } + + @Override + public String getID() { + return template.getID(); + } + + @Override + public String getAuthor() { + return template.getAuthor(); + } + + @Override + public String getVersion() { + return template.getVersion(); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 142525e07..cdf07454c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -28,7 +28,7 @@ public class OrePopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("ore")) { - if(tw.getConfig().getTemplate().disableOres()) return; + if(tw.getConfig().disableOres()) return; if(!tw.isSafe()) return; for(int cx = -1; cx <= 1; cx++) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index aba5f765a..0b05f5373 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -1,7 +1,10 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; @@ -32,15 +35,15 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("structure")) { - if(tw.getConfig().getTemplate().disableStructures()) return; + if(tw.getConfig().disableStructures()) return; int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); - WorldConfigImpl config = tw.getConfig(); - for(TerraStructure conf : config.getStructures()) { - LocationImpl spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); + WorldConfig config = tw.getConfig(); + for(TerraStructure conf : config.getRegistry(TerraStructure.class).entries()) { + Location spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index d9ee0aa9c..5d00fb86c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -37,7 +38,7 @@ public class BlockFlora implements Flora { } @Override - public boolean plant(LocationImpl location) { + public boolean plant(Location location) { location.add(0, 1, 0).getBlock().setBlockData(data, true); return true; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 7f6536bd1..d17c2f7d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -2,6 +2,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -92,7 +93,7 @@ public class TerraFlora implements Flora { @Override - public boolean plant(LocationImpl location) { + public boolean plant(Location location) { boolean doRotation = testRotation.size() > 0; int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 2a8c04aae..7c0f6648d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -21,7 +22,7 @@ public class TerraTree implements Tree { } @Override - public synchronized boolean plant(LocationImpl location, Random random) { + public synchronized boolean plant(Location location, Random random) { return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); } From d4d2b659dc566239c4c5783ff97cab7cb5b0e6ba Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 14:53:00 -0700 Subject: [PATCH 0049/1529] fabric pass 1 --- .../dfsek/terra/api/config/ConfigPack.java | 13 ++++++++ .../dfsek/terra/api/config/WorldConfig.java | 6 ++++ .../terra/api/util/logging/DebugLogger.java | 8 ++--- .../terra/config/pack/ConfigPackImpl.java | 30 +++++++++++++++++++ .../terra/config/pack/WorldConfigImpl.java | 15 ++++++++++ .../terra/registry/master/ConfigRegistry.java | 7 +++-- .../com/dfsek/terra/world/TerraWorldImpl.java | 5 ++-- .../generators/DefaultChunkGenerator3D.java | 9 +++--- .../dfsek/terra/fabric/TerraFabricPlugin.java | 15 +++++----- .../dfsek/terra/fabric/block/FabricBlock.java | 3 +- .../FabricChunkGeneratorWrapper.java | 22 +++++++------- .../fabric/generation/TerraBiomeSource.java | 6 ++-- .../fabric/generation/TerraGeneratorType.java | 7 +++-- .../fabric/handle/FabricWorldHandle.java | 3 +- .../mixin/implementations/BiomeMixin.java | 2 +- .../client/MinecraftClientMixin.java | 2 +- .../server/GeneratorOptionsMixin.java | 3 +- .../dfsek/terra/fabric/util/FabricUtil.java | 9 +++--- .../terra/fabric/util/WorldEditUtil.java | 3 +- 19 files changed, 121 insertions(+), 47 deletions(-) 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 d9c58e274..08eda2099 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 @@ -6,6 +6,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import java.util.Map; import java.util.Set; public interface ConfigPack extends LoaderRegistrar { @@ -25,4 +26,16 @@ public interface ConfigPack extends LoaderRegistrar { String getAuthor(); String getVersion(); + + boolean vanillaMobs(); + + boolean vanillaStructures(); + + boolean vanillaCaves(); + + boolean disableStructures(); + + Map getLocatable(); + + boolean doBetaCarvers(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 84ea2de10..9a54bbcd1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -28,4 +28,10 @@ public interface WorldConfig { boolean disableFlora(); boolean disableStructures(); + + String getID(); + + String getAuthor(); + + String getVersion(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java index a22d805eb..fee065a77 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.util.logging; import com.dfsek.terra.api.Logger; -public class DebugLogger { +public class DebugLogger implements Logger { private final Logger logger; private boolean debug = false; @@ -22,15 +22,15 @@ public class DebugLogger { if(debug) logger.info(message); } - public void warn(String message) { + public void warning(String message) { if(debug) logger.warning(message); } - public void error(String message) { + public void severe(String message) { if(debug) logger.severe(message); } - public void stack(Exception e) { + public void stack(Throwable e) { if(debug) e.printStackTrace(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 3f110cf41..2ce3b99a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -338,4 +338,34 @@ public class ConfigPackImpl implements ConfigPack { public String getVersion() { return template.getVersion(); } + + @Override + public boolean vanillaMobs() { + return template.vanillaMobs(); + } + + @Override + public boolean vanillaStructures() { + return template.vanillaStructures(); + } + + @Override + public boolean vanillaCaves() { + return template.vanillaCaves(); + } + + @Override + public boolean disableStructures() { + return template.disableStructures(); + } + + @Override + public Map getLocatable() { + return template.getLocatable(); + } + + @Override + public boolean doBetaCarvers() { + return template.doBetaCarvers(); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index a952f19f9..b74d89e2b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -94,6 +94,21 @@ public class WorldConfigImpl implements WorldConfig { return pack.getTemplate().disableStructures(); } + @Override + public String getID() { + return pack.getID(); + } + + @Override + public String getAuthor() { + return pack.getAuthor(); + } + + @Override + public String getVersion() { + return pack.getVersion(); + } + public Set getStructures() { return new HashSet<>(getRegistry(TerraStructure.class).entries()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index a4c13c187..2285c8ba7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -2,6 +2,7 @@ package com.dfsek.terra.registry.master; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.registry.OpenRegistryImpl; @@ -12,10 +13,10 @@ import java.util.zip.ZipFile; /** * Class to hold config packs */ -public class ConfigRegistry extends OpenRegistryImpl { +public class ConfigRegistry extends OpenRegistryImpl { public void load(File folder, TerraPlugin main) throws ConfigException { - ConfigPackImpl pack = new ConfigPackImpl(folder, main); - add(pack.getTemplate().getID(), pack); + ConfigPack pack = new ConfigPackImpl(folder, main); + add(pack.getID(), pack); } public boolean loadAll(TerraPlugin main) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index ed9ac1dfb..38ee2a1d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.TerraWorld; @@ -24,10 +25,10 @@ public class TerraWorldImpl implements TerraWorld { private final BlockData air; - public TerraWorldImpl(World w, ConfigPackImpl c, TerraPlugin main) { + public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; - config = c.toWorldConfig(this); + config = (WorldConfigImpl) c.toWorldConfig(this); this.provider = config.getProvider(); air = main.getWorldHandle().createBlockData("minecraft:air"); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index b017db9e9..1f9ca86bf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; @@ -43,7 +44,7 @@ import java.util.Map; import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { - private final ConfigPackImpl configPack; + private final ConfigPack configPack; private final TerraPlugin main; private final BlockType water; private final PaletteImpl.Singleton blank; @@ -51,7 +52,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final Carver carver; - public DefaultChunkGenerator3D(ConfigPackImpl c, TerraPlugin main) { + public DefaultChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; @@ -67,7 +68,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } @Override - public ConfigPackImpl getConfigPack() { + public ConfigPack getConfigPack() { return configPack; } @@ -131,7 +132,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } } - if(configPack.getTemplate().doBetaCarvers()) { + if(configPack.doBetaCarvers()) { carver.carve(world, chunkX, chunkZ, chunk); } return chunk; 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 2e3a14971..205e20900 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 @@ -28,7 +28,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -53,6 +52,8 @@ import com.dfsek.terra.fabric.util.ProtoBiome; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.registry.CheckedRegistryImpl; +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; @@ -119,11 +120,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); private final ConfigRegistry configRegistry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistry<>(configRegistry); + private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(configRegistry); private final FabricAddon fabricAddon = new FabricAddon(); private final AddonRegistry addonRegistry = new AddonRegistry(fabricAddon, this); - private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); + private final com.dfsek.terra.api.registry.Registry addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); private final PluginConfig config = new PluginConfigImpl(); @@ -194,7 +195,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { } @Override - public LockedRegistry getAddons() { + public com.dfsek.terra.api.registry.Registry getAddons() { return addonLockedRegistry; } @@ -205,7 +206,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { boolean succeed = configRegistry.loadAll(this); worldMap.forEach((seed, pair) -> { pair.getRight().getConfig().getSamplerCache().clear(); - String packID = pair.getRight().getConfig().getTemplate().getID(); + String packID = pair.getRight().getConfig().getID(); pair.setRight(new TerraWorldImpl(pair.getRight().getWorld(), configRegistry.get(packID), this)); }); return succeed; @@ -232,7 +233,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { } @Override - public DebugLogger getDebugLogger() { + public Logger getDebugLogger() { return debugLogger; } @@ -241,7 +242,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { genericLoaders.register(registry); registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) + .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) .registerLoader(Identifier.class, (t, o, l) -> { Identifier identifier = Identifier.tryParse((String) o); if(identifier == null) throw new LoadException("Invalid identifier: " + o); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java index b4e428bb0..38d6c7680 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.block; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -49,7 +50,7 @@ public class FabricBlock implements Block { } @Override - public LocationImpl getLocation() { + public Location getLocation() { return FabricAdapter.adapt(delegate.position).toLocation((World) delegate.worldAccess); } 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 04a847c1a..47f3f2313 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 @@ -54,7 +54,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener public static final Codec PACK_CODEC = RecordCodecBuilder.create( config -> config.group( Codec.STRING.fieldOf("pack") - .forGetter(pack -> pack.getTemplate().getID()) + .forGetter(pack -> pack.getID()) ).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get))); public static final Codec CODEC = RecordCodecBuilder.create( @@ -72,15 +72,15 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener private final DefaultChunkGenerator3D delegate; private final TerraBiomeSource biomeSource; - private final ConfigPackImpl pack; + private final ConfigPack pack; private DimensionType dimensionType; - public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPackImpl configPack) { + public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { super(biomeSource, new StructuresConfig(false)); this.pack = configPack; this.delegate = new DefaultChunkGenerator3D(pack, TerraFabricPlugin.getInstance()); - delegate.getMain().logger().info("Loading world with config pack " + pack.getTemplate().getID()); + delegate.getMain().logger().info("Loading world with config pack " + pack.getID()); this.biomeSource = biomeSource; this.seed = seed; @@ -97,7 +97,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener return new FabricChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); } - public ConfigPackImpl getPack() { + public ConfigPack getPack() { return pack; } @@ -113,10 +113,10 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Nullable @Override public BlockPos locateStructure(ServerWorld world, StructureFeature feature, BlockPos center, int radius, boolean skipExistingChunks) { - if(!pack.getTemplate().disableStructures()) { + if(!pack.disableStructures()) { String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getId(feature)).toString(); TerraWorld terraWorld = TerraFabricPlugin.getInstance().getWorld((World) world); - TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getTemplate().getLocatable().get(name)); + TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getLocatable().get(name)); if(located != null) { CompletableFuture result = new CompletableFuture<>(); AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center).toLocation((World) world), 0, 500, location -> { @@ -135,14 +135,14 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public void carve(long seed, BiomeAccess access, Chunk chunk, GenerationStep.Carver carver) { - if(pack.getTemplate().vanillaCaves()) { + if(pack.vanillaCaves()) { super.carve(seed, access, chunk, carver); } } @Override public void setStructureStarts(DynamicRegistryManager dynamicRegistryManager, StructureAccessor structureAccessor, Chunk chunk, StructureManager structureManager, long worldSeed) { - if(pack.getTemplate().vanillaStructures()) { + if(pack.vanillaStructures()) { super.setStructureStarts(dynamicRegistryManager, structureAccessor, chunk, structureManager, worldSeed); } } @@ -163,7 +163,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public boolean isStrongholdStartingChunk(ChunkPos chunkPos) { - if(pack.getTemplate().vanillaStructures()) { + if(pack.vanillaStructures()) { return super.isStrongholdStartingChunk(chunkPos); } return false; @@ -196,7 +196,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public void populateEntities(ChunkRegion region) { - if(pack.getTemplate().vanillaMobs()) { + if(pack.vanillaMobs()) { int cx = region.getCenterPos().x; int cy = region.getCenterPos().z; Biome biome = region.getBiome((new ChunkPos(cx, cy)).getStartPos()); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 716a59918..ba24dc759 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -19,7 +19,7 @@ import java.util.stream.Collectors; public class TerraBiomeSource extends BiomeSource { public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( - Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID()) + Codec.STRING.fieldOf("pack").forGetter(ConfigPack::getID) ).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get)))); public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryLookupCodec.of(Registry.BIOME_KEY).forGetter(source -> source.biomeRegistry), @@ -30,9 +30,9 @@ public class TerraBiomeSource extends BiomeSource { private final Registry biomeRegistry; private final long seed; private final BiomeProvider grid; - private final ConfigPackImpl pack; + private final ConfigPack pack; - public TerraBiomeSource(Registry biomes, long seed, ConfigPackImpl pack) { + public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { super(biomes.stream() .filter(biome -> Objects.requireNonNull(biomes.getId(biome)).getNamespace().equals("terra")) // Filter out non-Terra biomes. .collect(Collectors.toList())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index 78ec90a94..6d646fbe1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.generation; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; @@ -15,10 +16,10 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @Environment(EnvType.CLIENT) public class TerraGeneratorType extends GeneratorType { - private final ConfigPackImpl pack; + private final ConfigPack pack; - public TerraGeneratorType(ConfigPackImpl pack) { - super("terra." + pack.getTemplate().getID()); + public TerraGeneratorType(ConfigPack pack) { + super("terra." + pack.getID()); this.pack = pack; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index f6c8b7f12..95680239c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.handle; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; @@ -39,7 +40,7 @@ public class FabricWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { try { Class.forName("com.sk89q.worldedit.WorldEdit"); } catch(ClassNotFoundException e) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java index 22d8eb3b3..357edda81 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; @Mixin(Biome.class) -@Implements(@Interface(iface = com.dfsek.terra.api.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = com.dfsek.terra.api.world.biome.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BiomeMixin { @Intrinsic public Object terra$getHandle() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index aa2a4aee1..bfd0852ee 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -23,7 +23,7 @@ public class MinecraftClientMixin { TerraFabricPlugin.getInstance().getConfigRegistry().forEach(pack -> { final GeneratorType generatorType = new TerraGeneratorType(pack); //noinspection ConstantConditions - ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getTemplate().getID())); + ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getID())); GeneratorTypeAccessor.getValues().add(1, generatorType); }); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 6ad5efd51..93e6f706e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; @@ -56,7 +57,7 @@ public abstract class GeneratorOptionsMixin { prop = prop.substring(prop.indexOf(":") + 1); - ConfigPackImpl config = main.getConfigRegistry().get(prop); + ConfigPack config = main.getConfigRegistry().get(prop); if(config == null) throw new IllegalArgumentException("No such pack " + prop); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 1b523b01d..024dd8265 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.util; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.pack.ConfigPackImpl; @@ -29,8 +30,8 @@ import java.util.Map; import java.util.function.Supplier; public final class FabricUtil { - public static String createBiomeID(ConfigPackImpl pack, String biomeID) { - return pack.getTemplate().getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT); + public static String createBiomeID(ConfigPack pack, String biomeID) { + return pack.getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT); } /** @@ -40,7 +41,7 @@ public final class FabricUtil { * @param pack The ConfigPack this biome belongs to. * @return The Minecraft delegate biome. */ - public static Biome createBiome(BiomeBuilder biome, ConfigPackImpl pack, DynamicRegistryManager registryManager) { + public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { BiomeTemplate template = biome.getTemplate(); Map colors = template.getColors(); @@ -55,7 +56,7 @@ public final class FabricUtil { generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, TerraFabricPlugin.POPULATOR_CONFIGURED_FEATURE); - if(pack.getTemplate().vanillaCaves()) { + if(pack.vanillaCaves()) { for(GenerationStep.Carver carver : GenerationStep.Carver.values()) { for(Supplier> configuredCarverSupplier : vanilla.getGenerationSettings().getCarversForStep(carver)) { generationSettings.carver(carver, configuredCarverSupplier.get()); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 3680fa146..373a9ee8d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.util; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -11,7 +12,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.World; public final class WorldEditUtil { - public static Pair getSelection(Player player) { + public static Pair getSelection(Player player) { WorldEdit worldEdit = WorldEdit.getInstance(); try { Region selection = worldEdit.getSessionManager() From 2906a4f89164cc1f78fc1110bd07ae20f4cecc97 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 15:35:52 -0700 Subject: [PATCH 0050/1529] fabric pass 2 --- .../dfsek/terra/api/structures/loot/Pool.java | 3 ++- .../world/palette/holder/PaletteLayerHolder.java | 7 ++++--- .../com/dfsek/terra/carving/CarverPalette.java | 15 ++++++++------- .../com/dfsek/terra/config/GenericLoaders.java | 16 ++++++++-------- .../dfsek/terra/config/builder/BiomeBuilder.java | 3 ++- .../config/builder/UserDefinedBiomeBuilder.java | 3 ++- .../loaders/ProbabilityCollectionLoader.java | 7 ++++--- .../com/dfsek/terra/config/loaders/Types.java | 11 ++++++----- .../config/loaders/config/FloraLayerLoader.java | 6 ++++-- .../config/loaders/config/TreeLayerLoader.java | 6 ++++-- .../mutator/ReplaceListMutatorTemplate.java | 2 +- .../loaders/palette/CarverPaletteLoader.java | 3 ++- .../loaders/palette/PaletteHolderLoader.java | 2 +- .../loaders/palette/PaletteLayerLoader.java | 3 ++- .../dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- .../terra/config/templates/BiomeTemplate.java | 5 +++-- .../config/templates/StructureTemplate.java | 5 +++-- .../terra/config/templates/TreeTemplate.java | 5 +++-- .../world/population/items/PlaceableLayer.java | 12 ++++++------ .../world/population/items/TerraStructure.java | 7 ++++--- .../world/population/items/flora/FloraLayer.java | 4 +++- .../world/population/items/tree/TerraTree.java | 5 +++-- .../world/population/items/tree/TreeLayer.java | 4 +++- .../src/test/java/noise/NoiseTool.java | 3 ++- .../implementations/ConfiguredFeatureMixin.java | 14 ++++++++------ .../implementations/entity/EntityMixin.java | 5 +++-- .../implementations/world/ChunkRegionMixin.java | 3 ++- .../implementations/world/ServerWorldMixin.java | 3 ++- 28 files changed, 96 insertions(+), 68 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java index f4a6c8f7e..309b7d554 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; @@ -17,7 +18,7 @@ import java.util.Random; public class Pool { private final int max; private final int min; - private final ProbabilityCollectionImpl entries; + private final ProbabilityCollection entries; /** * Instantiates a Pool from a JSON representation. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index 38510d148..57946f7c3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -2,22 +2,23 @@ package com.dfsek.terra.api.world.palette.holder; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { - private final ProbabilityCollectionImpl layer; + private final ProbabilityCollection layer; private final NoiseSampler sampler; private final int size; - public PaletteLayerHolder(@NotNull ProbabilityCollectionImpl layer, NoiseSampler sampler, int size) { + public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; } @NotNull - public ProbabilityCollectionImpl getLayer() { + public ProbabilityCollection getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 2ad5fc437..d30e3a35f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -2,6 +2,7 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; @@ -13,8 +14,8 @@ import java.util.TreeMap; public class CarverPalette { private final boolean blacklist; private final MaterialSet replace; - private final TreeMap> map = new TreeMap<>(); - private ProbabilityCollectionImpl[] layers; + private final TreeMap> map = new TreeMap<>(); + private ProbabilityCollection[] layers; private int offset = 0; public CarverPalette(MaterialSet replaceable, boolean blacklist) { @@ -22,12 +23,12 @@ public class CarverPalette { this.replace = replaceable; } - public CarverPalette add(ProbabilityCollectionImpl collection, int y) { + public CarverPalette add(ProbabilityCollection collection, int y) { map.put(y, collection); return this; } - public ProbabilityCollectionImpl get(int y) { + public ProbabilityCollection get(int y) { int index = y + offset; return index >= 0 ? index < layers.length @@ -47,10 +48,10 @@ public class CarverPalette { int min = FastMath.min(map.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(map.keySet().stream().max(Integer::compareTo).orElse(255), 255); - layers = new ProbabilityCollectionImpl[map.lastKey() + 1 - min]; + layers = new ProbabilityCollection[map.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { - ProbabilityCollectionImpl d = null; - for(Map.Entry> e : map.entrySet()) { + ProbabilityCollection d = null; + for(Map.Entry> e : map.entrySet()) { if(e.getKey() >= y) { d = e.getValue(); break; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index b38c72323..914ad8387 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -4,19 +4,17 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.noise.samplers.ImageSampler; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; 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.generation.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; @@ -51,6 +49,8 @@ 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.config.loaders.palette.slant.SlantHolderLoader; +import com.dfsek.terra.noise.samplers.ImageSampler; +import com.dfsek.terra.noise.samplers.noise.CellularSampler; 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; @@ -69,8 +69,8 @@ public class GenericLoaders implements LoaderRegistrar { @Override public void register(TypeRegistry registry) { - registry.registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()) - .registerLoader(ConstantRange.class, new RangeLoader()) + registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) + .registerLoader(Range.class, new RangeLoader()) .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java index 2e8accd13..d57eeb473 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.builder; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SeededBuilder; @@ -7,7 +8,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.templates.BiomeTemplate; public interface BiomeBuilder extends SeededBuilder { - ProbabilityCollectionImpl getVanillaBiomes(); + ProbabilityCollection getVanillaBiomes(); BiomeTemplate getTemplate(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 2f1ebe5f4..d07fb139f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.builder; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.noise.samplers.ExpressionSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.world.biome.Biome; @@ -63,7 +64,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { } @Override - public ProbabilityCollectionImpl getVanillaBiomes() { + public ProbabilityCollection getVanillaBiomes() { return template.getVanilla(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index b5bd6b5d7..8b2de4ee7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.lang.reflect.ParameterizedType; @@ -11,10 +12,10 @@ import java.util.List; import java.util.Map; @SuppressWarnings("unchecked") -public class ProbabilityCollectionLoader implements TypeLoader> { +public class ProbabilityCollectionLoader implements TypeLoader> { @Override - public ProbabilityCollectionImpl load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - ProbabilityCollectionImpl collection = new ProbabilityCollectionImpl<>(); + public ProbabilityCollection load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + ProbabilityCollection collection = new ProbabilityCollectionImpl<>(); if(type instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index d5571376a..eade08c4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -28,11 +29,11 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private ProbabilityCollectionImpl blockDataProbabilityCollection; - private ProbabilityCollectionImpl floraProbabilityCollection; - private ProbabilityCollectionImpl treeProbabilityCollection; - private ProbabilityCollectionImpl terraBiomeProbabilityCollection; - private Map> terraBiomeProbabilityCollectionMap; + private ProbabilityCollection blockDataProbabilityCollection; + private ProbabilityCollection floraProbabilityCollection; + private ProbabilityCollection treeProbabilityCollection; + private ProbabilityCollection terraBiomeProbabilityCollection; + private Map> terraBiomeProbabilityCollectionMap; private static Type getType(String dummyFieldName) { try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 0a8288953..801097e63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -5,6 +5,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @@ -21,9 +23,9 @@ public class FloraLayerLoader implements TypeLoader { public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); + Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Flora range unspecified"); - ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); NoiseSeeded sampler; if(map.containsKey("distribution")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index c00777fc2..203ee6b47 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -4,6 +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.math.range.ConstantRange; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -20,9 +22,9 @@ public class TreeLayerLoader implements TypeLoader { public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); + Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Tree range unspecified"); - ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); if(map.containsKey("distribution")) { NoiseSeeded noise = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index e8123f20a..2a5927c68 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -17,7 +17,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private String defaultFrom; @Value("default-to") - private ProbabilityCollectionImpl defaultTo; + private ProbabilityCollection defaultTo; @Value("to") private Map> replace; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index e2fa6c247..0535300a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.carving.CarverPalette; @@ -24,7 +25,7 @@ public class CarverPaletteLoader implements TypeLoader { CarverPalette palette = new CarverPalette((MaterialSet) configLoader.loadType(MaterialSet.class, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollectionImpl layer = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); palette.add(layer, (Integer) map.get("y")); } palette.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java index b0aaa5a2c..1cbcac1a7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java @@ -20,7 +20,7 @@ public class PaletteHolderLoader implements TypeLoader { PaletteHolderBuilder builder = new PaletteHolderBuilder(); for(Map layer : palette) { for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(PaletteImpl.class, entry.getKey())); + builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); } } return builder.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index 716570673..ab1674c06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; @@ -18,7 +19,7 @@ public class PaletteLayerLoader implements TypeLoader { @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollectionImpl collection = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 2ce3b99a5..26cb41d66 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -231,7 +231,7 @@ public class ConfigPackImpl implements ConfigPack { }).close().open("structures/loot", ".json").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - getOpenRegistry(LootTableImpl.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); + getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); } catch(ParseException | IOException | NullPointerException e) { throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index d6769ce62..9b9b38b86 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -11,6 +11,7 @@ import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; @@ -76,7 +77,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("vanilla") @Abstractable - private ProbabilityCollectionImpl vanilla; + private ProbabilityCollection vanilla; @Value("biome-noise") @Default @@ -303,7 +304,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return trees; } - public ProbabilityCollectionImpl getVanilla() { + public ProbabilityCollection getVanilla() { return vanilla; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 6b7cd6e65..5f99d6679 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -7,6 +7,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -19,7 +20,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollection structure; @Value("spawn.start") @Abstractable @@ -38,7 +39,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem return id; } - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollection getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 5e07626ed..e7af73c3b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -11,7 +12,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public class TreeTemplate extends AbstractableTemplate { @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollection structure; @Value("id") private String id; @@ -25,7 +26,7 @@ public class TreeTemplate extends AbstractableTemplate { @Abstractable private MaterialSet spawnable; - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollection getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index ca3287a57..b859ad1b5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,19 +1,19 @@ package com.dfsek.terra.world.population.items; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public abstract class PlaceableLayer { protected final double density; - protected final ConstantRange level; - protected final ProbabilityCollectionImpl layer; + protected final Range level; + protected final ProbabilityCollection layer; protected final NoiseSampler noise; - public PlaceableLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; @@ -32,7 +32,7 @@ public abstract class PlaceableLayer { return level; } - public ProbabilityCollectionImpl getLayer() { + public ProbabilityCollection getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index 0cd519d8b..e3dace7fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -2,17 +2,18 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure { - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollection structure; private final Range spawnStart; private final GridSpawn spawn; private final StructureTemplate template; - public TerraStructure(ProbabilityCollectionImpl structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollection structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; @@ -23,7 +24,7 @@ public class TerraStructure { return template; } - public ProbabilityCollectionImpl getStructure() { + public ProbabilityCollection getStructure() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index ba4db2cfa..d2e1be079 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -2,6 +2,8 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -10,7 +12,7 @@ import com.dfsek.terra.world.population.items.PlaceableLayer; public class FloraLayer extends PlaceableLayer { - public FloraLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 7c0f6648d..5e0cf1904 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; @@ -13,9 +14,9 @@ import java.util.Random; public class TerraTree implements Tree { private final MaterialSet spawnable; private final int yOffset; - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollection structure; - public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollectionImpl structure) { + public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollection structure) { this.spawnable = spawnable; this.yOffset = yOffset; this.structure = structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index a3409a7be..546a169b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -2,6 +2,8 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockFace; @@ -13,7 +15,7 @@ import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { - public TreeLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/test/java/noise/NoiseTool.java b/common/implementation/src/test/java/noise/NoiseTool.java index 7e4ed53cc..063d044c7 100644 --- a/common/implementation/src/test/java/noise/NoiseTool.java +++ b/common/implementation/src/test/java/noise/NoiseTool.java @@ -3,6 +3,7 @@ package noise; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.GenericLoaders; @@ -99,7 +100,7 @@ public class NoiseTool { ConfigLoader loader = new ConfigLoader(); loader.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(new NoiseRegistry())) .registerLoader(BufferedImage.class, new BufferedImageLoader(folderLoader)) - .registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()); + .registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()); new GenericLoaders(null).register(loader); NoiseConfigTemplate template = new NoiseConfigTemplate(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 7c89391fe..d69cd9c36 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,10 +1,11 @@ package com.dfsek.terra.fabric.mixin.implementations; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.fabric.TerraFabricPlugin; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.world.StructureWorldAccess; @@ -17,6 +18,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Locale; import java.util.Random; +import java.util.Set; @Mixin(ConfiguredFeature.class) @Implements(@Interface(iface = Tree.class, prefix = "terra$", remap = Interface.Remap.NONE)) @@ -25,7 +27,7 @@ public abstract class ConfiguredFeatureMixin { public abstract boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos); @SuppressWarnings({"ConstantConditions", "try"}) - public boolean terra$plant(LocationImpl l, Random r) { + public boolean terra$plant(Location l, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) l.getWorld()); @@ -34,7 +36,7 @@ public abstract class ConfiguredFeatureMixin { } } - public MaterialSet terra$getSpawnable() { + public Set terra$getSpawnable() { return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 34555f4c1..5f60f5d27 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; @@ -35,11 +36,11 @@ public abstract class EntityMixin { return this; } - public LocationImpl terra$getLocation() { + public Location terra$getLocation() { return new LocationImpl((World) world, FabricAdapter.adapt(blockPos)); } - public void terra$setLocation(LocationImpl location) { + public void terra$setLocation(Location location) { teleport(location.getX(), location.getY(), location.getZ()); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 88972927c..e7d8987e7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -51,7 +52,7 @@ public abstract class ChunkRegionMixin { } @SuppressWarnings("deprecation") - public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { + public Entity terra$spawnEntity(Location location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ChunkRegion) (Object) this).toServerWorld()); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ChunkRegion) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 24acd2eec..fd32600ca 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -42,7 +43,7 @@ public abstract class ServerWorldMixin { return new FabricBlock(new BlockPos(x, y, z), ((ServerWorld) (Object) this)); } - public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { + public Entity terra$spawnEntity(Location location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ServerWorld) (Object) this)); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ServerWorld) (Object) this).spawnEntity(entity); From 918ff28ed464a5d16d7cc2f9b7262cd9a3a24b54 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 15:56:41 -0700 Subject: [PATCH 0051/1529] bukkit pass 2 --- .../dfsek/terra/api/config/ConfigPack.java | 2 ++ .../dfsek/terra/api/config/WorldConfig.java | 6 ++++++ .../com/dfsek/terra/api/entity/Entity.java | 9 ++++++--- .../world/generation/EntitySpawnEvent.java | 14 ++----------- .../api/command/TerraCommandManager.java | 2 +- .../buffer/items/BufferedEntity.java | 3 +-- .../dfsek/terra/commands/GetBlockCommand.java | 2 +- .../terra/commands/biome/BiomeCommand.java | 4 ++-- .../commands/biome/BiomeLocateCommand.java | 6 +++--- .../biome/arg/BiomeArgumentParser.java | 2 +- .../commands/biome/tab/BiomeTabCompleter.java | 2 +- .../commands/structure/SpawnCommand.java | 5 +++-- .../structure/StructureLoadCommand.java | 4 ++-- .../structure/StructureLocateCommand.java | 6 +++--- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../completer/StructureCompleter.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 5 +++++ .../terra/config/pack/WorldConfigImpl.java | 10 ++++++++++ .../com/dfsek/terra/bukkit/BukkitEntity.java | 19 +++++++++++++----- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 20 ++++++++++++++----- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 12 ++++++----- .../terra/bukkit/command/FixChunkCommand.java | 2 +- .../BukkitChunkGeneratorWrapper.java | 10 +++++----- .../bukkit/handles/BukkitWorldHandle.java | 3 ++- .../bukkit/listeners/CommonListener.java | 5 +++-- .../terra/bukkit/listeners/PaperListener.java | 2 +- .../bukkit/listeners/SpigotListener.java | 2 +- .../terra/bukkit/world/BukkitAdapter.java | 2 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 3 ++- .../dfsek/terra/bukkit/world/BukkitWorld.java | 3 ++- .../FabricChunkGeneratorWrapper.java | 2 +- .../terra/fabric/util/WorldEditUtil.java | 6 +++--- 34 files changed, 111 insertions(+), 70 deletions(-) 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 08eda2099..c4acb01bd 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 @@ -38,4 +38,6 @@ public interface ConfigPack extends LoaderRegistrar { Map getLocatable(); boolean doBetaCarvers(); + + boolean vanillaFlora(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 9a54bbcd1..46afd9635 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,10 +1,12 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; +import java.util.Map; import java.util.Set; public interface WorldConfig { @@ -34,4 +36,8 @@ public interface WorldConfig { String getAuthor(); String getVersion(); + + Map getLocatable(); + + boolean isDisableSaplings(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java index 152ee3ed7..f2410e8ac 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java @@ -2,12 +2,15 @@ package com.dfsek.terra.api.entity; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; public interface Entity extends Handle, CommandSender { - Location getLocation(); + Vector3 position(); - void setLocation(Location location); + void position(Vector3 position); - World getWorld(); + void world(World world); + + World world(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index 22ac7cd66..c02acaa03 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; /** * Called when an entity is spawned. @@ -11,12 +12,10 @@ import com.dfsek.terra.api.vector.Location; public class EntitySpawnEvent implements PackEvent { private final ConfigPack pack; private final Entity entity; - private final Location location; - public EntitySpawnEvent(ConfigPack pack, Entity entity, Location location) { + public EntitySpawnEvent(ConfigPack pack, Entity entity) { this.pack = pack; this.entity = entity; - this.location = location; } @Override @@ -32,13 +31,4 @@ public class EntitySpawnEvent implements PackEvent { public Entity getEntity() { return entity; } - - /** - * Get the location of the entity. - * - * @return Location of the entity. - */ - public Location getLocation() { - return location; - } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java index 4a75cf9b6..a4c413db3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java @@ -64,7 +64,7 @@ public class TerraCommandManager implements CommandManager { return; } - if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player) || !(((Player) sender).getWorld()).isTerraWorld())) { + if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player) || !(((Player) sender).world()).isTerraWorld())) { sender.sendMessage("Command must be executed in a Terra world."); return; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index f02e90d1f..262fc6718 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -21,6 +20,6 @@ public class BufferedEntity implements BufferedItem { @Override public void paste(Location origin) { Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type); - main.getEventManager().callEvent(new EntitySpawnEvent(entity.getWorld().getTerraGenerator().getConfigPack(), entity, entity.getLocation())); + main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getTerraGenerator().getConfigPack(), entity)); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index ddad92d6a..1ccc23d7b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -23,6 +23,6 @@ public class GetBlockCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - sender.sendMessage("Block: " + main.getWorld(player.getWorld()).getUngeneratedBlock(player.getLocation()).getAsString()); + sender.sendMessage("Block: " + main.getWorld(player.world()).getUngeneratedBlock(player.position()).getAsString()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java index b427e5526..4d7b263f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java @@ -38,8 +38,8 @@ public class BiomeCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - BiomeProvider provider = main.getWorld(player.getWorld()).getBiomeProvider(); - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.getLocation()); + BiomeProvider provider = main.getWorld(player.world()).getBiomeProvider(); + UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position()); LangUtil.send("command.biome.in", sender, biome.getID()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index 20f885fd9..e332c540d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -65,11 +65,11 @@ public class BiomeLocateCommand implements CommandTemplate { Player player = (Player) sender; - new Thread(new AsyncBiomeFinder(main.getWorld(player.getWorld()).getBiomeProvider(), biome, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> { + new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java index b7c93e9e5..95bd9dec6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java @@ -14,6 +14,6 @@ public class BiomeArgumentParser implements ArgumentParser { @Override public TerraBiome parse(CommandSender sender, String arg) { Player player = (Player) sender; - return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).get(arg); + return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).get(arg); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java index 4532063e9..4d805f5d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java @@ -17,6 +17,6 @@ public class BiomeTabCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); + return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index f3dac6ce1..fa7522dac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -34,14 +35,14 @@ public class SpawnCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - Location p = player.getLocation(); + Vector3 p = player.position(); int x = p.getBlockX(); int y = p.getBlockY(); int z = p.getBlockZ(); Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new LocationImpl(player.getWorld(), x, y, z) + new LocationImpl(player.world(), x, y, z) ), Rotation.NONE, new FastRandom(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index ef98977a6..73b084897 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -79,9 +79,9 @@ public class StructureLoadCommand implements CommandTemplate { return; } if(this.chunk) { - script.generate(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r); + script.generate(player.position().toLocation(player.world()), player.world().getChunkAt(player.position().toLocation(player.world())), random, r); } else { - script.generate(player.getLocation(), random, r); + script.generate(player.position().toLocation(player.world()), random, r); } long l = System.nanoTime() - t; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index 97a909a3f..2eb5be047 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -63,11 +63,11 @@ public class StructureLocateCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - new Thread(new AsyncStructureFinder(main.getWorld(player.getWorld()).getBiomeProvider(), structure, player.getLocation().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), 0, radius, location -> { + new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.getLocation().getY(), 0)).distance(player.getLocation().toVector()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.setLocation(new LocationImpl(player.getWorld(), location.getX(), player.getLocation().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index 4f520d5bc..204eb0de1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -14,6 +14,6 @@ public class ScriptArgumentParser implements ArgumentParser { @Override public Structure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).get(arg); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java index 16f31becd..fce6d9327 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java @@ -13,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser { @Override public TerraStructure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(TerraStructure.class).get(arg); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(TerraStructure.class).get(arg); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index 220b4e257..00f77e274 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -17,6 +17,6 @@ public class ScriptCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { - return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java index 31f4e3519..bc9801a4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java @@ -17,6 +17,6 @@ public class StructureCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getRegistry(TerraStructure.class).keys()); + return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(TerraStructure.class).keys()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 26cb41d66..ffe2e561e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -368,4 +368,9 @@ public class ConfigPackImpl implements ConfigPack { public boolean doBetaCarvers() { return template.doBetaCarvers(); } + + @Override + public boolean vanillaFlora() { + return template.vanillaDecorations(); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index b74d89e2b..8512efb2e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -109,6 +109,16 @@ public class WorldConfigImpl implements WorldConfig { return pack.getVersion(); } + @Override + public Map getLocatable() { + return pack.getLocatable(); + } + + @Override + public boolean isDisableSaplings() { + return getTemplate().isDisableSaplings(); + } + public Set getStructures() { return new HashSet<>(getRegistry(TerraStructure.class).entries()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index ea783ca11..b7794d762 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -1,9 +1,11 @@ package com.dfsek.terra.bukkit; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; +import org.bukkit.Location; public class BukkitEntity implements Entity { private final org.bukkit.entity.Entity entity; @@ -18,17 +20,24 @@ public class BukkitEntity implements Entity { } @Override - public LocationImpl getLocation() { - return BukkitAdapter.adapt(entity.getLocation()); + public Vector3 position() { + return BukkitAdapter.adapt(entity.getLocation().toVector()); } @Override - public void setLocation(LocationImpl location) { - entity.teleport(BukkitAdapter.adapt(location)); + public void position(Vector3 location) { + entity.teleport(BukkitAdapter.adapt(location).toLocation(entity.getWorld())); } @Override - public World getWorld() { + public void world(World world) { + Location newLoc = entity.getLocation().clone(); + newLoc.setWorld(BukkitAdapter.adapt(world)); + entity.teleport(newLoc); + } + + @Override + public World world() { return BukkitAdapter.adapt(entity.getWorld()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index a207af7b3..b3de143e3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -1,9 +1,12 @@ package com.dfsek.terra.bukkit; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; +import com.dfsek.terra.vector.Vector3Impl; +import org.bukkit.Location; public class BukkitPlayer implements Player { private final org.bukkit.entity.Player delegate; @@ -18,18 +21,25 @@ public class BukkitPlayer implements Player { } @Override - public LocationImpl getLocation() { + public Vector3 position() { org.bukkit.Location bukkit = delegate.getLocation(); - return new LocationImpl(BukkitAdapter.adapt(bukkit.getWorld()), bukkit.getX(), bukkit.getY(), bukkit.getZ()); + return new Vector3Impl(bukkit.getX(), bukkit.getY(), bukkit.getZ()); } @Override - public void setLocation(LocationImpl location) { - delegate.teleport(BukkitAdapter.adapt(location)); + public void position(Vector3 location) { + delegate.teleport(BukkitAdapter.adapt(location).toLocation(delegate.getWorld())); } @Override - public World getWorld() { + public void world(World world) { + Location newLoc = delegate.getLocation().clone(); + newLoc.setWorld(BukkitAdapter.adapt(world)); + delegate.teleport(newLoc); + } + + @Override + public World world() { return BukkitAdapter.adapt(delegate.getWorld()); } 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 cdcd8dc78..249855287 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 @@ -17,11 +17,11 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; import com.dfsek.terra.api.Logger; @@ -45,6 +45,8 @@ import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; +import com.dfsek.terra.registry.CheckedRegistryImpl; +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; @@ -72,7 +74,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private final Profiler profiler = new ProfilerImpl(); private final ConfigRegistry registry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistry<>(registry); + private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(registry); private final PluginConfig config = new PluginConfigImpl(); private final ItemHandle itemHandle = new BukkitItemHandle(); @@ -95,7 +97,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { } private final AddonRegistry addonRegistry = new AddonRegistry(new BukkitAddon(this), this); - private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); + private final LockedRegistryImpl addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); @@ -106,7 +108,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { Map newMap = new HashMap<>(); worldMap.forEach((world, tw) -> { tw.getConfig().getSamplerCache().clear(); - String packID = tw.getConfig().getTemplate().getID(); + String packID = tw.getConfig().getID(); newMap.put(world, new TerraWorldImpl(world, registry.get(packID), this)); }); worldMap.clear(); @@ -306,7 +308,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { } @Override - public LockedRegistry getAddons() { + public Registry getAddons() { return addonLockedRegistry; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java index 31ba05123..fe65f5933 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java @@ -15,6 +15,6 @@ public class FixChunkCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - BukkitChunkGeneratorWrapper.fixChunk(player.getWorld().getChunkAt(player.getLocation())); + BukkitChunkGeneratorWrapper.fixChunk(player.world().getChunkAt(player.position().toLocation(player.world()))); } } 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 54b2d6267..5276a47a9 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 @@ -82,27 +82,27 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public boolean isParallelCapable() { - return delegate.isParallelCapable(); + return true; } @Override public boolean shouldGenerateCaves() { - return delegate.shouldGenerateCaves(); + return delegate.getConfigPack().vanillaCaves(); } @Override public boolean shouldGenerateDecorations() { - return delegate.shouldGenerateDecorations(); + return delegate.getConfigPack().vanillaFlora(); } @Override public boolean shouldGenerateMobs() { - return delegate.shouldGenerateMobs(); + return delegate.getConfigPack().vanillaMobs(); } @Override public boolean shouldGenerateStructures() { - return delegate.shouldGenerateStructures(); + return delegate.getConfigPack().vanillaStructures(); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index db8130caf..5407f5773 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit.handles; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.EntityType; @@ -26,7 +27,7 @@ public class BukkitWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); return Pair.of(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 7ad0252fa..b4af701da 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; @@ -46,8 +47,8 @@ public class CommonListener implements Listener { World bukkit = BukkitAdapter.adapt(e.getWorld()); if(!bukkit.isTerraWorld()) return; TerraWorld tw = main.getWorld(bukkit); - WorldConfigImpl c = tw.getConfig(); - if(c.getTemplate().isDisableSaplings()) return; + WorldConfig c = tw.getConfig(); + if(c.isDisableSaplings()) return; e.setCancelled(true); Block block = e.getLocation().getBlock(); BlockData data = block.getBlockData(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 3d7a2c387..ba3103645 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -22,7 +22,7 @@ public class PaperListener implements Listener { String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld())); - TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get(name)); + TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); if(config != null) { AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin()), 0, 500, location -> { if(location != null) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index d752cc81a..04b43a07d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -37,7 +37,7 @@ public class SpigotListener implements Listener { if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); EnderSignal signal = (EnderSignal) entity; - TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD")); + TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get("STRONGHOLD")); if(config != null) { main.getDebugLogger().info("Overriding Ender Signal..."); AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 41d27739b..4fd76683e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -338,7 +338,7 @@ public final class BukkitAdapter { } } - public static Location adapt(LocationImpl location) { + public static Location adapt(com.dfsek.terra.api.vector.Location location) { return new Location(((BukkitWorld) location.getWorld()).getHandle(), location.getX(), location.getY(), location.getZ()); } 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 592d267d1..c1653633b 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 @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.Tree; @@ -43,7 +44,7 @@ public class BukkitTree implements Tree { @Override @SuppressWarnings("try") - public boolean plant(LocationImpl l, Random r) { + public boolean plant(Location l, Random r) { try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 39034b58d..2b4bbaad7 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -64,7 +65,7 @@ public class BukkitWorld implements World { } @Override - public Entity spawnEntity(LocationImpl location, EntityType entityType) { + public Entity spawnEntity(Location location, EntityType entityType) { return new BukkitEntity(delegate.spawnEntity(BukkitAdapter.adapt(location), ((BukkitEntityType) entityType).getHandle())); } 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 47f3f2313..b59c3b5e8 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 @@ -54,7 +54,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener public static final Codec PACK_CODEC = RecordCodecBuilder.create( config -> config.group( Codec.STRING.fieldOf("pack") - .forGetter(pack -> pack.getID()) + .forGetter(ConfigPack::getID) ).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get))); public static final Codec CODEC = RecordCodecBuilder.create( diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 373a9ee8d..679316313 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -17,11 +17,11 @@ public final class WorldEditUtil { try { Region selection = worldEdit.getSessionManager() .get(com.sk89q.worldedit.fabric.FabricAdapter.adaptPlayer((ServerPlayerEntity) player)) - .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.getWorld())); + .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world())); BlockVector3 min = selection.getMinimumPoint(); BlockVector3 max = selection.getMaximumPoint(); - LocationImpl l1 = new LocationImpl(player.getWorld(), min.getBlockX(), min.getBlockY(), min.getBlockZ()); - LocationImpl l2 = new LocationImpl(player.getWorld(), max.getBlockX(), max.getBlockY(), max.getBlockZ()); + LocationImpl l1 = new LocationImpl(player.world(), min.getBlockX(), min.getBlockY(), min.getBlockZ()); + LocationImpl l2 = new LocationImpl(player.world(), max.getBlockX(), max.getBlockY(), max.getBlockZ()); return Pair.of(l1, l2); } catch(IncompleteRegionException e) { throw new IllegalStateException("No selection has been made", e); From f69fdbe37e0f2d77063338b94e815f60655b56dc Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 23:59:38 -0700 Subject: [PATCH 0052/1529] fix EntityMixin --- .../mixin/implementations/entity/EntityMixin.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 5f60f5d27..dd652a0ef 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,9 +1,11 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; +import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.entity.Entity; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; @@ -36,15 +38,15 @@ public abstract class EntityMixin { return this; } - public Location terra$getLocation() { - return new LocationImpl((World) world, FabricAdapter.adapt(blockPos)); + public Vector3 terra$position() { + return FabricAdapter.adapt(blockPos); } - public void terra$setLocation(Location location) { + public void terra$position(Vector3 location) { teleport(location.getX(), location.getY(), location.getZ()); } - public World terra$getWorld() { + public World terra$world() { return (World) world; } From c0b55c3e4eafada748b5ff8fb8625b4bc77bfd3f Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 00:05:06 -0700 Subject: [PATCH 0053/1529] undeprecate Location and Block, will deal with them in separate PRs --- common/api/src/main/java/com/dfsek/terra/api/block/Block.java | 1 - .../api/src/main/java/com/dfsek/terra/api/vector/Location.java | 1 - .../src/main/java/com/dfsek/terra/vector/LocationImpl.java | 1 - 3 files changed, 3 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java index ca9c80a65..4827a7845 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; -@Deprecated public interface Block extends Handle { void setBlockData(BlockData data, boolean physics); diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java index 1d3006dec..fa43def02 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java @@ -3,7 +3,6 @@ package com.dfsek.terra.api.vector; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.world.World; -@Deprecated public interface Location extends Cloneable { void setWorld(World world); diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java index a14581f8c..2251e8347 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.world.World; import java.util.Objects; -@Deprecated public class LocationImpl implements Location { private World world; private Vector3 vector; From 4bac67b8d7303c04c9509e4444c998a0e540f8f7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 00:19:18 -0700 Subject: [PATCH 0054/1529] fix imports --- .editorconfig | 10 +- .github/ISSUE_TEMPLATE/OTHER_ISSUES.md | 1 + .github/ISSUE_TEMPLATE/config.yml | 12 +- .github/workflows/build.yml | 8 +- README.md | 33 +++-- .../kotlin/com/dfsek/terra/CommonConfig.kt | 3 - .../com/dfsek/terra/DistributionConfig.kt | 7 +- .../java/com/dfsek/terra/api/block/Block.java | 2 +- .../com/dfsek/terra/api/block/BlockFace.java | 1 - .../api/block/data/AnaloguePowerable.java | 2 + .../terra/api/block/data/RedstoneWire.java | 3 + .../com/dfsek/terra/api/block/data/Wall.java | 3 + .../dfsek/terra/api/config/WorldConfig.java | 2 - .../com/dfsek/terra/api/entity/Entity.java | 1 - .../terra/api/event/annotations/Priority.java | 1 + .../world/generation/EntitySpawnEvent.java | 4 +- .../world/generation/LootPopulateEvent.java | 5 +- .../com/dfsek/terra/api/lang/Message.java | 2 + .../com/dfsek/terra/api/util/JarUtil.java | 2 +- .../com/dfsek/terra/api/util/MathUtil.java | 1 - .../api/util/mutable/MutablePrimitive.java | 2 +- .../java/com/dfsek/terra/api/world/Flora.java | 2 +- .../java/com/dfsek/terra/api/world/World.java | 2 +- .../generation/pipeline/BiomeMutator.java | 1 - .../biome/generation/pipeline/Stage.java | 2 - .../api/command/TerraCommandManager.java | 4 +- .../com/dfsek/terra/api/math/GridSpawn.java | 4 +- .../math/paralithic/noise/NoiseFunction2.java | 1 - .../terra/api/structures/parser/Parser.java | 4 +- .../structures/script/StructureScript.java | 13 +- .../script/TerraImplementationArguments.java | 4 +- .../functions/AbstractBlockFunction.java | 8 +- .../script/functions/BiomeFunction.java | 8 +- .../script/functions/CheckBlockFunction.java | 8 +- .../script/functions/CheckFunction.java | 17 ++- .../script/functions/EntityFunction.java | 8 +- .../script/functions/GetMarkFunction.java | 8 +- .../script/functions/LootFunction.java | 11 +- .../script/functions/PullFunction.java | 8 +- .../script/functions/SetMarkFunction.java | 8 +- .../script/functions/StateFunction.java | 8 +- .../script/functions/StructureFunction.java | 14 +- .../api/structures/structure/buffer/Cell.java | 3 +- .../structure/buffer/DirectBuffer.java | 3 +- .../structure/buffer/IntermediateBuffer.java | 5 +- .../structure/buffer/StructureBuffer.java | 5 +- .../structure/buffer/items/BufferedBlock.java | 5 +- .../buffer/items/BufferedEntity.java | 4 +- .../buffer/items/BufferedLootApplication.java | 10 +- .../buffer/items/BufferedPulledBlock.java | 5 +- .../items/BufferedStateManipulator.java | 3 +- .../com/dfsek/terra/api/util/FastRandom.java | 2 +- .../com/dfsek/terra/api/util/GlueList.java | 131 +++++++++--------- .../com/dfsek/terra/api/util/PaletteUtil.java | 7 +- .../dfsek/terra/api/util/RotationUtil.java | 4 +- .../ProbabilityCollectionImpl.java | 2 +- .../api/world/biome/UserDefinedBiome.java | 1 - .../world/biome/pipeline/BiomeHolderImpl.java | 2 +- .../biome/pipeline/BiomePipelineImpl.java | 4 +- .../pipeline/expand/FractalExpander.java | 2 +- .../pipeline/mutator/BorderListMutator.java | 1 - .../biome/pipeline/mutator/BorderMutator.java | 1 - .../pipeline/mutator/ReplaceListMutator.java | 1 - .../pipeline/mutator/ReplaceMutator.java | 1 - .../biome/pipeline/mutator/SmoothMutator.java | 2 +- .../biome/pipeline/source/RandomSource.java | 1 - .../biome/pipeline/stages/ExpanderStage.java | 2 +- .../biome/pipeline/stages/MutatorStage.java | 2 +- .../biome/provider/StandardBiomeProvider.java | 4 +- .../dfsek/terra/api/world/carving/Worm.java | 2 +- .../api/world/locate/AsyncBiomeFinder.java | 1 - .../api/world/locate/AsyncFeatureFinder.java | 3 +- .../world/locate/AsyncStructureFinder.java | 7 +- .../terra/api/world/palette/NoisePalette.java | 2 +- .../terra/api/world/palette/PaletteImpl.java | 3 +- .../palette/holder/PaletteLayerHolder.java | 3 +- .../com/dfsek/terra/carving/CarverCache.java | 8 +- .../dfsek/terra/carving/CarverPalette.java | 1 - .../terra/carving/UserDefinedCarver.java | 10 +- .../dfsek/terra/commands/AddonsCommand.java | 2 +- .../dfsek/terra/commands/GetBlockCommand.java | 2 +- .../dfsek/terra/commands/PacksCommand.java | 3 +- .../dfsek/terra/commands/ReloadCommand.java | 2 +- .../dfsek/terra/commands/VersionCommand.java | 2 +- .../terra/commands/biome/BiomeCommand.java | 2 +- .../commands/biome/BiomeLocateCommand.java | 5 +- .../biome/arg/BiomeArgumentParser.java | 2 +- .../commands/biome/tab/BiomeTabCompleter.java | 2 +- .../profiler/ProfileQueryCommand.java | 2 +- .../profiler/ProfileResetCommand.java | 2 +- .../profiler/ProfileStartCommand.java | 2 +- .../commands/profiler/ProfileStopCommand.java | 2 +- .../commands/structure/SpawnCommand.java | 9 +- .../structure/StructureExportCommand.java | 14 +- .../structure/StructureLoadCommand.java | 2 +- .../structure/StructureLocateCommand.java | 5 +- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../completer/StructureCompleter.java | 2 +- .../dfsek/terra/config/PluginConfigImpl.java | 2 +- .../terra/config/builder/BiomeBuilder.java | 3 +- .../builder/UserDefinedBiomeBuilder.java | 7 +- .../dfsek/terra/config/dummy/DummyWorld.java | 3 +- .../terra/config/factories/FloraFactory.java | 2 +- .../terra/config/fileloaders/Loader.java | 2 +- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../dfsek/terra/config/lang/LanguageImpl.java | 4 + .../terra/config/lang/MultiLineMessage.java | 6 +- .../terra/config/lang/SingleLineMessage.java | 2 + .../com/dfsek/terra/config/loaders/Types.java | 5 +- .../loaders/config/FloraLayerLoader.java | 4 +- .../loaders/config/TreeLayerLoader.java | 6 +- .../provider/BiomePipelineTemplate.java | 2 +- .../provider/BiomeProviderTemplate.java | 2 +- .../templates/source/NoiseSourceTemplate.java | 1 - .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListMutatorTemplate.java | 1 - .../stage/mutator/BorderMutatorTemplate.java | 1 - .../stage/mutator/MutatorStageTemplate.java | 2 +- .../mutator/ReplaceListMutatorTemplate.java | 1 - .../stage/mutator/ReplaceMutatorTemplate.java | 1 - .../sampler/templates/DomainWarpTemplate.java | 2 +- .../sampler/templates/KernelTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 2 +- .../noise/ConstantNoiseTemplate.java | 2 +- .../noise/ExpressionFunctionTemplate.java | 4 +- .../templates/noise/NoiseTemplate.java | 2 +- .../noise/fractal/FractalTemplate.java | 2 +- .../noise/fractal/PingPongTemplate.java | 1 + .../normalizer/NormalizerTemplate.java | 2 +- .../loaders/palette/CarverPaletteLoader.java | 1 - .../loaders/palette/PaletteHolderLoader.java | 1 - .../loaders/palette/PaletteLayerLoader.java | 3 +- .../palette/slant/SlantHolderLoader.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 2 +- .../terra/config/templates/BiomeTemplate.java | 11 +- .../config/templates/CarverTemplate.java | 2 +- .../config/templates/PaletteTemplate.java | 2 +- .../config/templates/StructureTemplate.java | 1 - .../terra/config/templates/TreeTemplate.java | 1 - .../noise/samplers/noise/CellularSampler.java | 2 +- .../terra/registry/CheckedRegistryImpl.java | 2 +- .../terra/registry/OpenRegistryImpl.java | 3 +- .../registry/config/ConfigTypeRegistry.java | 5 +- .../terra/registry/config/NoiseRegistry.java | 16 +-- .../com/dfsek/terra/vector/Vector3Impl.java | 2 +- .../com/dfsek/terra/world/TerraWorldImpl.java | 8 +- .../generators/DefaultChunkGenerator2D.java | 10 +- .../generators/DefaultChunkGenerator3D.java | 23 ++- .../interpolation/ChunkInterpolator2D.java | 6 +- .../interpolation/ChunkInterpolator3D.java | 6 +- .../terra/world/population/CavePopulator.java | 10 +- .../world/population/FloraPopulator.java | 12 +- .../terra/world/population/OrePopulator.java | 12 +- .../world/population/StructurePopulator.java | 9 +- .../terra/world/population/TreePopulator.java | 10 +- .../population/items/PlaceableLayer.java | 1 - .../population/items/TerraStructure.java | 1 - .../population/items/flora/BlockFlora.java | 7 +- .../population/items/flora/ConstantFlora.java | 7 +- .../population/items/flora/FloraLayer.java | 2 - .../population/items/flora/TerraFlora.java | 7 +- .../items/ores/DeformedSphereOre.java | 10 +- .../world/population/items/ores/Ore.java | 4 +- .../population/items/ores/VanillaOre.java | 6 +- .../population/items/tree/TerraTree.java | 8 +- .../population/items/tree/TreeLayer.java | 8 +- .../src/main/resources/lang/cs_cz.yml | 2 +- .../src/main/resources/lang/en_us.yml | 2 +- .../src/test/java/profiler/ProfilerTest.java | 1 + platforms/bukkit/build.gradle.kts | 7 +- .../com/dfsek/terra/bukkit/BukkitEntity.java | 3 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 3 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 15 +- .../bukkit/handles/BukkitWorldHandle.java | 3 +- .../bukkit/listeners/CommonListener.java | 12 +- .../terra/bukkit/listeners/TerraListener.java | 2 +- .../bukkit/population/PopulationManager.java | 4 +- .../terra/bukkit/world/BukkitAdapter.java | 12 +- .../terra/bukkit/world/BukkitBiomeGrid.java | 2 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 7 +- .../dfsek/terra/bukkit/world/BukkitWorld.java | 3 +- .../terra/bukkit/world/block/BukkitBlock.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 20 +-- .../dfsek/terra/fabric/block/FabricBlock.java | 3 +- .../FabricChunkGeneratorWrapper.java | 5 +- .../fabric/generation/TerraBiomeSource.java | 1 - .../fabric/generation/TerraGeneratorType.java | 1 - .../fabric/handle/FabricWorldHandle.java | 3 +- .../implementations/entity/EntityMixin.java | 3 - .../world/ChunkRegionMixin.java | 3 +- .../world/ServerWorldMixin.java | 3 +- .../server/GeneratorOptionsMixin.java | 3 +- .../terra/fabric/util/FabricAdapter.java | 4 +- .../dfsek/terra/fabric/util/FabricUtil.java | 5 +- .../terra/fabric/util/WorldEditUtil.java | 4 +- .../src/main/resources/terra.mixins.json | 2 +- .../terra/forge/block/ForgeBlockData.java | 4 +- .../ForgeChunkGeneratorWrapper.java | 9 +- .../forge/generation/TerraBiomeSource.java | 6 +- .../forge/generation/TerraGeneratorType.java | 3 +- .../block/state/SignTileEntityMixin.java | 6 +- .../implementations/chunk/ChunkMixin.java | 3 +- .../chunk/WorldGenRegionMixin.java | 3 +- .../chunk/data/ChunkPrimerMixin.java | 3 +- .../com/dfsek/terra/StandalonePlugin.java | 10 +- .../com/dfsek/terra/platform/DirectBlock.java | 4 +- .../dfsek/terra/platform/DirectChunkData.java | 2 +- .../com/dfsek/terra/platform/DirectWorld.java | 4 +- .../com/dfsek/terra/platform/RawTree.java | 4 +- .../com/dfsek/terra/region/Generator.java | 2 - .../dfsek/terra/sponge/TerraSpongePlugin.java | 6 +- 213 files changed, 510 insertions(+), 571 deletions(-) diff --git a/.editorconfig b/.editorconfig index 1c53c29c2..fcb82af5d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -105,7 +105,7 @@ ij_java_for_statement_wrap = off ij_java_generate_final_locals = false ij_java_generate_final_parameters = false ij_java_if_brace_force = never -ij_java_imports_layout = *,|,javax.**,java.**,|,$* +ij_java_imports_layout = *, |, javax.**, java.**, |, $* ij_java_indent_case_from_switch = true ij_java_insert_inner_class_imports = false ij_java_insert_override_annotation = true @@ -137,7 +137,7 @@ ij_java_method_parameters_wrap = off ij_java_modifier_list_wrap = false ij_java_names_count_to_use_import_on_demand = 3 ij_java_new_line_after_lparen_in_record_header = false -ij_java_packages_to_use_import_on_demand = java.awt.*,javax.swing.* +ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.* ij_java_parameter_annotation_wrap = off ij_java_parentheses_expression_new_line_after_left_paren = false ij_java_parentheses_expression_right_paren_on_new_line = false @@ -246,7 +246,7 @@ ij_java_wrap_comments = false ij_java_wrap_first_method_in_call_chain = false ij_java_wrap_long_lines = false -[{*.gradle.kts,*.kt,*.kts,*.main.kts}] +[{*.gradle.kts, *.kt, *.kts, *.main.kts}] ij_kotlin_align_in_columns_case_branch = false ij_kotlin_align_multiline_binary_operation = false ij_kotlin_align_multiline_extends_list = false @@ -325,7 +325,7 @@ ij_kotlin_wrap_elvis_expressions = 1 ij_kotlin_wrap_expression_body_functions = 0 ij_kotlin_wrap_first_method_in_call_chain = false -[{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,jest.config}] +[{*.har, *.jsb2, *.jsb3, *.json, .babelrc, .eslintrc, .stylelintrc, bowerrc, jest.config}] indent_size = 2 ij_json_keep_blank_lines_in_code = 0 ij_json_keep_indents_on_empty_lines = false @@ -338,7 +338,7 @@ ij_json_spaces_within_braces = false ij_json_spaces_within_brackets = false ij_json_wrap_long_lines = false -[{*.yaml,*.yml}] +[{*.yaml, *.yml}] indent_size = 2 ij_yaml_keep_indents_on_empty_lines = true ij_yaml_keep_line_breaks = true diff --git a/.github/ISSUE_TEMPLATE/OTHER_ISSUES.md b/.github/ISSUE_TEMPLATE/OTHER_ISSUES.md index 1677fab03..75a5c71fa 100644 --- a/.github/ISSUE_TEMPLATE/OTHER_ISSUES.md +++ b/.github/ISSUE_TEMPLATE/OTHER_ISSUES.md @@ -8,4 +8,5 @@ assignees: "" --- ## Describe the issue + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9c7f2e470..4611034c8 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,11 +1,11 @@ blank_issues_enabled: false contact_links: - - name: Which Issue Template do I Choose? - url: https://github.com/PolyhedralDev/Terra/wiki/How-To-Choose-An-Issue-Template + - name: Which Issue Template do I Choose? + url: https://github.com/PolyhedralDev/Terra/wiki/How-To-Choose-An-Issue-Template about: Click this if you don't know which issue template to select. This will help you make sure you choose the right one and provide enough information for us to help you. - - name: Terra Wiki - url: https://github.com/PolyhedralDev/Terra/wiki + - name: Terra Wiki + url: https://github.com/PolyhedralDev/Terra/wiki about: Documentation for all things Terra. - - name: Join the Support Discord - url: https://discord.dfsek.com + - name: Join the Support Discord + url: https://discord.dfsek.com about: If you have a basic support question, join the Discord instead. \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af9b7a546..a07456fd9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: java-version: 1.8 - name: Build Terra - run: gradle shadowJar + run: gradle shadowJar - name: Upload artifacts uses: actions/upload-artifact@v2 @@ -34,7 +34,7 @@ jobs: with: repo_token: ${{ secrets.GITHUB_TOKEN }} prerelease: false - files: | - build/libs/Terra-*.jar - LICENSE + files: | + build/libs/Terra-*.jar + LICENSE \ No newline at end of file diff --git a/README.md b/README.md index 0b0eb8b93..a33baa859 100644 --- a/README.md +++ b/README.md @@ -7,40 +7,47 @@ to your specifications, with no knowledge of Java required. * Paper+ servers (Paper, Tuinity, Purpur, etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) * Fabric: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) -* Forge **(ALPHA - NOT PRODUCTION-READY)**: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) +* Forge **(ALPHA - NOT PRODUCTION-READY)**: [Modrinth](https://modrinth.com/mod/terra) + / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) ## Building and Running Terra -To build, simply run `./gradlew build` (`gradlew.bat build` on Windows). This will build all platforms, and -produce JARs in `platforms//build/libs` +To build, simply run `./gradlew build` (`gradlew.bat build` on Windows). This will build all platforms, and produce JARs +in `platforms//build/libs` ### Production JARs: + * Bukkit: `Terra--shaded.jar` * Fabric: `Terra--shaded-mapped.jar` * Forge: `Terra--shaded.jar` ### Building a Specific Platform + To build a specific platform, run `gradlew :platforms::build`. JARs are produced in `platforms//build/libs`. ### Running Minecraft in the IDE + To run Minecraft with Terra in the IDE (for testing) use the following tasks: + * Bukkit - * `installPaper` - Install a [Paper](https://github.com/PaperMC/Paper) test server. (Only needs to be run once). - * `installPurpur` - Install a [Purpur](https://github.com/pl3xgaming/Purpur) test server. (Only needs to be run once). - * `runPaper` - Run the Paper test server with Terra (`installPaper` must have been run previously). - * `runPurpur` - Run the Purpur test server with Terra (`installPurpur` must have been run previously). + * `installPaper` - Install a [Paper](https://github.com/PaperMC/Paper) test server. (Only needs to be run once). + * `installPurpur` - Install a [Purpur](https://github.com/pl3xgaming/Purpur) test server. (Only needs to be run once). + * `runPaper` - Run the Paper test server with Terra (`installPaper` must have been run previously). + * `runPurpur` - Run the Purpur test server with Terra (`installPurpur` must have been run previously). * Fabric - * `runClient` - Run a Minecraft Fabric client with Terra installed. - * `runServer` - Run a Minecraft Fabric server with Terra installed. + * `runClient` - Run a Minecraft Fabric client with Terra installed. + * `runServer` - Run a Minecraft Fabric server with Terra installed. * Forge - * `runClient` - Run a Minecraft Forge client with Terra installed. - * `runServer` - Run a Minecraft Forge server with Terra installed. + * `runClient` - Run a Minecraft Forge client with Terra installed. + * `runServer` - Run a Minecraft Forge server with Terra installed. + ## Contributing -Contributions are welcome! If you want to see a feature in Terra, please, open an issue, or implement it yourself and -submit a PR! + +Contributions are welcome! If you want to see a feature in Terra, please, open an issue, or implement it yourself and submit a PR! Join the discord [here](https://discord.gg/PXUEbbF) if you would like to talk more about the project! ## Beta + Terra is still in beta! While it is stable, it is not feature-complete. There is a lot to be added! diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index 3f10dc573..fa6952a8d 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -1,9 +1,6 @@ package com.dfsek.terra import org.gradle.api.Project -import org.gradle.api.tasks.testing.Test -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.withType import java.io.ByteArrayOutputStream fun Project.configureCommon() { diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index ee81dc9b8..179feee76 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -4,9 +4,10 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.plugins.BasePluginConvention -import org.gradle.api.tasks.bundling.Jar -import org.gradle.api.tasks.javadoc.Javadoc -import org.gradle.kotlin.dsl.* +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.getPlugin +import org.gradle.kotlin.dsl.named import java.io.File import java.net.URL diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java index 4827a7845..97cd4af8b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.block; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; public interface Block extends Handle { void setBlockData(BlockData data, boolean physics); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java index d367839e7..14a2f5efd 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.block; -import com.dfsek.terra.api.vector.Vector3; import org.jetbrains.annotations.NotNull; public enum BlockFace { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java index c0df25e37..cfa57bb7a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java @@ -4,6 +4,8 @@ import com.dfsek.terra.api.block.BlockData; public interface AnaloguePowerable extends BlockData { int getMaximumPower(); + int getPower(); + void setPower(int power); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java index 0f34dcb52..06a406d49 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java @@ -7,8 +7,11 @@ import java.util.Set; public interface RedstoneWire extends BlockData, AnaloguePowerable { Set getAllowedFaces(); + Connection getFace(BlockFace face); + void setFace(BlockFace face, Connection connection); + enum Connection { NONE, SIDE, UP } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java index 440daccbb..33d8ed086 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java @@ -5,8 +5,11 @@ import com.dfsek.terra.api.block.BlockFace; public interface Wall extends BlockData, Waterlogged { boolean isUp(); + void setHeight(BlockFace face, Height height); + Height getHeight(BlockFace face); + void setUp(boolean up); enum Height { diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 46afd9635..8b8f0144d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,13 +1,11 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import java.util.Map; -import java.util.Set; public interface WorldConfig { @SuppressWarnings("unchecked") diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java index f2410e8ac..96811a9a6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.entity; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java index 2d5b7c11f..08c0d86c9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java @@ -31,6 +31,7 @@ public @interface Priority { * Low Priority. */ int LOW = -1; + /** * @return Priority of this event. Events are executed from lowest to highest priorities. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index c02acaa03..ecd4a842d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -1,10 +1,8 @@ package com.dfsek.terra.api.event.events.world.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.event.events.PackEvent; /** * Called when an entity is spawned. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 7e22770f0..28af48a39 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.event.events.world.generation; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.AbstractCancellable; import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import org.jetbrains.annotations.NotNull; @@ -53,6 +53,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, /** * Get the loot table to be populated. + * * @return Loot table. */ public LootTable getTable() { diff --git a/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java b/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java index 9fedd163d..866f753f8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java +++ b/common/api/src/main/java/com/dfsek/terra/api/lang/Message.java @@ -8,6 +8,8 @@ import java.util.logging.Logger; public interface Message { void log(Logger logger, Level level, String... args); + void send(CommandSender sender, String... args); + boolean isEmpty(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java index 981dfdb7f..569c46cd6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java @@ -16,7 +16,7 @@ public class JarUtil { public static void copyResourcesToDirectory(JarFile fromJar, String sourceDir, String destDir) throws IOException { for(Enumeration entries = fromJar.entries(); entries.hasMoreElements(); ) { JarEntry entry = entries.nextElement(); - if(entry.getName().startsWith(sourceDir + "/") && ! entry.isDirectory()) { + if(entry.getName().startsWith(sourceDir + "/") && !entry.isDirectory()) { File dest = new File(destDir + File.separator + entry.getName().substring(sourceDir.length() + 1)); if(dest.exists()) continue; File parent = dest.getParentFile(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java index 2109e3088..54289a105 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.world.generator.Sampler; import net.jafama.FastMath; import java.util.List; -import java.util.Random; /** * Utility class for mathematical functions. diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java index ab3e17f70..3c714f44c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.mutable; -public interface MutablePrimitive extends Comparable{ +public interface MutablePrimitive extends Comparable { T get(); void set(T value); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java index 536018fac..38481728f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.world; +import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.block.Block; import java.util.List; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 1a4a96d1e..956f95d93 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java index 3240297c0..d474ddb08 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.biome.generation.pipeline; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; public interface BiomeMutator { TerraBiome mutate(ViewPoint viewPoint, double x, double z); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java index 3ed4417f6..5d5c44aa4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java @@ -1,7 +1,5 @@ package com.dfsek.terra.api.world.biome.generation.pipeline; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; - public interface Stage { boolean isExpansion(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java index a4c413db3..76370a7c3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java @@ -17,10 +17,10 @@ import com.dfsek.terra.api.command.exception.InvalidArgumentsException; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.command.exception.SwitchFormatException; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.inject.InjectorImpl; -import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.inject.InjectorImpl; +import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.util.ReflectionUtil; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index 00cd32036..f50ac27f5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.math; +import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.util.GlueList; import java.util.List; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java index 113a9cd5d..2a1fa0f94 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.hash.HashMapDoubleDouble; - public class NoiseFunction2 implements NoiseFunction { private final NoiseSampler gen; private final Cache cache = new Cache(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java index c6434fbad..14d88016c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java @@ -346,7 +346,7 @@ public class Parser { Token token = tokens.get(); if(token.getType().equals(Token.Type.BLOCK_END)) break; // Stop parsing at block end. Item parsedItem = parseItem(tokens, parsedVariables, loop); - if (parsedItem != Function.NULL) { + if(parsedItem != Function.NULL) { parsedItems.add(parsedItem); } if(tokens.hasNext() && !token.isLoopLike()) ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); @@ -407,7 +407,7 @@ public class Parser { ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); // Remove body end if(fullStatement) ParserUtil.checkType(tokens.get(), Token.Type.STATEMENT_END); - + if(ignoredFunctions.contains(identifier.getContent())) { return Function.NULL; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index fcdf95946..3ed76c81f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -1,12 +1,12 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.parser.Parser; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.Block; @@ -30,11 +30,10 @@ import com.dfsek.terra.api.structures.script.builders.UnaryBooleanFunctionBuilde import com.dfsek.terra.api.structures.script.builders.UnaryNumberFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.UnaryStringFunctionBuilder; import com.dfsek.terra.api.structures.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; -import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java index c81f73224..40a8ec29f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.script; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index 99761f949..12ae0a519 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -1,18 +1,18 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index d90384b5c..90f74f799 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -1,18 +1,18 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 3ea7addc7..987bc9778 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -1,15 +1,15 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 5a9813acc..1aa5441ee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,24 +1,23 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.config.templates.BiomeTemplate; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index e5c0875ed..22c378c78 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -1,9 +1,6 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; @@ -12,9 +9,12 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index 60468a73d..c691db385 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -1,15 +1,15 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index a3f0f7079..61c2c87e8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -1,21 +1,20 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structures.loot.LootTableImpl; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 0c27d0f2f..f8ce4a49e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -1,9 +1,6 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; @@ -12,9 +9,12 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index fdf9d3ba0..3fe7fbb8e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -1,15 +1,15 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index 6ff2263d2..5c6f68306 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -1,17 +1,17 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipulator; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 7e4c6c6b5..86e342256 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -1,21 +1,21 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.Vector2Impl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index 21e9a7def..7ed8d2ce5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,9 +1,8 @@ package com.dfsek.terra.api.structures.structure.buffer; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.vector.Location; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index c947e7d76..2c875bf2f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -1,9 +1,8 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import java.util.LinkedHashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 737a6bd2b..25b36a466 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,10 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; public class IntermediateBuffer implements Buffer { private final Buffer original; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 4e53c92dd..3d89b343d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,10 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import net.jafama.FastMath; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index df40380fd..08c7117a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,12 +1,11 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.data.Waterlogged; +import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; public class BufferedBlock implements BufferedItem { private final BlockData data; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 262fc6718..e54e2fdf4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.EntityType; public class BufferedEntity implements BufferedItem { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 0222fd51b..b25f4546b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -1,17 +1,15 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.structures.loot.LootTableImpl; +import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; +import com.dfsek.terra.api.structure.LootTable; +import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.vector.Location; public class BufferedLootApplication implements BufferedItem { private final LootTable table; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 9b5117283..df34b67c8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,11 +1,10 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; +import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; public class BufferedPulledBlock implements BufferedItem { private final BlockData data; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 1fcb2801c..0211d1a6b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,10 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.block.state.BlockState; public class BufferedStateManipulator implements BufferedItem { private final TerraPlugin main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java index fc530944a..c1521b6e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java @@ -22,7 +22,7 @@ public class FastRandom extends Random { SplittableRandom randomseed = new SplittableRandom(seed); this.random = new XoRoShiRo128PlusPlus(randomseed.nextLong(), randomseed.nextLong()); } - + @Override public boolean nextBoolean() { return random.nextBoolean(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java index 144738f56..1ae19ef29 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java @@ -65,18 +65,17 @@ import static net.jafama.FastMath.*; * Remove O(n*m)
* Search O(m)
* Access O(m) - * + *

* version v1.0 - * + *

* Date: 03.11.2015 * - * + * @param the type of elements held in this collection * @author Ertuğrul Çetin ~ ertu.ctn@gmail.com * @see Collection * @see List * @see LinkedList * @see ArrayList - * @param the type of elements held in this collection */ @SuppressWarnings({"ManualMinMaxCalculation", "ConstantConditions", "ManualArrayToCollectionCopy"}) public class GlueList extends AbstractList implements List, Cloneable, Serializable { @@ -119,7 +118,7 @@ public class GlueList extends AbstractList implements List, Cloneable, int len = arr.length; - if (len != 0) { + if(len != 0) { Node initNode = new Node<>(null, null, 0, len); @@ -146,7 +145,7 @@ public class GlueList extends AbstractList implements List, Cloneable, Node l = last; - if (l.isAddable()) { + if(l.isAddable()) { l.add(element); } else { Node newNode = new Node<>(l, null, size); @@ -169,7 +168,7 @@ public class GlueList extends AbstractList implements List, Cloneable, Node node = getNodeForAdd(index); - if (node == null) { + if(node == null) { Node l = last; @@ -183,7 +182,7 @@ public class GlueList extends AbstractList implements List, Cloneable, } //if it is last and has extra space for element... - if (node == last && node.elementData.length - node.elementDataPointer > 0) { + if(node == last && node.elementData.length - node.elementDataPointer > 0) { int nodeArrIndex = index - node.startingIndex; @@ -191,7 +190,7 @@ public class GlueList extends AbstractList implements List, Cloneable, node.elementData[nodeArrIndex] = element; - if (nodeArrIndex > 0) { + if(nodeArrIndex > 0) { System.arraycopy(node.elementData, 0, node.elementData, 0, nodeArrIndex); } @@ -207,7 +206,7 @@ public class GlueList extends AbstractList implements List, Cloneable, newElementData[nodeArrIndex] = element; - if (nodeArrIndex > 0) { + if(nodeArrIndex > 0) { System.arraycopy(node.elementData, 0, newElementData, 0, nodeArrIndex); } @@ -224,14 +223,14 @@ public class GlueList extends AbstractList implements List, Cloneable, private void rangeCheckForAdd(int index) { - if (index > size || index < 0) { + if(index > size || index < 0) { throw new ArrayIndexOutOfBoundsException(index); } } private void updateNodesAfterAdd(Node nodeFrom) { - for (Node node = nodeFrom.next; node != null; node = node.next) { + for(Node node = nodeFrom.next; node != null; node = node.next) { node.startingIndex++; node.endingIndex++; @@ -252,9 +251,9 @@ public class GlueList extends AbstractList implements List, Cloneable, return false; } - if (size == 0) { + if(size == 0) { - if (initialCapacity >= len) { + if(initialCapacity >= len) { System.arraycopy(collection, 0, last.elementData, 0, len); } else { last.elementData = Arrays.copyOf((T[]) collection, len); @@ -274,7 +273,7 @@ public class GlueList extends AbstractList implements List, Cloneable, int remainedStorage = elementDataLen - elementSize; - if (remainedStorage == 0) { + if(remainedStorage == 0) { Node l = last; @@ -296,7 +295,7 @@ public class GlueList extends AbstractList implements List, Cloneable, return true; } - if (len <= remainedStorage) { + if(len <= remainedStorage) { System.arraycopy(collection, 0, last.elementData, elementSize, len); @@ -308,7 +307,7 @@ public class GlueList extends AbstractList implements List, Cloneable, return true; } - if (len > remainedStorage) { + if(len > remainedStorage) { System.arraycopy(collection, 0, last.elementData, elementSize, remainedStorage); @@ -371,11 +370,11 @@ public class GlueList extends AbstractList implements List, Cloneable, int index = 0; - if (o == null) { + if(o == null) { - for (Node node = first; node != null; node = node.next) { - for (int i = 0; i < node.elementDataPointer; i++) { - if (node.elementData[i] == null) { + for(Node node = first; node != null; node = node.next) { + for(int i = 0; i < node.elementDataPointer; i++) { + if(node.elementData[i] == null) { return index; } index++; @@ -383,9 +382,9 @@ public class GlueList extends AbstractList implements List, Cloneable, } } else { - for (Node node = first; node != null; node = node.next) { - for (int i = 0; i < node.elementDataPointer; i++) { - if (o.equals(node.elementData[i])) { + for(Node node = first; node != null; node = node.next) { + for(int i = 0; i < node.elementDataPointer; i++) { + if(o.equals(node.elementData[i])) { return index; } index++; @@ -401,10 +400,10 @@ public class GlueList extends AbstractList implements List, Cloneable, int index = size - 1; - if (o == null) { - for (Node node = last; node != null; node = node.pre) { - for (int i = node.elementDataPointer - 1; i >= 0; i--) { - if (node.elementData[i] == null) { + if(o == null) { + for(Node node = last; node != null; node = node.pre) { + for(int i = node.elementDataPointer - 1; i >= 0; i--) { + if(node.elementData[i] == null) { return index; } index--; @@ -412,9 +411,9 @@ public class GlueList extends AbstractList implements List, Cloneable, } } else { - for (Node node = last; node != null; node = node.pre) { - for (int i = node.elementDataPointer - 1; i >= 0; i--) { - if (o.equals(node.elementData[i])) { + for(Node node = last; node != null; node = node.pre) { + for(int i = node.elementDataPointer - 1; i >= 0; i--) { + if(o.equals(node.elementData[i])) { return index; } index--; @@ -437,7 +436,7 @@ public class GlueList extends AbstractList implements List, Cloneable, Node node; - if (size == 2 && first != last) { + if(size == 2 && first != last) { Node newNode = new Node<>(null, null, 0, 2); newNode.add(first.elementData[0]); @@ -458,11 +457,11 @@ public class GlueList extends AbstractList implements List, Cloneable, int numMoved = elementSize - nodeArrIndex - 1; - if (numMoved > 0) { + if(numMoved > 0) { System.arraycopy(node.elementData, nodeArrIndex + 1, node.elementData, nodeArrIndex, numMoved); } - if (first == last || node == last) { + if(first == last || node == last) { node.elementData[elementSize - 1] = null; } else { node.elementData = Arrays.copyOf(node.elementData, elementSize - 1); @@ -473,19 +472,19 @@ public class GlueList extends AbstractList implements List, Cloneable, updateNodesAfterRemove(node); - if (node.elementDataPointer == 0 && first != last) { + if(node.elementDataPointer == 0 && first != last) { Node next = node.next; Node prev = node.pre; - if (prev == null) { + if(prev == null) { first = next; } else { prev.next = next; node.pre = null; } - if (next == null) { + if(next == null) { last = prev; } else { next.pre = prev; @@ -513,7 +512,7 @@ public class GlueList extends AbstractList implements List, Cloneable, boolean isModified = false; - for (Object o : arr) { + for(Object o : arr) { isModified |= remove(o); } @@ -534,9 +533,9 @@ public class GlueList extends AbstractList implements List, Cloneable, Object[] elements = toArray(); - for (Object element : elements) { + for(Object element : elements) { - if (!c.contains(element)) { + if(!c.contains(element)) { isModified |= remove(element); } } @@ -549,7 +548,7 @@ public class GlueList extends AbstractList implements List, Cloneable, int index = indexOf(o); - if (index != -1) { + if(index != -1) { remove(index); return true; } else { @@ -559,7 +558,7 @@ public class GlueList extends AbstractList implements List, Cloneable, private void updateNodesAfterRemove(Node fromNode) { - for (Node node = fromNode.next; node != null; node = node.next) { + for(Node node = fromNode.next; node != null; node = node.next) { node.startingIndex = (--node.startingIndex < 0) ? 0 : node.startingIndex; node.endingIndex = (--node.endingIndex < 0) ? 0 : node.endingIndex; @@ -578,34 +577,34 @@ public class GlueList extends AbstractList implements List, Cloneable, int lastMinDistance = min(abs(index - lastStartingIndex), abs(index - lastEndingIndex)); - if (firstMinDistance <= lastMinDistance) { + if(firstMinDistance <= lastMinDistance) { Node node = first; do { - if (node.startingIndex <= index && index <= node.endingIndex) { + if(node.startingIndex <= index && index <= node.endingIndex) { return node; } node = node.next; - } while (true); + } while(true); } else { Node node = last; do { - if (node.startingIndex <= index && index <= node.endingIndex) { + if(node.startingIndex <= index && index <= node.endingIndex) { return node; } node = node.pre; - } while (true); + } while(true); } } private Node getNodeForAdd(int index) { - if (index == size && !(last.startingIndex <= index && index <= last.endingIndex)) { + if(index == size && !(last.startingIndex <= index && index <= last.endingIndex)) { return null; } @@ -614,7 +613,7 @@ public class GlueList extends AbstractList implements List, Cloneable, private void rangeCheck(int index) { - if (index >= size || index < 0) { + if(index >= size || index < 0) { throw new ArrayIndexOutOfBoundsException(index); } } @@ -622,7 +621,7 @@ public class GlueList extends AbstractList implements List, Cloneable, @Override public void clear() { - for (Node node = first; node != null; ) { + for(Node node = first; node != null; ) { Node next = node.next; @@ -653,9 +652,9 @@ public class GlueList extends AbstractList implements List, Cloneable, int pointer = last.elementDataPointer; int arrLen = last.elementData.length; - if (pointer < arrLen && arrLen > 2) { + if(pointer < arrLen && arrLen > 2) { - if (pointer < 2) { + if(pointer < 2) { last.elementData = Arrays.copyOf(last.elementData, 2); last.endingIndex -= arrLen - 2; } else { @@ -676,11 +675,11 @@ public class GlueList extends AbstractList implements List, Cloneable, Object[] objects = new Object[size]; int i = 0; - for (Node node = first; node != null; node = node.next) { + for(Node node = first; node != null; node = node.next) { int len = node.elementDataPointer; - if (len > 0) { + if(len > 0) { System.arraycopy(node.elementData, 0, objects, i, len); } @@ -842,15 +841,15 @@ public class GlueList extends AbstractList implements List, Cloneable, int temp = j - 1; - if (temp < 0) { + if(temp < 0) { throw new NoSuchElementException(); } - if (temp >= last.endingIndex + 1) { + if(temp >= last.endingIndex + 1) { throw new ConcurrentModificationException(); } - if (j == size) { + if(j == size) { node = last; @@ -860,7 +859,7 @@ public class GlueList extends AbstractList implements List, Cloneable, } int index = j - node.startingIndex; - if (index == 0) { + if(index == 0) { node = node.pre; @@ -871,7 +870,7 @@ public class GlueList extends AbstractList implements List, Cloneable, T val = node.elementData[--i]; - if (i < 0) { + if(i < 0) { node = node.pre; i = (node != null) ? node.elementDataPointer : 0; } @@ -896,7 +895,7 @@ public class GlueList extends AbstractList implements List, Cloneable, @Override public void set(T t) { - if (lastReturn < 0) { + if(lastReturn < 0) { throw new IllegalStateException(); } @@ -904,7 +903,7 @@ public class GlueList extends AbstractList implements List, Cloneable, try { com.dfsek.terra.api.util.GlueList.this.set(lastReturn, t); - } catch (IndexOutOfBoundsException e) { + } catch(IndexOutOfBoundsException e) { throw new ConcurrentModificationException(); } } @@ -927,7 +926,7 @@ public class GlueList extends AbstractList implements List, Cloneable, elementDataPointer = (node != null) ? node.elementDataPointer : 0; expectedModCount = modCount; - } catch (IndexOutOfBoundsException e) { + } catch(IndexOutOfBoundsException e) { throw new ConcurrentModificationException(); } } @@ -941,13 +940,13 @@ public class GlueList extends AbstractList implements List, Cloneable, s.writeInt(size); - for (Node node = first; node != null; node = node.next) { - for (int i = 0; i < node.elementDataPointer; i++) { + for(Node node = first; node != null; node = node.next) { + for(int i = 0; i < node.elementDataPointer; i++) { s.writeObject(node.elementData[i]); } } - if (modCount != expectedModCount) { + if(modCount != expectedModCount) { throw new ConcurrentModificationException(); } } @@ -962,7 +961,7 @@ public class GlueList extends AbstractList implements List, Cloneable, int size = s.readInt(); - for (int i = 0; i < size; i++) { + for(int i = 0; i < size; i++) { last.add((T) s.readObject()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java index 9672c7746..b16ebafba 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java @@ -1,18 +1,17 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.api.world.generator.Sampler; public final class PaletteUtil { public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { SlantHolder slant = c.getSlant(); - if (slant != null) { + if(slant != null) { double slope = MathUtil.derivative(sampler, x, y, z); - if (slope > slant.getMinSlope()) { + if(slope > slant.getMinSlope()) { return slant.getPalette(slope).getPalette(y); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 13e67bd48..5e643579d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,7 +1,5 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -12,6 +10,8 @@ import com.dfsek.terra.api.block.data.Rail; import com.dfsek.terra.api.block.data.RedstoneWire; import com.dfsek.terra.api.block.data.Rotatable; import com.dfsek.terra.api.block.data.Wall; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.vector.Vector2; import com.google.common.collect.Sets; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java index 6542c6b47..aa307ad50 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util.collections; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.mutable.MutableInteger; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java index 729cff32b..12b63a405 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.WorldGenerator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java index e39e5771a..28a099807 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java @@ -2,8 +2,8 @@ package com.dfsek.terra.api.world.biome.pipeline; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java index cc6684316..ff46cfef6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.world.biome.pipeline; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.vector.Vector2Impl; import java.util.List; import java.util.stream.Collectors; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java index 18179b82d..8677cb37d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.expand; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java index fabb52e76..410b9cf85 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java index d4a922f49..48b56c877 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java index d7a6f47ac..912abf252 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java index f5d0015d7..c7ef22630 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java index 35a5f7ba8..529efdfd4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java index e74186aea..85e7776c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java index 9285b4021..8d195be5e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.world.biome.pipeline.stages; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; public class ExpanderStage implements Stage { private final BiomeExpander expander; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java index af2851538..083e865f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.world.biome.pipeline.stages; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; public class MutatorStage implements Stage { private final BiomeMutator mutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java index ac5633e90..ee1578732 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java @@ -3,11 +3,11 @@ package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.vector.Vector2Impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java index 2430150d9..c2ccb4be3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.world.carving; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index 2fac9bd54..d5355509b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index 79b0a0961..f361db044 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -2,11 +2,10 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 6df9b92d9..a191ff87c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -1,12 +1,11 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.world.population.items.TerraStructure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index f40004922..306a00a4a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java index b0fc2429b..9112fe41a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java @@ -1,10 +1,9 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.generator.Palette; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index 57946f7c3..628b763cb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -1,9 +1,8 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index 9d18e058f..a31dc9aa6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -1,16 +1,16 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.carving.Worm; +import com.dfsek.terra.vector.Vector3Impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index d30e3a35f..40e1bccc2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 2022d7f93..d6bf399fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -5,22 +5,22 @@ import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; 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.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java index abb1a746c..95a7a32d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; @Command( usage = "/terra addons" diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index 1ccc23d7b..0e2c78f0a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; @WorldCommand @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index b354cbbb3..2f2755eea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -4,11 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.pack.ConfigPackTemplate; @Command( usage = "/terra packs" diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java index dc7f1faf0..59b650e07 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java index 0fcb6f4b4..8734efc08 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java @@ -3,8 +3,8 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.config.lang.LangUtil; @Command( diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java index 4d7b263f6..1a68da9dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.lang.LangUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index e332c540d..17b1f5ba9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -10,16 +10,15 @@ import com.dfsek.terra.api.command.annotation.inject.SwitchTarget; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; import com.dfsek.terra.config.lang.LangUtil; +import com.dfsek.terra.vector.Vector3Impl; import java.util.Locale; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java index 95bd9dec6..23ec861e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.biome.arg; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; public class BiomeArgumentParser implements ArgumentParser { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java index 4d805f5d0..7bc9e58b1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.biome.tab; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java index 11adde655..44e351268 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java index 65c713414..d71273cf8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java index cd84a470f..994cb8371 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java index bc1752321..9aed43ed2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.injection.annotations.Inject; @Command @DebugCommand diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index fa7522dac..3d5d19582 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -6,19 +6,18 @@ import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.functions.CheckFunction; -import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.LocationImpl; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 8d6623294..3a2ae9962 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -1,6 +1,10 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; @@ -8,16 +12,12 @@ import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; +import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.state.Sign; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.util.generic.pair.Pair; import java.io.BufferedWriter; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index 73b084897..0a2d30cce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -11,9 +11,9 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index 2eb5be047..1604d2b0d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -10,15 +10,14 @@ import com.dfsek.terra.api.command.annotation.inject.SwitchTarget; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.commands.structure.argument.StructureArgumentParser; import com.dfsek.terra.commands.structure.completer.StructureCompleter; import com.dfsek.terra.config.lang.LangUtil; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.Locale; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index 204eb0de1..86f871183 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.script.StructureScript; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java index fce6d9327..1216f6e05 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.world.population.items.TerraStructure; public class StructureArgumentParser implements ArgumentParser { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index 00f77e274..c7380b92c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structures.script.StructureScript; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java index bc9801a4e..7d5d963e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java @@ -2,9 +2,9 @@ package com.dfsek.terra.commands.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index 5ddf1806c..d7b1adecc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -5,9 +5,9 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.JarUtil; -import com.dfsek.terra.api.Logger; import java.io.File; import java.io.FileInputStream; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java index d57eeb473..369ce1f68 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java @@ -1,9 +1,8 @@ package com.dfsek.terra.config.builder; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.templates.BiomeTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index d07fb139f..994c15125 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -4,15 +4,14 @@ import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.noise.samplers.ExpressionSampler; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; +import com.dfsek.terra.noise.samplers.ExpressionSampler; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.generation.WorldGenerator; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index f75118b1a..d709654c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,10 +1,9 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 5f79cd72a..4e4860122 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -1,12 +1,12 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.templates.FloraTemplate; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.world.population.items.flora.TerraFlora; public class FloraFactory implements ConfigFactory { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java index c4b0bf6c7..b80abe274 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java @@ -22,7 +22,7 @@ public abstract class Loader { public Loader then(ExceptionalConsumer> consumer) throws ConfigException { List list = new GlueList<>(); streams.forEach((id, stream) -> { - list.add(new Configuration(stream, id)); + list.add(new Configuration(stream, id)); }); consumer.accept(list); return this; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 026b37d45..8c05530e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.lang; +import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.lang.Language; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java index 3faa20dae..2227c2269 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java @@ -14,9 +14,11 @@ import java.util.logging.Logger; public class LanguageImpl implements com.dfsek.terra.api.lang.Language { private final Configuration configuration; + public LanguageImpl(File file) throws IOException { configuration = new Configuration(new FileInputStream(file)); } + @Override @SuppressWarnings("unchecked") public Message getMessage(String id) { @@ -33,10 +35,12 @@ public class LanguageImpl implements com.dfsek.terra.api.lang.Language { if(temp == null || temp.isEmpty()) return new SingleLineMessage("message:" + id + ":translation_undefined"); return temp; } + @Override public void log(String messageID, Level level, Logger logger, String... args) { getMessage(messageID).log(logger, level, args); } + @Override public void send(String messageID, CommandSender sender, String... args) { getMessage(messageID).send(sender, args); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java index 854204231..8b4efc673 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java @@ -10,19 +10,21 @@ import java.util.logging.Logger; public class MultiLineMessage implements Message { private final List message; + public MultiLineMessage(List message) { this.message = message; } + @Override public void log(Logger logger, Level level, String... args) { - for(String line: message) { + for(String line : message) { logger.log(level, String.format(line, Arrays.asList(args).toArray())); } } @Override public void send(CommandSender sender, String... args) { - for(String line: message) { + for(String line : message) { sender.sendMessage(String.format(line, Arrays.asList(args).toArray())); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java index 3288f58c9..18d6b4997 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java @@ -10,9 +10,11 @@ import java.util.logging.Logger; public class SingleLineMessage implements Message { private final String message; + public SingleLineMessage(String message) { this.message = message; } + @Override public void log(Logger logger, Level level, String... args) { logger.log(level, String.format(message, Arrays.asList(args).toArray())); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index eade08c4e..347260a72 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -2,10 +2,9 @@ package com.dfsek.terra.config.loaders; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 801097e63..0bf8dd5f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -4,14 +4,12 @@ import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.config.loaders.Types; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.world.population.items.flora.FloraLayer; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 203ee6b47..293b879f2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -3,14 +3,12 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.config.loaders.Types; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.world.population.items.tree.TreeLayer; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java index fee9144db..31a5f704c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index 359b6c346..b2213c862 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProvider.BiomeProviderBuilder { @Value("resolution") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java index 05a670879..9e021c443 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.pipeline.source.RandomSource; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java index 1196f3043..1e2183770 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java +++ b/common/implementation/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.api.world.biome.generation.pipeline.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.generation.pipeline.Stage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java index f9bce049a..d2f0445ae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderListMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java index 6a7ada974..1aed5dee0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java index 46021e4e7..f5d922e1b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java +++ b/common/implementation/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.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public abstract class MutatorStageTemplate extends StageTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index 2a5927c68..7758c70ec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceListMutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java index 2f64878e6..52fe113d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java index c093dfe04..8a62a6aa0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.noise.samplers.DomainWarpedSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java index b9a0598f3..59448ca85 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.KernelSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.noise.samplers.KernelSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java index cc5f88064..6bec571d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java @@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java index 2a243de48..37cf881f4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; @SuppressWarnings("FieldMayBeFinal") public class ConstantNoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java index 0863555fb..0c88b590e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java @@ -8,14 +8,14 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; +import com.dfsek.terra.noise.samplers.noise.ExpressionFunction; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java index 79d06e230..32295e959 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; +import com.dfsek.terra.noise.samplers.noise.NoiseFunction; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java index 1a10e7427..37db190de 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; +import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java index f51cd6863..912b89831 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.noise.samplers.noise.fractal.PingPongSampler; + @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { @Value("ping-pong") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java index 465d16607..da4a92fa7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.noise.normalizer.Normalizer; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; +import com.dfsek.terra.noise.normalizer.Normalizer; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index 0535300a1..ff2a3372c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -7,7 +7,6 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.Types; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java index 1cbcac1a7..0f2ef2861 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index ab1674c06..8a34a0817 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -3,10 +3,9 @@ package com.dfsek.terra.config.loaders.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.config.loaders.Types; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java index 8828197f4..d85246129 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java @@ -21,7 +21,7 @@ public class SlantHolderLoader implements TypeLoader { for(Map layer : layers) { double threshold = ((Number) layer.get("threshold")).doubleValue(); - if (threshold < minThreshold) minThreshold = threshold; + if(threshold < minThreshold) minThreshold = threshold; slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ffe2e561e..0a9655bec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -11,6 +11,7 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -37,7 +38,6 @@ import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProvi import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 9b9b38b86..bdcd343c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -9,17 +9,15 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; @@ -27,6 +25,7 @@ import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; +import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index 5e11d9a32..0c3b53475 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.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.math.range.ConstantRange; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.carving.CarverPalette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java index 87186a9bc..b92cbc12a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 5f99d6679..198723453 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index e7af73c3b..66837b818 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate extends AbstractableTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java index 336226a35..7f21694d3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java +++ b/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java @@ -1,9 +1,9 @@ package com.dfsek.terra.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index cfccf8aa3..20cb9b0b3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -3,8 +3,8 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.OpenRegistry; import java.lang.reflect.Type; import java.util.Collection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 82070af97..2622d010a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -2,8 +2,8 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.OpenRegistry; import java.lang.reflect.Type; import java.util.Collection; @@ -17,6 +17,7 @@ import java.util.stream.Collectors; /** * Registry implementation with read/write access. For internal use only. + * * @param */ public class OpenRegistryImpl implements OpenRegistry { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index f2537159e..4a3df8790 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -4,11 +4,11 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.factories.BiomeFactory; @@ -20,7 +20,6 @@ import com.dfsek.terra.config.factories.PaletteFactory; import com.dfsek.terra.config.factories.StructureFactory; import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index 91017c2da..46fb45c4f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,13 +1,5 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; @@ -23,6 +15,14 @@ import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.Rid import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; +import com.dfsek.terra.noise.samplers.noise.random.GaussianNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.noise.samplers.noise.simplex.PerlinSampler; +import com.dfsek.terra.noise.samplers.noise.simplex.SimplexSampler; +import com.dfsek.terra.noise.samplers.noise.value.ValueCubicSampler; +import com.dfsek.terra.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.registry.OpenRegistryImpl; public class NoiseRegistry extends OpenRegistryImpl { diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index 2ab0f974c..7d3e911d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -2,9 +2,9 @@ package com.dfsek.terra.vector; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index 38ee2a1d9..daadd3e40 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -1,20 +1,18 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.api.world.generator.Sampler; +import com.dfsek.terra.config.pack.WorldConfigImpl; import net.jafama.FastMath; public class TerraWorldImpl implements TerraWorld { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 3e4963931..794fbdef8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -1,26 +1,26 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.block.BlockData; +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.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.util.PaletteUtil; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; 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.SamplerCache; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler2D; import com.dfsek.terra.world.population.CavePopulator; import com.dfsek.terra.world.population.OrePopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 1f9ca86bf..efc6dcde2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,13 +1,6 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; @@ -15,21 +8,27 @@ import com.dfsek.terra.api.block.data.Bisected; import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.api.block.data.Waterlogged; -import com.dfsek.terra.api.world.BiomeGrid; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkData; +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; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; 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.api.world.palette.PaletteImpl; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; import com.dfsek.terra.world.population.CavePopulator; import com.dfsek.terra.world.population.FloraPopulator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java index da084e791..a0893afea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java @@ -1,11 +1,11 @@ package com.dfsek.terra.world.generation.math.interpolation; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.World; 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.vector.Vector3Impl; 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/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java index 814f1f12a..f87022f14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java @@ -1,11 +1,11 @@ package com.dfsek.terra.world.generation.math.interpolation; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.World; 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.vector.Vector3Impl; import net.jafama.FastMath; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 20fbd2d65..1d2caf052 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,23 +1,21 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.pack.WorldConfigImpl; import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.api.profiler.ProfileFrame; import org.jetbrains.annotations.NotNull; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index a42678384..6019f410a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -1,16 +1,16 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index cdf07454c..55815917b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -1,17 +1,17 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 0b05f5373..270895868 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -2,21 +2,18 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.config.pack.WorldConfigImpl; -import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index 7e045a488..5b80a14e8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -1,15 +1,15 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index b859ad1b5..51bf38a5c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -3,7 +3,6 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index e3dace7fd..361e3710d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index 5d00fb86c..9a9666a48 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,13 +1,12 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index 1396c96fb..77fe90ead 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -1,14 +1,13 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index d2e1be079..0c688a75d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -1,12 +1,10 @@ package com.dfsek.terra.world.population.items.flora; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.world.population.items.PlaceableLayer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index d17c2f7d4..35861257d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -1,19 +1,18 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java index 2d98cb11f..08d6fb4f5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java @@ -1,15 +1,15 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index d62568c11..5c4e744e0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -1,11 +1,11 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index f0422b2f6..848e14d68 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -1,13 +1,13 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 5e0cf1904..f37b84283 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,13 +1,11 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 546a169b2..017bd0782 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -1,16 +1,14 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; -import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { diff --git a/common/implementation/src/main/resources/lang/cs_cz.yml b/common/implementation/src/main/resources/lang/cs_cz.yml index c01c6fcf9..b1f3b4965 100644 --- a/common/implementation/src/main/resources/lang/cs_cz.yml +++ b/common/implementation/src/main/resources/lang/cs_cz.yml @@ -112,7 +112,7 @@ warning: error: severe-config: "Vážná konfigurační chyba zabránila Terra ze správné generace terénu na koordinátech: %1$s, %2$s. Prosíme zkontrolujte konfiguraci pro chyby. Jakékoli konfigurační chyby jsou vypsány výše." debug: - data-save : "Uložena populační data." + data-save: "Uložena populační data." use-paper: - "Vypadá to, že používáte Spigot/CraftBukkit." - "Ačkoli Terra &ofunguje&r na Spigot, některé funkce budou ztraceny. (Terra je netestována na CraftBukkit; žádná podpora nebude dána pro CraftBukkit)." diff --git a/common/implementation/src/main/resources/lang/en_us.yml b/common/implementation/src/main/resources/lang/en_us.yml index cde2101d9..a70a11490 100644 --- a/common/implementation/src/main/resources/lang/en_us.yml +++ b/common/implementation/src/main/resources/lang/en_us.yml @@ -112,7 +112,7 @@ warning: error: severe-config: "A severe configuration error has prevented Terra from properly generating terrain at coordinates: %1$s, %2$s. Please check your configuration for errors. Any config errors will have been reported above." debug: - data-save : "Saved population data." + data-save: "Saved population data." use-paper: - "You appear to be using Spigot/CraftBukkit." - "While Terra &odoes&r work on Spigot, some functionality will be lost. (Terra is untested on CraftBukkit; no support will be given for CraftBukkit)." diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index e8853a1e8..e5969efc3 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -5,6 +5,7 @@ import com.dfsek.terra.profiler.ProfilerImpl; public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); + //@Test public static void main(String... a) throws InterruptedException { //PROFILER.start(); diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index dfd5f4f79..cda955ddc 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -4,7 +4,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import java.net.URL import java.nio.channels.Channels import java.nio.file.Files -import java.nio.file.Paths import java.nio.file.StandardCopyOption plugins { @@ -55,7 +54,7 @@ fun downloadPaperclip(url: String, dir: String) { fun copyTerra(dir: String) { file("$testDir/$dir").walk().forEach { - if(it.name.startsWith("Terra-") && it.name.endsWith(".jar")) it.delete() // Delete old Terra jar(s) + if (it.name.startsWith("Terra-") && it.name.endsWith(".jar")) it.delete() // Delete old Terra jar(s) } copy { from("$buildDir/libs/Terra-bukkit-$version-shaded.jar") @@ -87,11 +86,11 @@ fun installServer(dir: String) { } fun deleteFolder(folder: File) { - if(folder.exists()) folder.deleteRecursively() + if (folder.exists()) folder.deleteRecursively() } fun deleteFile(file: File) { - if(file.exists()) file.delete() + if (file.exists()) file.delete() } tasks.create("cleanWorlds") { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index b7794d762..33666247f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -1,8 +1,7 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Location; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index b3de143e3..b4c5458f1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -1,8 +1,7 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.vector.Vector3Impl; 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 249855287..d42b6af6f 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 @@ -1,11 +1,13 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.api.Logger; 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.block.BlockData; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -13,18 +15,17 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; -import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; -import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; @@ -43,7 +44,6 @@ import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; @@ -100,7 +100,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private final LockedRegistryImpl addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); - public boolean reload() { config.load(this); LangUtil.load(config.getLanguage(), this); // Load language. diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 5407f5773..c8451d0c6 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,12 +1,11 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index b4af701da..e7b174d04 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -2,15 +2,14 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.transform.MapTransform; import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.config.pack.WorldConfigImpl; +import com.dfsek.terra.vector.LocationImpl; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -55,6 +54,7 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data); + if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) + block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 20aae02f0..b50547658 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -5,10 +5,10 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitTree; -import com.dfsek.terra.api.registry.DuplicateEntryException; import org.bukkit.TreeType; public class TerraListener implements EventListener { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 4e8036cea..2a0a9c926 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -1,14 +1,14 @@ package com.dfsek.terra.bukkit.population; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.bukkit.world.BukkitWorld; import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 4fd76683e..fca571179 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,10 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; -import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -14,12 +10,14 @@ import com.dfsek.terra.api.block.data.Rail; import com.dfsek.terra.api.block.data.RedstoneWire; import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.api.block.data.Stairs; +import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.transform.MapTransform; import com.dfsek.terra.api.transform.TransformerImpl; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitPlayer; @@ -27,6 +25,8 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; +import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java index 308e6a03d..3eb629522 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.BiomeGrid; +import com.dfsek.terra.api.world.biome.Biome; import org.bukkit.generator.ChunkGenerator; import org.jetbrains.annotations.NotNull; 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 c1653633b..25651dccb 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 @@ -1,12 +1,11 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; import org.bukkit.TreeType; import java.util.Locale; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 2b4bbaad7..f3c4746eb 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,10 +1,9 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java index 8af761a0e..2d9c29b41 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java @@ -1,6 +1,5 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; @@ -9,6 +8,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; +import com.dfsek.terra.vector.LocationImpl; public class BukkitBlock implements Block { private final org.bukkit.block.Block delegate; 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 205e20900..8184ebcfc 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 @@ -3,11 +3,13 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.api.Logger; 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.block.BlockData; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -20,38 +22,36 @@ import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.generation.PopulatorFeature; -import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.event.GameInitializationEvent; +import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.PopulatorFeature; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.ProtoBiome; -import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; -import com.dfsek.terra.api.registry.DuplicateEntryException; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java index 38d6c7680..bab4a3db1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java @@ -1,12 +1,11 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.FluidBlock; 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 b59c3b5e8..00a3c0990 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 @@ -1,15 +1,14 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index ba24dc759..7f38e22e6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; import com.mojang.serialization.Codec; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index 6d646fbe1..6c845c089 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import net.fabricmc.api.EnvType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 95680239c..09223ecf7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,11 +1,10 @@ package com.dfsek.terra.fabric.handle; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.fabric.util.WorldEditUtil; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index dd652a0ef..5c0ea6165 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,11 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; -import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.entity.Entity; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index e7d8987e7..4e9e68375 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,10 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index fd32600ca..3eb4e00b2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,10 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 93e6f706e..05c9a3d06 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -1,11 +1,10 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; -import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.google.common.base.MoreObjects; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index e94b779ed..408a7ff56 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,7 +1,5 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Bisected; @@ -10,6 +8,7 @@ import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.block.state.MobSpawner; import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.block.data.FabricDirectional; import com.dfsek.terra.fabric.block.data.FabricMultipleFacing; @@ -18,6 +17,7 @@ import com.dfsek.terra.fabric.block.data.FabricRotatable; import com.dfsek.terra.fabric.block.data.FabricSlab; import com.dfsek.terra.fabric.block.data.FabricStairs; import com.dfsek.terra.fabric.block.data.FabricWaterlogged; +import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.LootableContainerBlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 024dd8265..185ec0bd9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; @@ -37,8 +36,8 @@ public final class FabricUtil { /** * Clones a Vanilla biome and injects Terra data to create a Terra-vanilla biome delegate. * - * @param biome The Terra BiomeBuilder. - * @param pack The ConfigPack this biome belongs to. + * @param biome The Terra BiomeBuilder. + * @param pack The ConfigPack this biome belongs to. * @return The Minecraft delegate biome. */ public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 679316313..0169dbd8b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.vector.LocationImpl; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.math.BlockVector3; diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index f2f42900c..a6371aee8 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -4,9 +4,9 @@ "package": "com.dfsek.terra.fabric.mixin", "compatibilityLevel": "JAVA_16", "mixins": [ - "StructureAccessorAccessor", "CommandManagerMixin", "ServerWorldMixin", + "StructureAccessorAccessor", "access.BiomeEffectsAccessor", "access.MobSpawnerLogicAccessor", "access.StateAccessor", diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java index 00a09f0e2..91c88275d 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; public class ForgeBlockData implements BlockData { private static final Function, Comparable>, String> PROPERTY_MAPPER = new Function, Comparable>, String>() { public String apply(@Nullable Map.Entry, Comparable> entry) { - if (entry == null) { + if(entry == null) { return ""; } else { Property property = entry.getKey(); @@ -26,7 +26,7 @@ public class ForgeBlockData implements BlockData { @SuppressWarnings("unchecked") private > String getName(Property property, Comparable comparable) { - return property.getName((T)comparable); + return property.getName((T) comparable); } }; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java index cfcc25216..f00e19a6d 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java @@ -80,12 +80,14 @@ public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements Genera } @Override - protected @NotNull Codec codec() { + protected @NotNull + Codec codec() { return CODEC; } @Override - public @NotNull ChunkGenerator withSeed(long seed) { + public @NotNull + ChunkGenerator withSeed(long seed) { return new ForgeChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); } @@ -153,7 +155,8 @@ public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements Genera } @Override - public @NotNull IBlockReader getBaseColumn(int x, int z) { + public @NotNull + IBlockReader getBaseColumn(int x, int z) { TerraWorld world = TerraForgePlugin.getInstance().getWorld(dimensionType); int height = getBaseHeight(x, z, Heightmap.Type.WORLD_SURFACE); BlockState[] array = new BlockState[256]; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java index 3220cfd58..b057272f5 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java @@ -40,7 +40,8 @@ public class TerraBiomeSource extends net.minecraft.world.biome.provider.BiomePr } @Override - protected @NotNull Codec codec() { + protected @NotNull + Codec codec() { return CODEC; } @@ -50,7 +51,8 @@ public class TerraBiomeSource extends net.minecraft.world.biome.provider.BiomePr } @Override - public @NotNull Biome getNoiseBiome(int biomeX, int biomeY, int biomeZ) { + public @NotNull + Biome getNoiseBiome(int biomeX, int biomeY, int biomeZ) { UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(biomeX << 2, biomeZ << 2); return Objects.requireNonNull(biomeRegistry.get(new ResourceLocation("terra", ForgeUtil.createBiomeID(pack, biome.getID())))); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java index 91b8fc852..a86175e53 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java @@ -18,7 +18,8 @@ public class TerraGeneratorType extends BiomeGeneratorTypeScreens { } @Override - protected @NotNull ChunkGenerator generator(@NotNull Registry biomeRegistry, @NotNull Registry chunkGeneratorSettingsRegistry, long seed) { + protected @NotNull + ChunkGenerator generator(@NotNull Registry biomeRegistry, @NotNull Registry chunkGeneratorSettingsRegistry, long seed) { return new ForgeChunkGeneratorWrapper(new TerraBiomeSource(biomeRegistry, seed, pack), seed, pack); } } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java index 44a97ec83..691530c4d 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java @@ -22,7 +22,8 @@ public abstract class SignTileEntityMixin { @Shadow public abstract void setMessage(int p_212365_1_, ITextComponent p_212365_2_); - public @NotNull String[] terra$getLines() { + public @NotNull + String[] terra$getLines() { String[] lines = new String[messages.length]; for(int i = 0; i < messages.length; i++) { lines[i] = messages[i].getString(); @@ -30,7 +31,8 @@ public abstract class SignTileEntityMixin { return lines; } - public @NotNull String terra$getLine(int index) throws IndexOutOfBoundsException { + public @NotNull + String terra$getLine(int index) throws IndexOutOfBoundsException { return messages[index].getString(); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java index 2a84b1a32..6ee4cd8b1 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java @@ -40,7 +40,8 @@ public abstract class ChunkMixin { return new ForgeBlock(pos, level); } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull + BlockData terra$getBlockData(int x, int y, int z) { return terra$getBlock(x, y, z).getBlockData(); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java index abec0eefd..e5b5a5c39 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java @@ -43,7 +43,8 @@ public abstract class WorldGenRegionMixin { return new ForgeBlock(pos, (WorldGenRegion) (Object) this); } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull + BlockData terra$getBlockData(int x, int y, int z) { return terra$getBlock(x, y, z).getBlockData(); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java index 59fae46c1..118d76c34 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java @@ -19,7 +19,8 @@ public abstract class ChunkPrimerMixin { @Shadow public abstract BlockState getBlockState(BlockPos pos); - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull + BlockData terra$getBlockData(int x, int y, int z) { return new ForgeBlockData(getBlockState(new BlockPos(x, y, z))); } 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 16497596f..f8e609627 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -3,28 +3,28 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManagerImpl; -import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LanguageImpl; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; -import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java index 6d19a881d..1276443d6 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java @@ -1,12 +1,12 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.vector.LocationImpl; import net.jafama.FastMath; public class DirectBlock implements Block { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index 7dcc02815..0b1764b21 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -1,10 +1,10 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.vector.Vector3Impl; import net.querz.mca.Chunk; import net.querz.nbt.tag.CompoundTag; import org.jetbrains.annotations.NotNull; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 47f8deff9..0e7e823f0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,14 +1,14 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index 97ef48609..e09d5d7d0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,8 +1,8 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.vector.LocationImpl; import java.util.Random; 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 cf33cdd1a..e193e07f5 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,7 +1,6 @@ package com.dfsek.terra.region; import com.dfsek.terra.StandalonePlugin; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.platform.DirectChunkData; import com.dfsek.terra.platform.DirectWorld; import com.dfsek.terra.platform.GenWrapper; @@ -70,7 +69,6 @@ public class Generator { } - System.out.println("Saving..."); for(Map.Entry entry : world.getFiles().entrySet()) { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 3bb6729bb..1098c5431 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -10,14 +10,14 @@ import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; import com.dfsek.terra.api.util.logging.DebugLogger; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LanguageImpl; -import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; From cf30f3d06720133ac1a45653a17cbfc7b54a0ccc Mon Sep 17 00:00:00 2001 From: Astrashh Date: Thu, 24 Jun 2021 21:38:07 +1000 Subject: [PATCH 0055/1529] Remove hardcoded flora registry entries --- .../registry/config/ConfigTypeRegistry.java | 2 +- .../terra/registry/config/FloraRegistry.java | 64 ------------------- 2 files changed, 1 insertion(+), 65 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 4a3df8790..f5058d6e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -44,7 +44,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { this.callback = callback; add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); - add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main))); + add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, FloraRegistry::new)); add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); add("STRUCTURE", new ConfigBuilder<>(new StructureFactory(), StructureTemplate::new, TerraStructure.class, StructureRegistry::new)); add("TREE", new ConfigBuilder<>(new TreeFactory(), TreeTemplate::new, Tree.class, TreeRegistry::new)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index ee6c49c19..ddd465081 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -1,71 +1,7 @@ package com.dfsek.terra.registry.config; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.population.items.flora.ConstantFlora; - -import java.util.Arrays; -import java.util.Collections; -import java.util.concurrent.Callable; public class FloraRegistry extends OpenRegistryImpl { - private final TerraPlugin main; - - public FloraRegistry(TerraPlugin main) { - this.main = main; - MaterialSet grassy = MaterialSet.get(create("minecraft:grass_block"), create("minecraft:podzol")); - addItem("TALL_GRASS", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:tall_grass[half=lower]"), data("minecraft:tall_grass[half=upper]")))); - addItem("TALL_FERN", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:large_fern[half=lower]"), data("minecraft:large_fern[half=upper]")))); - addItem("SUNFLOWER", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:sunflower[half=lower]"), data("minecraft:sunflower[half=upper]")))); - addItem("ROSE_BUSH", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:rose_bush[half=lower]"), data("minecraft:rose_bush[half=upper]")))); - addItem("LILAC", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:lilac[half=lower]"), data("minecraft:lilac[half=upper]")))); - addItem("PEONY", () -> new ConstantFlora(grassy, Arrays.asList(data("minecraft:peony[half=lower]"), data("minecraft:peony[half=upper]")))); - addItem("GRASS", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:grass")))); - addItem("FERN", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:fern")))); - addItem("AZURE_BLUET", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:azure_bluet")))); - addItem("LILY_OF_THE_VALLEY", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:lily_of_the_valley")))); - addItem("BLUE_ORCHID", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:blue_orchid")))); - addItem("POPPY", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:poppy")))); - addItem("DANDELION", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:dandelion")))); - addItem("WITHER_ROSE", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:wither_rose")))); - addItem("DEAD_BUSH", () -> new ConstantFlora(MaterialSet.get(create("minecraft:terracotta"), create("minecraft:black_terracotta"), - create("minecraft:blue_terracotta"), create("minecraft:brown_terracotta"), create("minecraft:cyan_terracotta"), - create("minecraft:gray_terracotta"), create("minecraft:green_terracotta"), create("minecraft:light_blue_terracotta"), - create("minecraft:light_gray_terracotta"), create("minecraft:lime_terracotta"), create("minecraft:magenta_terracotta"), - create("minecraft:orange_terracotta"), create("minecraft:pink_terracotta"), create("minecraft:purple_terracotta"), - create("minecraft:red_terracotta"), create("minecraft:white_terracotta"), create("minecraft:yellow_terracotta"), - create("minecraft:red_sand"), create("minecraft:sand"), create("minecraft:coarse_dirt")), Collections.singletonList(data("minecraft:dead_bush")))); - addItem("RED_TULIP", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:red_tulip")))); - addItem("ORANGE_TULIP", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:orange_tulip")))); - addItem("WHITE_TULIP", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:white_tulip")))); - addItem("PINK_TULIP", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:pink_tulip")))); - addItem("OXEYE_DAISY", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:oxeye_daisy")))); - addItem("ALLIUM", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:allium")))); - addItem("CORNFLOWER", () -> new ConstantFlora(grassy, Collections.singletonList(data("minecraft:cornflower")))); - addItem("LILY_PAD", () -> new ConstantFlora(MaterialSet.get(create("minecraft:water")), Collections.singletonList(data("minecraft:lily_pad")))); - MaterialSet mushroom = MaterialSet.get(create("minecraft:grass_block"), create("minecraft:stone"), create("minecraft:podzol"), create("minecraft:netherrack"), create("minecraft:mycelium")); - addItem("RED_MUSHROOM", () -> new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:red_mushroom")))); - addItem("BROWN_MUSHROOM", () -> new ConstantFlora(mushroom, Collections.singletonList(data("minecraft:brown_mushroom")))); - } - - private BlockData create(String s) { - return main.getWorldHandle().createBlockData(s); - } - - private void addItem(String id, Callable flora) { - try { - Entry entry = new Entry<>(flora.call()); - entry.getValue(); // Mark as not dead. - add(id, entry); - } catch(Exception e) { - main.logger().warning("Failed to load Flora item: " + id + ": " + e.getMessage()); - } - } - - private BlockData data(String s) { - return main.getWorldHandle().createBlockData(s); - } } From c26f4dfc2fdaa29a492e00b32b415d9036628b62 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 06:59:59 -0700 Subject: [PATCH 0056/1529] remove redundant openregistry implementations --- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 9 +++------ .../dfsek/terra/registry/config/CarverRegistry.java | 7 ------- .../terra/registry/config/ConfigTypeRegistry.java | 10 +++++----- .../com/dfsek/terra/registry/config/FloraRegistry.java | 7 ------- .../dfsek/terra/registry/config/FunctionRegistry.java | 7 ------- .../com/dfsek/terra/registry/config/LootRegistry.java | 7 ------- .../com/dfsek/terra/registry/config/OreRegistry.java | 7 ------- .../dfsek/terra/registry/config/ScriptRegistry.java | 7 ------- .../dfsek/terra/registry/config/StructureRegistry.java | 7 ------- .../com/dfsek/terra/registry/config/TreeRegistry.java | 7 ------- 10 files changed, 8 insertions(+), 67 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 0a9655bec..bc3c54a14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -42,10 +42,7 @@ import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; -import com.dfsek.terra.registry.config.FunctionRegistry; -import com.dfsek.terra.registry.config.LootRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; -import com.dfsek.terra.registry.config.ScriptRegistry; import com.dfsek.terra.world.TerraWorldImpl; import com.dfsek.terra.world.population.items.TerraStructure; import org.apache.commons.io.IOUtils; @@ -194,9 +191,9 @@ public class ConfigPackImpl implements ConfigPack { }; putPair(map, NoiseProvider.class, new NoiseRegistry()); - putPair(map, FunctionBuilder.class, (OpenRegistry) (Object) new FunctionRegistry()); - putPair(map, LootTable.class, new LootRegistry()); - putPair(map, Structure.class, new ScriptRegistry()); + putPair(map, FunctionBuilder.class, new OpenRegistryImpl<>()); + putPair(map, LootTable.class, new OpenRegistryImpl<>()); + putPair(map, Structure.class, new OpenRegistryImpl<>()); return map; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java deleted file mode 100644 index d7d3d7cb8..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/CarverRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class CarverRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index f5058d6e4..cf88dba51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -43,11 +43,11 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { super(new LinkedHashMap<>()); // Ordered this.callback = callback; add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); - add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); - add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, FloraRegistry::new)); - add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); - add("STRUCTURE", new ConfigBuilder<>(new StructureFactory(), StructureTemplate::new, TerraStructure.class, StructureRegistry::new)); - add("TREE", new ConfigBuilder<>(new TreeFactory(), TreeTemplate::new, Tree.class, TreeRegistry::new)); + add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OpenRegistryImpl::new)); + add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, OpenRegistryImpl::new)); + add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, OpenRegistryImpl::new)); + add("STRUCTURE", new ConfigBuilder<>(new StructureFactory(), StructureTemplate::new, TerraStructure.class, OpenRegistryImpl::new)); + add("TREE", new ConfigBuilder<>(new TreeFactory(), TreeTemplate::new, Tree.class, OpenRegistryImpl::new)); add("BIOME", new ConfigBuilder<>(new BiomeFactory(pack), () -> new BiomeTemplate(pack, main), BiomeBuilder.class, BiomeRegistry::new)); add("PACK", new PackBuilder()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java deleted file mode 100644 index ddd465081..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class FloraRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java deleted file mode 100644 index 951dfa6b0..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/FunctionRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class FunctionRegistry extends OpenRegistryImpl> { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java deleted file mode 100644 index 37b8eb459..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/LootRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class LootRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java deleted file mode 100644 index 41b62bef1..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/OreRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.population.items.ores.Ore; - -public class OreRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java deleted file mode 100644 index ad865a298..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ScriptRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class ScriptRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java deleted file mode 100644 index b44ab7fa3..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/StructureRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.population.items.TerraStructure; - -public class StructureRegistry extends OpenRegistryImpl { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java deleted file mode 100644 index 69534bb3d..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class TreeRegistry extends OpenRegistryImpl { -} From 255e4396dd4b35a9e58ab991a7335fdf08ef7a06 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 08:16:15 -0700 Subject: [PATCH 0057/1529] refactor registries --- .../main/java/com/dfsek/terra/api/registry/CheckedRegistry.java | 2 ++ .../main/java/com/dfsek/terra/api/registry/OpenRegistry.java | 2 ++ .../api/registry/{ => exception}/DuplicateEntryException.java | 2 +- .../main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java | 2 +- .../main/java/com/dfsek/terra/registry/OpenRegistryImpl.java | 2 +- .../java/com/dfsek/terra/registry/master/AddonRegistry.java | 2 +- .../java/com/dfsek/terra/bukkit/listeners/TerraListener.java | 2 +- .../src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- 8 files changed, 10 insertions(+), 6 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/registry/{ => exception}/DuplicateEntryException.java (89%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index e3dbb2ce2..a5631c7d5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.registry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; + public interface CheckedRegistry extends Registry { /** * Add a value to this registry, checking whether it is present first. diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java index f15ebd3db..739712afc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.registry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; + public interface OpenRegistry extends Registry { /** * Add a value to this registry. diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java b/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java similarity index 89% rename from common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java rename to common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java index e384fe8e5..4154ecd0f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/DuplicateEntryException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.registry; +package com.dfsek.terra.api.registry.exception; /** * Thrown when a duplicate entry is found in a registry. diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 20cb9b0b3..108c0290a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -3,7 +3,7 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.OpenRegistry; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 2622d010a..a64de9ac7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -2,7 +2,7 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.OpenRegistry; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 0f00a007c..1b8ef7d76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; -import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.registry.OpenRegistryImpl; import java.io.File; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index b50547658..264e085d4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitTree; 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 8184ebcfc..6386f431c 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 @@ -27,7 +27,7 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.DuplicateEntryException; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.transform.TransformerImpl; import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; From 18d071128d776eed1b45a85f94fce5183a070f07 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 08:25:50 -0700 Subject: [PATCH 0058/1529] remove Block from API --- .../java/com/dfsek/terra/api/block/Block.java | 35 ------------------- .../terra/api/block/state/BlockState.java | 4 +-- .../world/generation/LootPopulateEvent.java | 15 +++----- .../api/inventory/BlockInventoryHolder.java | 4 +-- .../com/dfsek/terra/api/vector/Location.java | 3 -- .../java/com/dfsek/terra/api/world/Chunk.java | 10 ++++-- .../java/com/dfsek/terra/api/world/Flora.java | 4 +-- .../java/com/dfsek/terra/api/world/World.java | 19 +++++++--- 8 files changed, 33 insertions(+), 61 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/Block.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java b/common/api/src/main/java/com/dfsek/terra/api/block/Block.java deleted file mode 100644 index 97cd4af8b..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/Block.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.api.block; - -import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.vector.Location; - -public interface Block extends Handle { - void setBlockData(BlockData data, boolean physics); - - BlockData getBlockData(); - - BlockState getState(); - - default Block getRelative(BlockFace face) { - return getRelative(face, 1); - } - - Block getRelative(BlockFace face, int len); - - boolean isEmpty(); - - Location getLocation(); - - default BlockType getType() { - return getBlockData().getBlockType(); - } - - int getX(); - - int getZ(); - - int getY(); - - boolean isPassable(); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 3de77b5b6..c308f6d8e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.block.state; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.vector.Vector3; public interface BlockState extends Handle { - Block getBlock(); + Vector3 getPosition(); int getX(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 28af48a39..9815c6add 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.event.events.world.generation; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.AbstractCancellable; @@ -8,20 +7,19 @@ import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.vector.Vector3; import org.jetbrains.annotations.NotNull; /** * Called when loot is populated. */ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, Cancellable { - private final Block block; private final Container container; private LootTable table; private final ConfigPack pack; private final Structure structure; - public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, Structure structure) { - this.block = block; + public LootPopulateEvent(Container container, LootTable table, ConfigPack pack, Structure structure) { this.container = container; this.table = table; this.pack = pack; @@ -33,13 +31,8 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, return pack; } - /** - * Get the block containing the tile entity loot is applied to. - * - * @return Block at which loot is applied. - */ - public Block getBlock() { - return block; + public Vector3 getPosition() { + return container.getPosition(); } /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java index eeebc5286..2345d4a4d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.inventory; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.vector.Vector3; public interface BlockInventoryHolder extends InventoryHolder { - Block getBlock(); + Vector3 getPosition(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java index fa43def02..7e1ef97b5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.vector; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.world.World; public interface Location extends Cloneable { @@ -34,8 +33,6 @@ public interface Location extends Cloneable { Location add(double x, double y, double z); - Block getBlock(); - Location subtract(int x, int y, int z); Location add(Vector3 add); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java index d36829f63..8cb9414d4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; public interface Chunk extends ChunkAccess { int getX(); @@ -9,5 +9,11 @@ public interface Chunk extends ChunkAccess { World getWorld(); - Block getBlock(int x, int y, int z); + BlockData getBlockData(int x, int y, int z); + + void setBlockData(int x, int y, int z, BlockData data, boolean physics); + + default void setBlockData(int x, int y, int z, BlockData data) { + setBlockData(x, y, z, data, false); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java index 38481728f..9468e4bb4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import java.util.List; public interface Flora { - List getValidSpawnsAt(Chunk chunk, int x, int z, Range check); + List getValidSpawnsAt(Chunk chunk, int x, int z, Range check); boolean plant(Location l); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 956f95d93..edb7a3cbe 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; @@ -22,10 +23,20 @@ public interface World extends Handle { return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4); } - Block getBlockAt(int x, int y, int z); + BlockData getBlockData(int x, int y, int z); - default Block getBlockAt(Location l) { - return getBlockAt(l.getBlockX(), l.getBlockY(), l.getBlockZ()); + default BlockData getBlockData(Vector3 position) { + return getBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + } + + void setBlockData(int x, int y, int z, BlockData data, boolean physics); + + default void setBlockData(int x, int y, int z, BlockData data) { + setBlockData(x, y, z, data, false); + } + + default void setBlockData(Vector3 position, BlockData data) { + setBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data); } Entity spawnEntity(Location location, EntityType entityType); From c4de7e578a8fc04a75ecc95462b9b268ee4e2712 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Thu, 24 Jun 2021 13:27:10 -0700 Subject: [PATCH 0059/1529] Remove bukkit-style biome IDs --- .../java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 9 ++++++++- .../java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 6 +----- 2 files changed, 9 insertions(+), 6 deletions(-) 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 d42b6af6f..43ee73e5f 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit; +import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; @@ -62,6 +63,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -301,11 +303,16 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { public void register(TypeRegistry registry) { registry .registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o)) - .registerLoader(Biome.class, (t, o, l) -> new BukkitBiome(org.bukkit.block.Biome.valueOf((String) o))) + .registerLoader(Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); genericLoaders.register(registry); } + private BukkitBiome parseBiome(String id) throws LoadException { + if(!id.startsWith("minecraft:")) throw new LoadException("Invalid biome identifier " + id); + return new BukkitBiome(org.bukkit.block.Biome.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); + } + @Override public Registry getAddons() { return addonLockedRegistry; 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 8184ebcfc..77c28bd20 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 @@ -128,10 +128,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final PluginConfig config = new PluginConfigImpl(); - private final TransformerImpl biomeFixer = new TransformerImpl.Builder() - .addTransform(this::parseBiome, Validator.notNull()) - .addTransform(id -> parseBiome("minecraft:" + id.toLowerCase()), Validator.notNull()).build(); - private ProtoBiome parseBiome(String id) { Identifier identifier = Identifier.tryParse(id); if(BuiltinRegistries.BIOME.get(identifier) == null) return null; // failure. @@ -242,7 +238,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { genericLoaders.register(registry); registry .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) + .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(Identifier.class, (t, o, l) -> { Identifier identifier = Identifier.tryParse((String) o); if(identifier == null) throw new LoadException("Invalid identifier: " + o); From 03ecf6197adc14c2b07bc3c30f1752f7b2122adc Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 14:53:57 -0700 Subject: [PATCH 0060/1529] implementation compilation --- .../com/dfsek/terra/api/vector/Vector2.java | 2 + .../java/com/dfsek/terra/api/world/World.java | 21 +++++++- .../script/functions/CheckBlockFunction.java | 2 +- .../structure/buffer/items/BufferedBlock.java | 9 ++-- .../buffer/items/BufferedLootApplication.java | 6 +-- .../buffer/items/BufferedPulledBlock.java | 13 +++-- .../items/BufferedStateManipulator.java | 4 +- .../structure/StructureExportCommand.java | 11 ++-- .../dfsek/terra/config/GenericLoaders.java | 1 - .../dfsek/terra/config/dummy/DummyWorld.java | 20 ++++++- .../terra/config/factories/OreFactory.java | 9 +--- .../terra/config/templates/OreTemplate.java | 9 ---- .../com/dfsek/terra/vector/LocationImpl.java | 6 --- .../com/dfsek/terra/vector/Vector2Impl.java | 6 +++ .../terra/world/population/CavePopulator.java | 47 +++++++---------- .../population/items/flora/BlockFlora.java | 44 ---------------- .../population/items/flora/ConstantFlora.java | 52 ------------------- .../population/items/flora/FloraLayer.java | 2 +- .../population/items/flora/TerraFlora.java | 48 +++++++++-------- .../items/ores/DeformedSphereOre.java | 51 ------------------ .../world/population/items/ores/Ore.java | 4 -- .../population/items/ores/VanillaOre.java | 7 ++- .../population/items/tree/TreeLayer.java | 10 ++-- 23 files changed, 119 insertions(+), 265 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java index b8f1a6010..6af588f05 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -98,4 +98,6 @@ public interface Vector2 extends Cloneable { int getBlockX(); int getBlockZ(); + + Vector3 extrude(double y); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index edb7a3cbe..c04d14f30 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; @@ -36,9 +37,27 @@ public interface World extends Handle { } default void setBlockData(Vector3 position, BlockData data) { - setBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data); + setBlockData(position, data, false); } + default void setBlockData(Vector3 position, BlockData data, boolean physics) { + setBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data, physics); + } + + BlockState getBlockState(int x, int y, int z); + + default BlockState getBlockState(Vector3 position) { + return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + } + + void setBlockState(int x, int y, int z, BlockState state); + + default void setBlockState(Vector3 position, BlockState state) { + setBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ(), state); + } + + + Entity spawnEntity(Location location, EntityType entityType); int getMinHeight(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 987bc9778..33e42a179 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -34,7 +34,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString(); + String data = arguments.getBuffer().getOrigin().getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))).getVector()).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 08c7117a5..4f17c2273 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -22,12 +21,12 @@ public class BufferedBlock implements BufferedItem { @Override public void paste(Location origin) { - Block block = origin.getBlock(); try { - if(overwrite || block.isEmpty()) { - if(waterlog && data instanceof Waterlogged && block.getBlockData().getBlockType().isWater()) + BlockData data = origin.getWorld().getBlockData(origin.toVector()); + if(overwrite || data.isAir()) { + if(waterlog && data instanceof Waterlogged && data.getBlockType().isWater()) ((Waterlogged) data).setWaterlogged(true); - block.setBlockData(data, false); + origin.getWorld().setBlockData(origin.getVector(), data); } } catch(RuntimeException e) { main.logger().severe("Failed to place block at location " + origin + ": " + e.getMessage()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index b25f4546b..66ee27305 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; @@ -25,15 +24,14 @@ public class BufferedLootApplication implements BufferedItem { @Override public void paste(Location origin) { try { - Block block = origin.getBlock(); - BlockState data = block.getState(); + BlockState data = origin.getWorld().getBlockState(origin.getVector()); if(!(data instanceof Container)) { main.logger().severe("Failed to place loot at " + origin + "; block " + data + " is not container."); return; } Container container = (Container) data; - LootPopulateEvent event = new LootPopulateEvent(block, container, table, block.getLocation().getWorld().getTerraGenerator().getConfigPack(), structure); + LootPopulateEvent event = new LootPopulateEvent(container, table, origin.getWorld().getTerraGenerator().getConfigPack(), structure); main.getEventManager().callEvent(event); if(event.isCancelled()) return; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index df34b67c8..8bd4f5ffa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,10 +1,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; public class BufferedPulledBlock implements BufferedItem { private final BlockData data; @@ -15,13 +14,13 @@ public class BufferedPulledBlock implements BufferedItem { @Override public void paste(Location origin) { - Block pos = origin.getBlock(); - while(pos.getY() > origin.getWorld().getMinHeight()) { - if(!pos.isEmpty()) { - pos.setBlockData(data, false); + Vector3 mutable = origin.toVector(); + while(mutable.getY() > origin.getWorld().getMinHeight()) { + if(!origin.getWorld().getBlockData(mutable).isAir()) { + origin.getWorld().setBlockData(mutable, data); break; } - pos = pos.getRelative(BlockFace.DOWN); + mutable.subtract(0, 1, 0); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 0211d1a6b..80ccc06c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -17,9 +17,11 @@ public class BufferedStateManipulator implements BufferedItem { @Override public void paste(Location origin) { try { - BlockState state = origin.getBlock().getState(); + BlockState state = origin.getWorld().getBlockState(origin.getVector()); state.applyState(data); state.update(false); + + origin.getWorld().setBlockState(origin.getVector(), state); } catch(Exception e) { main.logger().warning("Could not apply BlockState at " + origin + ": " + e.getMessage()); e.printStackTrace(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 3a2ae9962..b181d6423 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -1,7 +1,6 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.Sign; @@ -60,8 +59,7 @@ public class StructureExportCommand implements CommandTemplate { for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - Block block = new LocationImpl(l1.getWorld(), x, y, z).getBlock(); - BlockState state = block.getState(); + BlockState state = l1.getWorld().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]") && sign.getLine(1).equals("[CENTER]")) { @@ -78,10 +76,9 @@ public class StructureExportCommand implements CommandTemplate { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - Block block = new LocationImpl(l1.getWorld(), x, y, z).getBlock(); - BlockData data = block.getBlockData(); - if(block.getBlockData().isStructureVoid()) continue; - BlockState state = block.getState(); + BlockData data = l1.getWorld().getBlockData(x, y, z); + if(data.isStructureVoid()) continue; + BlockState state = l1.getWorld().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 914ad8387..c4a839285 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -76,7 +76,6 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) .registerLoader(SlantHolder.class, new SlantHolderLoader()) .registerLoader(FloraLayer.class, new FloraLayerLoader()) - .registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf(o.toString())) .registerLoader(OreConfig.class, new OreConfigLoader()) .registerLoader(TreeLayer.class, new TreeLayerLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index d709654c9..1e6fec96e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; @@ -36,10 +37,25 @@ public class DummyWorld implements World { } @Override - public Block getBlockAt(int x, int y, int z) { + public BlockData getBlockData(int x, int y, int z) { throw new UnsupportedOperationException("Cannot get block in DummyWorld"); } + @Override + public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + throw new UnsupportedOperationException("Cannot set block in DummyWorld"); + } + + @Override + public BlockState getBlockState(int x, int y, int z) { + throw new UnsupportedOperationException("Cannot get block in DummyWorld"); + } + + @Override + public void setBlockState(int x, int y, int z, BlockState state) { + + } + @Override public Entity spawnEntity(Location location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java index 0fb8d13e6..bd73d32c7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java @@ -3,7 +3,6 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.config.templates.OreTemplate; -import com.dfsek.terra.world.population.items.ores.DeformedSphereOre; import com.dfsek.terra.world.population.items.ores.Ore; import com.dfsek.terra.world.population.items.ores.VanillaOre; @@ -11,12 +10,6 @@ public class OreFactory implements ConfigFactory { @Override public Ore build(OreTemplate config, TerraPlugin main) { BlockData m = config.getMaterial(); - switch(config.getType()) { - case SPHERE: - return new DeformedSphereOre(m, config.getReplaceable(), config.doPhysics(), config.getDeform(), config.getDeformFrequency(), config.getSize(), main, config.getMaterialOverrides()); - case VANILLA: - return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), main, config.getMaterialOverrides()); - } - return null; + return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), main, config.getMaterialOverrides()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index 234c83254..d6dc17ac2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -26,11 +26,6 @@ public class OreTemplate extends AbstractableTemplate { @Abstractable private Map materials = new HashMap<>(); - @Value("algorithm") - @Abstractable - @Default - private Ore.Type oreType = Ore.Type.VANILLA; - @Value("replace") @Abstractable private MaterialSet replaceable; @@ -82,10 +77,6 @@ public class OreTemplate extends AbstractableTemplate { return id; } - public Ore.Type getType() { - return oreType; - } - public Map getMaterialOverrides() { return materials; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java index 2251e8347..78b9651a3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java @@ -1,6 +1,5 @@ package com.dfsek.terra.vector; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -108,11 +107,6 @@ public class LocationImpl implements Location { return this; } - @Override - public Block getBlock() { - return world.getBlockAt(this); - } - @Override public Location subtract(int x, int y, int z) { vector.subtract(x, y, z); diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java index 42700e30d..ffaae22b7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java @@ -2,6 +2,7 @@ package com.dfsek.terra.vector; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import net.jafama.FastMath; /** @@ -141,6 +142,11 @@ public class Vector2Impl implements Vector2 { return FastMath.floorToInt(z); } + @Override + public Vector3 extrude(double y) { + return new Vector3Impl(this.x, y, this.z); + } + @Override public String toString() { return "(" + x + ", " + z + ")"; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 1d2caf052..66a160b52 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,7 +1,6 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.WorldConfig; @@ -9,6 +8,7 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -46,63 +46,52 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); - Set updateNeeded = new HashSet<>(); + Map shiftCandidate = new HashMap<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { - Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); - BlockData m = b.getBlockData(); + BlockData m = chunk.getBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ()); BlockType re = m.getBlockType(); switch(type) { case CENTER: if(template.getInner().canReplace(re)) { - b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case WALL: if(template.getOuter().canReplace(re)) { - b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case TOP: if(template.getTop().canReplace(re)) { - b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case BOTTOM: if(template.getBottom().canReplace(re)) { - b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false); - if(template.getUpdate().contains(re)) updateNeeded.add(b); - if(template.getShift().containsKey(re)) shiftCandidate.put(b.getLocation(), m); + chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; } } }); - for(Map.Entry entry : shiftCandidate.entrySet()) { - Location l = entry.getKey(); - Location mut = l.clone(); - BlockData orig = l.getBlock().getBlockData(); + for(Map.Entry entry : shiftCandidate.entrySet()) { + Vector3 l = entry.getKey(); + Vector3 mut = l.clone(); + BlockData orig = chunk.getBlockData(l.getBlockX(), l.getBlockY(), l.getBlockZ()); do mut.subtract(0, 1, 0); - while(mut.getY() > world.getMinHeight() && mut.getBlock().getBlockData().matches(orig)); + while(mut.getY() > world.getMinHeight() && chunk.getBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches(orig)); try { - if(template.getShift().get(entry.getValue().getBlockType()).contains(mut.getBlock().getBlockData().getBlockType())) { - mut.getBlock().setBlockData(shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); + if(template.getShift().get(entry.getValue().getBlockType()).contains(chunk.getBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { + chunk.setBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); } } catch(NullPointerException ignored) { } } - for(Block b : updateNeeded) { - BlockData orig = b.getBlockData(); - b.setBlockData(AIR, false); - b.setBlockData(orig, true); - } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java deleted file mode 100644 index 9a9666a48..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.world.population.items.flora; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Flora; - -import java.util.List; - -/** - * Flora that is just 1 layer of a single block. - */ -public class BlockFlora implements Flora { - - private final BlockData data; - - public BlockFlora(BlockData data) { - this.data = data; - } - - @Override - public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { - Block current = chunk.getBlock(x, range.getMin(), z); - List blocks = new GlueList<>(); - for(int y : range) { - if(y > 255 || y < 0) continue; - current = current.getRelative(BlockFace.UP); - if(current.getType().isSolid() && current.getRelative(BlockFace.UP).isEmpty()) { - blocks.add(current); // Add all blocks that are solid with air directly above. - } - } - return blocks; - } - - @Override - public boolean plant(Location location) { - location.add(0, 1, 0).getBlock().setBlockData(data, true); - return true; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java deleted file mode 100644 index 77fe90ead..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.world.population.items.flora; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Flora; - -import java.util.List; - -public class ConstantFlora implements Flora { - private final List data; - - private final MaterialSet spawns; - - public ConstantFlora(MaterialSet spawns, List data) { - this.data = data; - this.spawns = spawns; - } - - @Override - public List getValidSpawnsAt(Chunk chunk, int x, int z, Range check) { - List blocks = new GlueList<>(); - for(int y : check) { - Block block = chunk.getBlock(x, y, z); - if(spawns.contains(block.getType()) && valid(block)) { - blocks.add(chunk.getBlock(x, y, z)); - } - } - return blocks; - } - - private boolean valid(Block block) { - for(int i = 1; i < data.size() + 1; i++) { - block = block.getRelative(BlockFace.UP); - if(!block.isEmpty()) return false; - } - return true; - } - - @Override - public boolean plant(Location l) { - for(int i = 1; i < data.size() + 1; i++) { - l.clone().add(0, i, 0).getBlock().setBlockData(data.get(i - 1), false); - } - return true; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index 0c688a75d..7ebcc966e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -21,6 +21,6 @@ public class FloraLayer extends PlaceableLayer { @Override public void place(Chunk chunk, Vector2 coords) { Flora item = layer.get(noise, (chunk.getX() << 4) + coords.getX(), (chunk.getZ() << 4) + coords.getZ()); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.getLocation())); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.toLocation(chunk.getWorld()))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 35861257d..c6b165f31 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -1,7 +1,6 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; @@ -12,9 +11,12 @@ import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.ArrayList; @@ -58,14 +60,14 @@ public class TerraFlora implements Flora { } @Override - public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { + public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { int size = floraPalette.getSize(); - Block current = chunk.getBlock(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); - List blocks = new ArrayList<>(); + Vector3 current = new Vector3Impl(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); + List blocks = new ArrayList<>(); for(int y : range) { if(y > 255 || y < 0) continue; - current = current.getRelative(search.equals(Search.UP) ? BlockFace.UP : BlockFace.DOWN); - if((spawnBlacklist != spawnable.contains(current.getType())) && isIrrigated(current.getRelative(BlockFace.UP, irrigableOffset)) && valid(size, current)) { + current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); + if((spawnBlacklist != spawnable.contains(chunk.getBlockData(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk) && valid(size, current.clone(), chunk)) { blocks.add(current); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } @@ -73,21 +75,21 @@ public class TerraFlora implements Flora { return blocks; } - private boolean valid(int size, Block block) { + private boolean valid(int size, Vector3 block, Chunk chunk) { for(int i = 0; i < size; i++) { // Down if ceiling, up if floor if(block.getY() + 1 > 255 || block.getY() < 0) return false; - block = block.getRelative(ceiling ? BlockFace.DOWN : BlockFace.UP); - if(!replaceable.contains(block.getType())) return false; + block.add(0, ceiling ? -1 : 1, 0); + if(!replaceable.contains(chunk.getBlockData(block.getBlockX(), block.getBlockY(), block.getBlockZ()).getBlockType())) return false; } return true; } - private boolean isIrrigated(Block b) { + private boolean isIrrigated(Vector3 b, Chunk chunk) { if(irrigable == null) return true; - return irrigable.contains(b.getRelative(BlockFace.NORTH).getType()) - || irrigable.contains(b.getRelative(BlockFace.SOUTH).getType()) - || irrigable.contains(b.getRelative(BlockFace.EAST).getType()) - || irrigable.contains(b.getRelative(BlockFace.WEST).getType()); + return irrigable.contains(chunk.getBlockData(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(chunk.getBlockData(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(chunk.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) + || irrigable.contains(chunk.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); } @@ -97,7 +99,7 @@ public class TerraFlora implements Flora { int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; - List faces = doRotation ? getFaces(location.clone().add(0, c, 0).getBlock()) : new GlueList<>(); + List faces = doRotation ? getFaces(location.clone().add(0, c, 0).toVector(), location.getWorld()) : new GlueList<>(); if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor @@ -115,22 +117,22 @@ public class TerraFlora implements Flora { ((Rotatable) data).setRotation(oneFace); } } - location.clone().add(0, i + c, 0).getBlock().setBlockData(data, physics); + location.getWorld().setBlockData(location.toVector().add(0, i + c, 0), data, physics); } return true; } - private List getFaces(Block b) { + private List getFaces(Vector3 b, World world) { List faces = new GlueList<>(); - test(faces, BlockFace.NORTH, b); - test(faces, BlockFace.SOUTH, b); - test(faces, BlockFace.EAST, b); - test(faces, BlockFace.WEST, b); + test(faces, BlockFace.NORTH, b, world); + test(faces, BlockFace.SOUTH, b, world); + test(faces, BlockFace.EAST, b, world); + test(faces, BlockFace.WEST, b, world); return faces; } - private void test(List faces, BlockFace f, Block b) { - if(testRotation.contains(b.getRelative(f).getType())) faces.add(f); + private void test(List faces, BlockFace f, Vector3 b, World world) { + if(testRotation.contains(world.getBlockData(b.getBlockX()+f.getModX(), b.getBlockY()+f.getModY(), b.getBlockZ()+f.getModZ()).getBlockType())) faces.add(f); } public enum Search { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java deleted file mode 100644 index 08d6fb4f5..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.dfsek.terra.world.population.items.ores; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.vector.Vector3Impl; - -import java.util.Map; -import java.util.Random; - -public class DeformedSphereOre extends Ore { - private final double deform; - private final double deformFrequency; - private final Range size; - - public DeformedSphereOre(BlockData material, MaterialSet replaceable, boolean applyGravity, double deform, double deformFrequency, Range size, TerraPlugin main, Map materials) { - super(material, replaceable, applyGravity, main, materials); - this.deform = deform; - this.deformFrequency = deformFrequency; - this.size = size; - } - - - @Override - public void generate(Vector3Impl origin, Chunk c, Random r) { - OpenSimplex2Sampler ore = new OpenSimplex2Sampler(r.nextInt()); - ore.setFrequency(deformFrequency); - int rad = size.get(r); - for(int x = -rad; x <= rad; x++) { - for(int y = -rad; y <= rad; y++) { - for(int z = -rad; z <= rad; z++) { - Vector3 oreLoc = origin.clone().add(new Vector3Impl(x, y, z)); - if(oreLoc.getBlockX() > 15 || oreLoc.getBlockZ() > 15 || oreLoc.getBlockY() > c.getWorld().getMaxHeight() || oreLoc.getBlockX() < 0 || oreLoc.getBlockZ() < 0 || oreLoc.getBlockY() < c.getWorld().getMinHeight()) - continue; - if(oreLoc.distance(origin) < (rad + 0.5) * ((ore.getNoise(x, y, z) + 1) * deform)) { - Block b = c.getBlock(oreLoc.getBlockX(), oreLoc.getBlockY(), oreLoc.getBlockZ()); - BlockType type = b.getType(); - if(getReplaceable().contains(type) && b.getLocation().getY() >= c.getWorld().getMinHeight()) - b.setBlockData(getMaterial(type), isApplyGravity()); - } - } - } - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index 5c4e744e0..fcf0cb427 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -39,8 +39,4 @@ public abstract class Ore { public boolean isApplyGravity() { return applyGravity; } - - public enum Type { - VANILLA, SPHERE - } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 848e14d68..9cba1f427 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -1,7 +1,6 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; @@ -68,10 +67,10 @@ public class VanillaOre extends Ore { for(int z = zStart; z <= zEnd; z++) { double d15 = (z + 0.5D - (d3 + (d4 - d3) * iFactor)) / (d11 / 2.0D); if(x > 15 || z > 15 || y > 255 || x < 0 || z < 0 || y < 0) continue; - Block block = chunk.getBlock(x, y, z); - BlockType type = block.getType(); + + BlockType type = chunk.getBlockData(x, y, z).getBlockType(); if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(type)) { - block.setBlockData(getMaterial(type), isApplyGravity()); + chunk.setBlockData(x, y, z, getMaterial(type), isApplyGravity()); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 017bd0782..0b6920b0a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -1,12 +1,12 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.world.population.items.PlaceableLayer; @@ -20,11 +20,11 @@ public class TreeLayer extends PlaceableLayer { @Override public void place(Chunk chunk, Vector2 coords) { Tree item = layer.get(noise, coords.getX(), coords.getZ()); - Block current = chunk.getBlock((int) coords.getX(), level.getMax(), (int) coords.getZ()); + Vector3 running = coords.extrude(level.getMax()); for(int ignored : level) { - current = current.getRelative(BlockFace.DOWN); - if(item.getSpawnable().contains(current.getType())) { - item.plant(current.getLocation().add(0, 1, 0), PopulationUtil.getRandom(chunk, coords.hashCode())); + running.subtract(0,1,0); + if(item.getSpawnable().contains(chunk.getBlockData(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { + item.plant(running.toLocation(chunk.getWorld()).add(0, 1, 0), PopulationUtil.getRandom(chunk, coords.hashCode())); } } } From dc1f1a033993ab966a281b9e2010bac9c46f7f7a Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 19:19:44 -0700 Subject: [PATCH 0061/1529] compile Fabric --- .../java/com/dfsek/terra/api/world/World.java | 8 -- .../items/BufferedStateManipulator.java | 2 - .../dfsek/terra/config/dummy/DummyWorld.java | 5 - .../dfsek/terra/fabric/TerraFabricPlugin.java | 4 +- .../dfsek/terra/fabric/block/FabricBlock.java | 95 ------------------- .../block/BlockEntityMixin.java | 6 -- .../chunk/ChunkRegionMixin.java | 11 +-- .../chunk/WorldChunkMixin.java | 21 ++-- .../world/ChunkRegionMixin.java | 32 ++++++- .../world/ServerWorldMixin.java | 19 +++- .../terra/fabric/util/FabricAdapter.java | 15 --- .../dfsek/terra/fabric/util/FabricUtil.java | 24 +++++ 12 files changed, 85 insertions(+), 157 deletions(-) delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index c04d14f30..93aed3e9a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -50,14 +50,6 @@ public interface World extends Handle { return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ()); } - void setBlockState(int x, int y, int z, BlockState state); - - default void setBlockState(Vector3 position, BlockState state) { - setBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ(), state); - } - - - Entity spawnEntity(Location location, EntityType entityType); int getMinHeight(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 80ccc06c9..03c12c040 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -20,8 +20,6 @@ public class BufferedStateManipulator implements BufferedItem { BlockState state = origin.getWorld().getBlockState(origin.getVector()); state.applyState(data); state.update(false); - - origin.getWorld().setBlockState(origin.getVector(), state); } catch(Exception e) { main.logger().warning("Could not apply BlockState at " + origin + ": " + e.getMessage()); e.printStackTrace(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 1e6fec96e..2ca34ec03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -51,11 +51,6 @@ public class DummyWorld implements World { throw new UnsupportedOperationException("Cannot get block in DummyWorld"); } - @Override - public void setBlockState(int x, int y, int z, BlockState state) { - - } - @Override public Entity spawnEntity(Location location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); 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 70faabe1c..1042d26f5 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 @@ -128,9 +128,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final PluginConfig config = new PluginConfigImpl(); - private ProtoBiome parseBiome(String id) { + private ProtoBiome parseBiome(String id) throws LoadException { Identifier identifier = Identifier.tryParse(id); - if(BuiltinRegistries.BIOME.get(identifier) == null) return null; // failure. + if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier); // failure. return new ProtoBiome(identifier); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java deleted file mode 100644 index bab4a3db1..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlock.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.dfsek.terra.fabric.block; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.FluidBlock; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.WorldAccess; - -public class FabricBlock implements Block { - private final Handle delegate; - - public FabricBlock(BlockPos position, WorldAccess worldAccess) { - this.delegate = new Handle(position, worldAccess); - } - - @Override - public void setBlockData(BlockData data, boolean physics) { - delegate.worldAccess.setBlockState(delegate.position, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); - if(physics && ((FabricBlockData) data).getHandle().getBlock() instanceof FluidBlock) { - delegate.worldAccess.getFluidTickScheduler().schedule(delegate.position, ((FluidBlock) ((FabricBlockData) data).getHandle().getBlock()).getFluidState(((FabricBlockData) data).getHandle()).getFluid(), 0); - } - } - - @Override - public BlockData getBlockData() { - return new FabricBlockData(delegate.worldAccess.getBlockState(delegate.position)); - } - - @Override - public BlockState getState() { - return FabricAdapter.adapt(this); - } - - @Override - public Block getRelative(BlockFace face, int len) { - BlockPos newPos = delegate.position.add(face.getModX() * len, face.getModY() * len, face.getModZ() * len); - return new FabricBlock(newPos, delegate.worldAccess); - } - - @Override - public boolean isEmpty() { - return getBlockData().isAir(); - } - - @Override - public Location getLocation() { - return FabricAdapter.adapt(delegate.position).toLocation((World) delegate.worldAccess); - } - - @Override - public BlockType getType() { - return getBlockData().getBlockType(); - } - - @Override - public int getX() { - return delegate.position.getX(); - } - - @Override - public int getZ() { - return delegate.position.getZ(); - } - - @Override - public int getY() { - return delegate.position.getY(); - } - - @Override - public boolean isPassable() { - return isEmpty(); - } - - @Override - public Handle getHandle() { - return delegate; - } - - public static final class Handle { - private final BlockPos position; - private final WorldAccess worldAccess; - - public Handle(BlockPos position, WorldAccess worldAccess) { - this.position = position; - this.worldAccess = worldAccess; - } - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index 95f38cce8..effcc5761 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,9 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -37,10 +35,6 @@ public abstract class BlockEntityMixin { return this; } - public Block terra$getBlock() { - return new FabricBlock(pos, world); - } - public int terra$getX() { return pos.getX(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index 9ac566d19..fccf18bd9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -1,10 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; @@ -35,16 +33,11 @@ public abstract class ChunkRegionMixin { return (World) this; } - public Block terra$getBlock(int x, int y, int z) { - BlockPos pos = new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)); - return new FabricBlock(pos, (ChunkRegion) (Object) this); - } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { - return terra$getBlock(x, y, z).getBlockData(); + return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)))); } - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { + public void terra$setBlockData(int x, int y, int z, @NotNull BlockData blockData, boolean physics) { ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockData) blockData).getHandle(), 0); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index ee6d73e5c..b58b5b968 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -1,14 +1,15 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlockData; +import net.minecraft.block.BlockState; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.WorldChunk; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -23,6 +24,13 @@ public abstract class WorldChunkMixin { @Shadow private net.minecraft.world.World world; + @Shadow + public abstract BlockState getBlockState(BlockPos pos); + + @Shadow + @Nullable + public abstract BlockState setBlockState(BlockPos pos, BlockState state, boolean moved); + public int terra$getX() { return ((net.minecraft.world.chunk.Chunk) this).getPos().x; } @@ -35,13 +43,12 @@ public abstract class WorldChunkMixin { return (World) world; } - public Block terra$getBlock(int x, int y, int z) { - BlockPos pos = new BlockPos(x + (terra$getX() << 4), y, z + (terra$getZ() << 4)); - return new FabricBlock(pos, world); + public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + return new FabricBlockData(getBlockState(new BlockPos(x, y, z))); } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { - return terra$getBlock(x, y, z).getBlockData(); + public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + setBlockState(new BlockPos(x, y, z), ((FabricBlockData) data).getHandle(), false); } public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 4e9e68375..b772459e3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; @@ -9,12 +9,18 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.fabric.block.FabricBlock; +import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.util.FabricUtil; +import net.minecraft.block.BlockState; +import net.minecraft.block.FluidBlock; +import net.minecraft.fluid.Fluid; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; +import net.minecraft.world.TickScheduler; +import net.minecraft.world.WorldAccess; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -33,6 +39,12 @@ public abstract class ChunkRegionMixin { @Final private long seed; + @Shadow + public abstract boolean setBlockState(BlockPos pos, BlockState state, int flags, int maxUpdateDepth); + + @Shadow + public abstract TickScheduler getFluidTickScheduler(); + public int terra$getMaxHeight() { return (((ChunkRegion) (Object) this).getBottomY()) + ((ChunkRegion) (Object) this).getHeight(); } @@ -46,8 +58,8 @@ public abstract class ChunkRegionMixin { return (Chunk) ((ChunkRegion) (Object) this).getChunk(x, z); } - public Block terra$getBlockAt(int x, int y, int z) { - return new FabricBlock(new BlockPos(x, y, z), ((ChunkRegion) (Object) this)); + public com.dfsek.terra.api.block.state.BlockState terra$getBlockState(int x, int y, int z) { + return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); } @SuppressWarnings("deprecation") @@ -58,6 +70,18 @@ public abstract class ChunkRegionMixin { return (Entity) entity; } + public BlockData terra$getBlockData(int x, int y, int z) { + return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x, y, z))); + } + + public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + BlockPos pos = new BlockPos(x, y, z); + ((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); + if(physics && ((FabricBlockData) data).getHandle().getBlock() instanceof FluidBlock) { + getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockData) data).getHandle().getBlock()).getFluidState(((FabricBlockData) data).getHandle()).getFluid(), 0); + } + } + @Intrinsic public long terra$getSeed() { return seed; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 3eb4e00b2..687761c71 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; @@ -9,11 +9,13 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.fabric.block.FabricBlock; +import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ServerWorldAccess; +import net.minecraft.world.WorldAccess; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; @@ -38,8 +40,17 @@ public abstract class ServerWorldMixin { return (Chunk) ((ServerWorld) (Object) this).getChunk(x, z); } - public Block terra$getBlockAt(int x, int y, int z) { - return new FabricBlock(new BlockPos(x, y, z), ((ServerWorld) (Object) this)); + public com.dfsek.terra.api.block.state.BlockState terra$getBlockState(int x, int y, int z) { + return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); + } + + public BlockData terra$getBlockData(int x, int y, int z) { + return new FabricBlockData(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z))); + } + + public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + BlockPos pos = new BlockPos(x, y, z); + ((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); } public Entity terra$spawnEntity(Location location, EntityType entityType) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 408a7ff56..7b7b2754f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -81,21 +81,6 @@ public final class FabricAdapter { } } - - public static com.dfsek.terra.api.block.state.BlockState adapt(com.dfsek.terra.api.block.Block block) { - WorldAccess worldAccess = (WorldAccess) block.getLocation().getWorld(); - - BlockEntity entity = worldAccess.getBlockEntity(adapt(block.getLocation().toVector())); - if(entity instanceof SignBlockEntity) { - return (Sign) entity; - } else if(entity instanceof MobSpawnerBlockEntity) { - return (MobSpawner) entity; - } else if(entity instanceof LootableContainerBlockEntity) { - return (Container) entity; - } - return null; - } - public static Stairs.Shape adapt(StairShape shape) { switch(shape) { case OUTER_RIGHT: diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 185ec0bd9..c357ef4d2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -1,7 +1,12 @@ package com.dfsek.terra.fabric.util; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.state.MobSpawner; +import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; @@ -9,11 +14,17 @@ import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.LootableContainerBlockEntity; +import net.minecraft.block.entity.MobSpawnerBlockEntity; +import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.MutableRegistry; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; @@ -47,6 +58,7 @@ public final class FabricUtil { TerraFabricPlugin.FabricAddon fabricAddon = TerraFabricPlugin.getInstance().getFabricAddon(); Registry biomeRegistry = registryManager.get(Registry.BIOME_KEY); + System.out.println(new ArrayList<>(biome.getVanillaBiomes().getContents())); Biome vanilla = ((ProtoBiome) (new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0))).get(biomeRegistry); GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); @@ -130,4 +142,16 @@ public final class FabricUtil { Registry.register(registry, identifier, item); } } + + public static BlockState createState(WorldAccess worldAccess, BlockPos pos) { + BlockEntity entity = worldAccess.getBlockEntity(pos); + if(entity instanceof SignBlockEntity) { + return (Sign) entity; + } else if(entity instanceof MobSpawnerBlockEntity) { + return (MobSpawner) entity; + } else if(entity instanceof LootableContainerBlockEntity) { + return (Container) entity; + } + return null; + } } From 9fa660409deec79c7ea6d5c2d8b5ad196efaa238 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 23:41:08 -0700 Subject: [PATCH 0062/1529] sort of working fabric implementation --- .../dfsek/terra/api/structure/Structure.java | 3 +- .../terra/api/structure/buffer/Buffer.java | 15 ++++++--- .../api/structure/buffer/BufferedItem.java | 11 ++----- .../structures/script/StructureScript.java | 28 +++++++++-------- .../script/TerraImplementationArguments.java | 9 +++++- .../functions/AbstractBlockFunction.java | 2 +- .../script/functions/BiomeFunction.java | 2 +- .../script/functions/CheckBlockFunction.java | 2 +- .../script/functions/CheckFunction.java | 7 +++-- .../script/functions/EntityFunction.java | 2 +- .../script/functions/GetMarkFunction.java | 2 +- .../script/functions/LootFunction.java | 2 +- .../script/functions/PullFunction.java | 2 +- .../script/functions/SetMarkFunction.java | 2 +- .../script/functions/StateFunction.java | 2 +- .../script/functions/StructureFunction.java | 2 +- .../api/structures/structure/buffer/Cell.java | 7 +++-- .../structure/buffer/DirectBuffer.java | 31 ++++++++++++++----- .../structure/buffer/IntermediateBuffer.java | 20 +++++++++--- .../structure/buffer/StructureBuffer.java | 26 +++++++++------- .../structure/buffer/items/BufferedBlock.java | 15 ++++----- .../buffer/items/BufferedEntity.java | 6 ++-- .../buffer/items/BufferedLootApplication.java | 8 +++-- .../buffer/items/BufferedPulledBlock.java | 11 ++++--- .../items/BufferedStateManipulator.java | 6 ++-- .../commands/structure/SpawnCommand.java | 5 +-- .../population/items/tree/TreeLayer.java | 7 +++-- 27 files changed, 144 insertions(+), 91 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index 321f18a17..aa665ed07 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import java.util.Random; @@ -25,7 +26,7 @@ public interface Structure { boolean test(Location location, Random random, Rotation rotation); @SuppressWarnings("try") - boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions); + boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); @SuppressWarnings("try") boolean generateDirect(Location location, Random random, Rotation rotation); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java index 4fc0366c0..73b679c2c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java @@ -1,13 +1,20 @@ package com.dfsek.terra.api.structure.buffer; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; public interface Buffer { - Buffer addItem(BufferedItem item, Location location); + void paste(Vector3 origin, Chunk chunk); - Location getOrigin(); + void paste(Vector3 origin, World world); - String getMark(Location location); + Buffer addItem(BufferedItem item, Vector3 location); - Buffer setMark(String mark, Location location); + Vector3 getOrigin(); + + String getMark(Vector3 location); + + Buffer setMark(String mark, Vector3 location); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java index 27d3ef9ca..c5dbffe0e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java @@ -1,13 +1,8 @@ package com.dfsek.terra.api.structure.buffer; -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public interface BufferedItem { - void paste(Location origin); - - default void paste(Chunk chunk, Location origin) { - origin.setWorld(chunk.getWorld()); // Fabric weirdness - paste(origin); - } + void paste(Vector3 origin, World world); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index 3ed76c81f..b330ebd3b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -33,7 +33,9 @@ import com.dfsek.terra.api.structures.script.builders.ZeroArgFunctionBuilder; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import net.jafama.FastMath; @@ -48,7 +50,7 @@ import java.util.concurrent.ExecutionException; public class StructureScript implements Structure { private final Block block; private final String id; - private final Cache cache; + private final Cache cache; private final TerraPlugin main; private String tempID; @@ -115,9 +117,9 @@ public class StructureScript implements Structure { @SuppressWarnings("try") public boolean generate(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { - StructureBuffer buffer = new StructureBuffer(location); - boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); - buffer.paste(); + StructureBuffer buffer = new StructureBuffer(location.toVector()); + boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, location.getWorld(), 0)); + buffer.paste(location.toVector(), location.getWorld()); return level; } } @@ -126,8 +128,8 @@ public class StructureScript implements Structure { @SuppressWarnings("try") public boolean generate(Location location, Chunk chunk, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { - StructureBuffer buffer = computeBuffer(location, random, rotation); - buffer.paste(chunk); + StructureBuffer buffer = computeBuffer(location.toVector(), location.getWorld(), random, rotation); + buffer.paste(location.toVector(), chunk); return buffer.succeeded(); } } @@ -136,16 +138,16 @@ public class StructureScript implements Structure { @SuppressWarnings("try") public boolean test(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { - StructureBuffer buffer = computeBuffer(location, random, rotation); + StructureBuffer buffer = computeBuffer(location.toVector(), location.getWorld(), random, rotation); return buffer.succeeded(); } } - private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { + private StructureBuffer computeBuffer(Vector3 location, World world, Random random, Rotation rotation) { try { return cache.get(location, () -> { StructureBuffer buf = new StructureBuffer(location); - buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, 0))); + buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, world, 0))); return buf; }); } catch(ExecutionException e) { @@ -155,9 +157,9 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") - public boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions) { + public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); } } @@ -165,8 +167,8 @@ public class StructureScript implements Structure { @SuppressWarnings("try") public boolean generateDirect(Location location, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { - DirectBuffer buffer = new DirectBuffer(location); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); + DirectBuffer buffer = new DirectBuffer(location.toVector(), location.getWorld()); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, location.getWorld(), 0)); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java index 40a8ec29f..49b03f90b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.script; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.api.world.World; import java.util.Random; @@ -10,13 +11,15 @@ public class TerraImplementationArguments implements ImplementationArguments { private final Buffer buffer; private final Rotation rotation; private final Random random; + private final World world; private final int recursions; private boolean waterlog = false; - public TerraImplementationArguments(Buffer buffer, Rotation rotation, Random random, int recursions) { + public TerraImplementationArguments(Buffer buffer, Rotation rotation, Random random, World world, int recursions) { this.buffer = buffer; this.rotation = rotation; this.random = random; + this.world = world; this.recursions = recursions; } @@ -43,4 +46,8 @@ public class TerraImplementationArguments implements ImplementationArguments { public void setWaterlog(boolean waterlog) { this.waterlog = waterlog; } + + public World getWorld() { + return world; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index 12ae0a519..6e831a127 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -40,7 +40,7 @@ public abstract class AbstractBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 90f74f799..3862d9c07 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -40,7 +40,7 @@ public class BiomeFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - BiomeProvider grid = main.getWorld(arguments.getBuffer().getOrigin().getWorld()).getBiomeProvider(); + BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); return ((UserDefinedBiome) grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))))).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 33e42a179..4d800941d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -34,7 +34,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getBuffer().getOrigin().getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))).getVector()).getAsString(); + String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 1aa5441ee..05fab488f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -10,6 +10,7 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; @@ -47,12 +48,12 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); - return apply(location, arguments.getBuffer().getOrigin().getWorld()); + return apply(location, arguments.getWorld()); } - private String apply(Location vector, World world) { + private String apply(Vector3 vector, World world) { TerraWorld tw = main.getWorld(world); SamplerCache cache = tw.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 22c378c78..043d3d570 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -42,7 +42,7 @@ public class EntityFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3Impl(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ()).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3Impl(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index c691db385..e678793f8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -31,7 +31,7 @@ public class GetMarkFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + String mark = arguments.getBuffer().getMark(new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return mark == null ? "" : mark; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index 61c2c87e8..b61afb6f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -53,7 +53,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index f8ce4a49e..114534ec4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -42,7 +42,7 @@ public class PullFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); BlockData rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index 3fe7fbb8e..51c994181 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -34,7 +34,7 @@ public class SetMarkFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index 5c6f68306..a39eabb85 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -37,7 +37,7 @@ public class StateFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld())); + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 86e342256..16a9cdae4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -74,7 +74,7 @@ public class StructureFunction implements Function { Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); - return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); + return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index 7ed8d2ce5..6e49e2d9c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -3,6 +3,8 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; import java.util.List; @@ -10,10 +12,9 @@ public class Cell implements BufferedItem { private final List items = new GlueList<>(); private String mark = null; - @Override - public void paste(Location origin) { - items.forEach(item -> item.paste(origin)); + public void paste(Vector3 origin, World world) { + items.forEach(item -> item.paste(origin, world)); } public void add(BufferedItem item) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 2c875bf2f..7db25a4a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -3,6 +3,9 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import java.util.LinkedHashMap; import java.util.Map; @@ -11,31 +14,43 @@ import java.util.Map; * Buffer implementation that directly pastes to the world. */ public class DirectBuffer implements Buffer { - private final Location origin; - private final Map marks = new LinkedHashMap<>(); + private final Vector3 origin; + private final World target; + private final Map marks = new LinkedHashMap<>(); - public DirectBuffer(Location origin) { + public DirectBuffer(Vector3 origin, World target) { this.origin = origin; + this.target = target; } @Override - public Buffer addItem(BufferedItem item, Location location) { - item.paste(origin.clone().add(location)); + public void paste(Vector3 origin, Chunk chunk) { + // no-op + } + + @Override + public void paste(Vector3 origin, World world) { + // no-op + } + + @Override + public Buffer addItem(BufferedItem item, Vector3 location) { + item.paste(origin.clone().add(location), target); return this; } @Override - public Location getOrigin() { + public Vector3 getOrigin() { return origin; } @Override - public String getMark(Location location) { + public String getMark(Vector3 location) { return marks.get(location); } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, Vector3 location) { marks.put(location, mark); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 25b36a466..f3e025d87 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -4,6 +4,8 @@ import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; public class IntermediateBuffer implements Buffer { private final Buffer original; @@ -15,22 +17,32 @@ public class IntermediateBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, Location location) { + public void paste(Vector3 origin, Chunk chunk) { + // no-op + } + + @Override + public void paste(Vector3 origin, World world) { + // no-op + } + + @Override + public Buffer addItem(BufferedItem item, Vector3 location) { return original.addItem(item, location.add(offset)); } @Override - public Location getOrigin() { + public Vector3 getOrigin() { return original.getOrigin().clone().add(offset); } @Override - public String getMark(Location location) { + public String getMark(Vector3 location) { return original.getMark(location.add(offset)); } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, Vector3 location) { original.setMark(mark, location.add(offset)); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 3d89b343d..1c7391c1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -3,42 +3,44 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.LinkedHashMap; import java.util.Map; public class StructureBuffer implements Buffer { - private final Map bufferedItemMap = new LinkedHashMap<>(); - private final Location origin; + private final Map bufferedItemMap = new LinkedHashMap<>(); + private final Vector3 origin; private boolean succeeded; - public StructureBuffer(Location origin) { + public StructureBuffer(Vector3 origin) { this.origin = origin; } - public void paste() { - bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3)))); + public void paste(Vector3 origin, World world) { + bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3), world))); } - public void paste(Chunk chunk) { + public void paste(Vector3 origin, Chunk chunk) { bufferedItemMap.forEach(((location, item) -> { - Location current = origin.clone().add(location); + Vector3 current = origin.clone().add(location); if(FastMath.floorDiv(current.getBlockX(), 16) != chunk.getX() || FastMath.floorDiv(current.getBlockZ(), 16) != chunk.getZ()) return; - item.paste(chunk, current); + item.paste(current, chunk.getWorld()); })); } @Override - public Buffer addItem(BufferedItem item, Location location) { + public Buffer addItem(BufferedItem item, Vector3 location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item); return this; } @Override - public String getMark(Location location) { + public String getMark(Vector3 location) { Cell cell = bufferedItemMap.get(location); if(cell != null) { return cell.getMark(); @@ -47,7 +49,7 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer setMark(String mark, Location location) { + public Buffer setMark(String mark, Vector3 location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark); return this; } @@ -61,7 +63,7 @@ public class StructureBuffer implements Buffer { } @Override - public Location getOrigin() { + public Vector3 getOrigin() { return origin.clone(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 4f17c2273..d75e67c23 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -4,7 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public class BufferedBlock implements BufferedItem { private final BlockData data; @@ -20,13 +21,13 @@ public class BufferedBlock implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(Vector3 origin, World world) { try { - BlockData data = origin.getWorld().getBlockData(origin.toVector()); - if(overwrite || data.isAir()) { - if(waterlog && data instanceof Waterlogged && data.getBlockType().isWater()) - ((Waterlogged) data).setWaterlogged(true); - origin.getWorld().setBlockData(origin.getVector(), data); + BlockData current = world.getBlockData(origin); + if(overwrite || current.isAir()) { + if(waterlog && current instanceof Waterlogged && current.getBlockType().isWater()) + ((Waterlogged) current).setWaterlogged(true); + world.setBlockData(origin, data); } } catch(RuntimeException e) { main.logger().severe("Failed to place block at location " + origin + ": " + e.getMessage()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index e54e2fdf4..8635ac7b4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -6,6 +6,8 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public class BufferedEntity implements BufferedItem { @@ -18,8 +20,8 @@ public class BufferedEntity implements BufferedItem { } @Override - public void paste(Location origin) { - Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type); + public void paste(Vector3 origin, World world) { + Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5).toLocation(world), type); main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getTerraGenerator().getConfigPack(), entity)); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 66ee27305..0f04ac55f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -9,6 +9,8 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public class BufferedLootApplication implements BufferedItem { private final LootTable table; @@ -22,16 +24,16 @@ public class BufferedLootApplication implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(Vector3 origin, World world) { try { - BlockState data = origin.getWorld().getBlockState(origin.getVector()); + BlockState data = world.getBlockState(origin); if(!(data instanceof Container)) { main.logger().severe("Failed to place loot at " + origin + "; block " + data + " is not container."); return; } Container container = (Container) data; - LootPopulateEvent event = new LootPopulateEvent(container, table, origin.getWorld().getTerraGenerator().getConfigPack(), structure); + LootPopulateEvent event = new LootPopulateEvent(container, table, world.getTerraGenerator().getConfigPack(), structure); main.getEventManager().callEvent(event); if(event.isCancelled()) return; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 8bd4f5ffa..6ab6741c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public class BufferedPulledBlock implements BufferedItem { private final BlockData data; @@ -13,11 +14,11 @@ public class BufferedPulledBlock implements BufferedItem { } @Override - public void paste(Location origin) { - Vector3 mutable = origin.toVector(); - while(mutable.getY() > origin.getWorld().getMinHeight()) { - if(!origin.getWorld().getBlockData(mutable).isAir()) { - origin.getWorld().setBlockData(mutable, data); + public void paste(Vector3 origin, World world) { + Vector3 mutable = origin.clone(); + while(mutable.getY() > world.getMinHeight()) { + if(!world.getBlockData(mutable).isAir()) { + world.setBlockData(mutable, data); break; } mutable.subtract(0, 1, 0); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 03c12c040..2ef5c7fa1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -4,6 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; public class BufferedStateManipulator implements BufferedItem { private final TerraPlugin main; @@ -15,9 +17,9 @@ public class BufferedStateManipulator implements BufferedItem { } @Override - public void paste(Location origin) { + public void paste(Vector3 origin, World world) { try { - BlockState state = origin.getWorld().getBlockState(origin.getVector()); + BlockState state = world.getBlockState(origin); state.applyState(data); state.update(false); } catch(Exception e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 3d5d19582..33678c8ba 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -18,6 +18,7 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.vector.Vector3Impl; import java.util.HashMap; @@ -41,8 +42,8 @@ public class SpawnCommand implements CommandTemplate { Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new LocationImpl(player.world(), x, y, z) - ), Rotation.NONE, new FastRandom(), 0), new HashMap<>()); + new Vector3Impl(x, y, z) + ), Rotation.NONE, new FastRandom(), player.world(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 0b6920b0a..7545baa1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -1,6 +1,5 @@ package com.dfsek.terra.world.population.items.tree; -import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.util.ProbabilityCollection; @@ -19,12 +18,14 @@ public class TreeLayer extends PlaceableLayer { @Override public void place(Chunk chunk, Vector2 coords) { - Tree item = layer.get(noise, coords.getX(), coords.getZ()); + int cx = chunk.getX() << 4; + int cz = chunk.getZ() << 4; + Tree item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); Vector3 running = coords.extrude(level.getMax()); for(int ignored : level) { running.subtract(0,1,0); if(item.getSpawnable().contains(chunk.getBlockData(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { - item.plant(running.toLocation(chunk.getWorld()).add(0, 1, 0), PopulationUtil.getRandom(chunk, coords.hashCode())); + item.plant(running.toLocation(chunk.getWorld()).add(cx, 1, cz), PopulationUtil.getRandom(chunk, coords.hashCode())); } } } From ff4cbda2944cfbfb87bc4581d38f09244274f01f Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 24 Jun 2021 23:48:28 -0700 Subject: [PATCH 0063/1529] fix flora issue --- .../com/dfsek/terra/api/structures/structure/buffer/Cell.java | 2 +- .../api/structures/structure/buffer/StructureBuffer.java | 4 ++-- .../dfsek/terra/world/population/items/flora/TerraFlora.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index 6e49e2d9c..42599c05e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -14,7 +14,7 @@ public class Cell implements BufferedItem { @Override public void paste(Vector3 origin, World world) { - items.forEach(item -> item.paste(origin, world)); + items.forEach(item -> item.paste(origin.clone(), world)); } public void add(BufferedItem item) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 1c7391c1f..cae9ea259 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -35,7 +35,7 @@ public class StructureBuffer implements Buffer { @Override public Buffer addItem(BufferedItem item, Vector3 location) { - bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item); + bufferedItemMap.computeIfAbsent(location.clone(), l -> new Cell()).add(item); return this; } @@ -50,7 +50,7 @@ public class StructureBuffer implements Buffer { @Override public Buffer setMark(String mark, Vector3 location) { - bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark); + bufferedItemMap.computeIfAbsent(location.clone(), l -> new Cell()).setMark(mark); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index c6b165f31..c81a729c8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -68,7 +68,7 @@ public class TerraFlora implements Flora { if(y > 255 || y < 0) continue; current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); if((spawnBlacklist != spawnable.contains(chunk.getBlockData(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk) && valid(size, current.clone(), chunk)) { - blocks.add(current); + blocks.add(current.clone()); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } } From da0fb7dd1548aac97342da82d915e72874e51497 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 00:45:24 -0700 Subject: [PATCH 0064/1529] fix world coordinate issues on Fabric --- .../dfsek/terra/api/structure/Structure.java | 3 +- .../java/com/dfsek/terra/api/world/Chunk.java | 8 ++--- .../dfsek/terra/api/world/ChunkAccess.java | 2 +- .../java/com/dfsek/terra/api/world/Tree.java | 3 +- .../structures/script/StructureScript.java | 6 ++-- .../script/functions/BiomeFunction.java | 2 +- .../structure/buffer/IntermediateBuffer.java | 6 ++-- .../generators/DefaultChunkGenerator3D.java | 6 ++-- .../terra/world/population/CavePopulator.java | 21 +++++------ .../population/items/flora/FloraLayer.java | 6 ++-- .../population/items/flora/TerraFlora.java | 12 +++---- .../population/items/ores/VanillaOre.java | 4 +-- .../population/items/tree/TerraTree.java | 7 ++-- .../population/items/tree/TreeLayer.java | 4 +-- .../generator/BukkitChunkGenerator.java | 2 +- .../bukkit/listeners/CommonListener.java | 2 +- .../dfsek/terra/bukkit/world/BukkitChunk.java | 2 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 5 +-- .../ConfiguredFeatureMixin.java | 8 +++-- .../chunk/ChunkRegionMixin.java | 14 ++++---- .../chunk/WorldChunkMixin.java | 4 +-- .../chunk/data/ProtoChunkMixin.java | 2 +- .../world/ChunkRegionMixin.java | 36 ++++++++++--------- .../dfsek/terra/fabric/util/FabricUtil.java | 1 - .../dfsek/terra/platform/DirectChunkData.java | 2 +- 25 files changed, 89 insertions(+), 79 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index aa665ed07..ff07c3a17 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structure; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -29,7 +30,7 @@ public interface Structure { boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); @SuppressWarnings("try") - boolean generateDirect(Location location, Random random, Rotation rotation); + boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation); String getId(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java index 8cb9414d4..89ab2bab3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -9,11 +9,11 @@ public interface Chunk extends ChunkAccess { World getWorld(); - BlockData getBlockData(int x, int y, int z); + BlockData getBlock(int x, int y, int z); - void setBlockData(int x, int y, int z, BlockData data, boolean physics); + void setBlock(int x, int y, int z, BlockData data, boolean physics); - default void setBlockData(int x, int y, int z, BlockData data) { - setBlockData(x, y, z, data, false); + default void setBlock(int x, int y, int z, BlockData data) { + setBlock(x, y, z, data, false); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index 67ea10b98..5ea2940cf 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -27,5 +27,5 @@ public interface ChunkAccess extends Handle { * @param z the z location in the chunk from 0-15 inclusive * @return the data of the block or the BlockData for air if x, y or z are outside the chunk's bounds */ - @NotNull BlockData getBlockData(int x, int y, int z); + @NotNull BlockData getBlock(int x, int y, int z); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 11103cf1c..76c1247fc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -3,12 +3,13 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import java.util.Random; import java.util.Set; public interface Tree { - boolean plant(Location l, Random r); + boolean plant(Vector3 l, World world, Random r); Set getSpawnable(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index b330ebd3b..c87bb827e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -165,10 +165,10 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") - public boolean generateDirect(Location location, Random random, Rotation rotation) { + public boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { - DirectBuffer buffer = new DirectBuffer(location.toVector(), location.getWorld()); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, location.getWorld(), 0)); + DirectBuffer buffer = new DirectBuffer(location, world); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 3862d9c07..4754ae512 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -42,7 +42,7 @@ public class BiomeFunction implements Function { BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); - return ((UserDefinedBiome) grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))))).getID(); + return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index f3e025d87..38a9863ec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -28,7 +28,7 @@ public class IntermediateBuffer implements Buffer { @Override public Buffer addItem(BufferedItem item, Vector3 location) { - return original.addItem(item, location.add(offset)); + return original.addItem(item, location.clone().add(offset)); } @Override @@ -38,12 +38,12 @@ public class IntermediateBuffer implements Buffer { @Override public String getMark(Vector3 location) { - return original.getMark(location.add(offset)); + return original.getMark(location.clone().add(offset)); } @Override public Buffer setMark(String mark, Vector3 location) { - original.setMark(mark, location.add(offset)); + original.setMark(mark, location.clone().add(offset)); return this; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index efc6dcde2..7f01d3d8f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -110,20 +110,20 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); if(paletteLevel == 0 && c.doSlabs() && y < 255) { - prepareBlockPartFloor(data, chunk.getBlockData(x, y + 1, z), chunk, new Vector3Impl(x, y + 1, z), c.getSlabPalettes(), + prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3Impl(x, y + 1, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; } else { if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 66a160b52..fcfefebde 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; @@ -19,10 +18,8 @@ import com.dfsek.terra.config.templates.CarverTemplate; import org.jetbrains.annotations.NotNull; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Random; -import java.util.Set; public class CavePopulator implements TerraBlockPopulator, Chunkified { private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. @@ -49,30 +46,30 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { Map shiftCandidate = new HashMap<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { - BlockData m = chunk.getBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ()); + BlockData m = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); BlockType re = m.getBlockType(); switch(type) { case CENTER: if(template.getInner().canReplace(re)) { - chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case WALL: if(template.getOuter().canReplace(re)) { - chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case TOP: if(template.getTop().canReplace(re)) { - chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case BOTTOM: if(template.getBottom().canReplace(re)) { - chunk.setBlockData(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; @@ -82,12 +79,12 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { for(Map.Entry entry : shiftCandidate.entrySet()) { Vector3 l = entry.getKey(); Vector3 mut = l.clone(); - BlockData orig = chunk.getBlockData(l.getBlockX(), l.getBlockY(), l.getBlockZ()); + BlockData orig = chunk.getBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); do mut.subtract(0, 1, 0); - while(mut.getY() > world.getMinHeight() && chunk.getBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches(orig)); + while(mut.getY() > world.getMinHeight() && chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches(orig)); try { - if(template.getShift().get(entry.getValue().getBlockType()).contains(chunk.getBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { - chunk.setBlockData(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); + if(template.getShift().get(entry.getValue().getBlockType()).contains(chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { + chunk.setBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); } } catch(NullPointerException ignored) { } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index 7ebcc966e..77544cde3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -20,7 +20,9 @@ public class FloraLayer extends PlaceableLayer { @Override public void place(Chunk chunk, Vector2 coords) { - Flora item = layer.get(noise, (chunk.getX() << 4) + coords.getX(), (chunk.getZ() << 4) + coords.getZ()); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.toLocation(chunk.getWorld()))); + int cx = chunk.getX() << 4; + int cz = chunk.getZ() << 4; + Flora item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.toLocation(chunk.getWorld()).add(cx, 0, cz))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index c81a729c8..9692c12d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -67,7 +67,7 @@ public class TerraFlora implements Flora { for(int y : range) { if(y > 255 || y < 0) continue; current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); - if((spawnBlacklist != spawnable.contains(chunk.getBlockData(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk) && valid(size, current.clone(), chunk)) { + if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk) && valid(size, current.clone(), chunk)) { blocks.add(current.clone()); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } @@ -79,17 +79,17 @@ public class TerraFlora implements Flora { for(int i = 0; i < size; i++) { // Down if ceiling, up if floor if(block.getY() + 1 > 255 || block.getY() < 0) return false; block.add(0, ceiling ? -1 : 1, 0); - if(!replaceable.contains(chunk.getBlockData(block.getBlockX(), block.getBlockY(), block.getBlockZ()).getBlockType())) return false; + if(!replaceable.contains(chunk.getBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ()).getBlockType())) return false; } return true; } private boolean isIrrigated(Vector3 b, Chunk chunk) { if(irrigable == null) return true; - return irrigable.contains(chunk.getBlockData(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(chunk.getBlockData(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(chunk.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) - || irrigable.contains(chunk.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); + return irrigable.contains(chunk.getBlock(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(chunk.getBlock(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(chunk.getBlock(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) + || irrigable.contains(chunk.getBlock(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 9cba1f427..b4e22b67c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -68,9 +68,9 @@ public class VanillaOre extends Ore { double d15 = (z + 0.5D - (d3 + (d4 - d3) * iFactor)) / (d11 / 2.0D); if(x > 15 || z > 15 || y > 255 || x < 0 || z < 0 || y < 0) continue; - BlockType type = chunk.getBlockData(x, y, z).getBlockType(); + BlockType type = chunk.getBlock(x, y, z).getBlockType(); if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(type)) { - chunk.setBlockData(x, y, z, getMaterial(type), isApplyGravity()); + chunk.setBlock(x, y, z, getMaterial(type), isApplyGravity()); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index f37b84283..50c367c85 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -4,8 +4,9 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import java.util.Random; @@ -21,8 +22,8 @@ public class TerraTree implements Tree { } @Override - public synchronized boolean plant(Location location, Random random) { - return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); + public synchronized boolean plant(Vector3 location, World world, Random random) { + return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 7545baa1f..878c9dd15 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -24,8 +24,8 @@ public class TreeLayer extends PlaceableLayer { Vector3 running = coords.extrude(level.getMax()); for(int ignored : level) { running.subtract(0,1,0); - if(item.getSpawnable().contains(chunk.getBlockData(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { - item.plant(running.toLocation(chunk.getWorld()).add(cx, 1, cz), PopulationUtil.getRandom(chunk, coords.hashCode())); + if(item.getSpawnable().contains(chunk.getBlock(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { + item.plant(running.clone().add(cx, 1, cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); } } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java index 409288703..ad6cb7c4b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java @@ -44,7 +44,7 @@ public class BukkitChunkGenerator implements com.dfsek.terra.api.world.generator @Override - public @NotNull BlockData getBlockData(int x, int y, int z) { + public @NotNull BlockData getBlock(int x, int y, int z) { return BukkitBlockData.newInstance(delegate.getBlockData(x, y, z)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index e7b174d04..87cc695ec 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -54,7 +54,7 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) + if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), , new FastRandom())) block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index 78b94176f..77e0eda37 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -45,7 +45,7 @@ public class BukkitChunk implements Chunk { } @Override - public @NotNull BlockData getBlockData(int x, int y, int z) { + public @NotNull BlockData getBlock(int x, int y, int z) { return getBlock(x, y, z).getBlockData(); } } 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 25651dccb..07d7af97e 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,9 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import org.bukkit.TreeType; import java.util.Locale; @@ -43,7 +44,7 @@ public class BukkitTree implements Tree { @Override @SuppressWarnings("try") - public boolean plant(Location l, Random r) { + public boolean plant(Vector3 l, World world, Random r) { try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index d69cd9c36..779897bd8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -4,7 +4,9 @@ import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; @@ -27,11 +29,11 @@ public abstract class ConfiguredFeatureMixin { public abstract boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos); @SuppressWarnings({"ConstantConditions", "try"}) - public boolean terra$plant(Location l, Random r) { + public boolean terra$plant(Vector3 l, World world, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { - StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) l.getWorld()); - ChunkGenerator generatorWrapper = (ChunkGenerator) l.getWorld().getGenerator(); + StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) world); + ChunkGenerator generatorWrapper = (ChunkGenerator) world.getGenerator(); return generate(fabricWorldAccess, generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index fccf18bd9..6ccb02e5c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -11,33 +11,35 @@ import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; @Mixin(ChunkRegion.class) -@Implements(@Interface(iface = Chunk.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = Chunk.class, prefix = "terraChunk$", remap = Interface.Remap.NONE)) public abstract class ChunkRegionMixin { @Final @Shadow private ChunkPos centerPos; - public int terra$getX() { + public int terraChunk$getX() { return centerPos.x; } - public int terra$getZ() { + public int terraChunk$getZ() { return centerPos.z; } - public World terra$getWorld() { + public World terraChunk$getWorld() { return (World) this; } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull BlockData terraChunk$getBlock(int x, int y, int z) { return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)))); } - public void terra$setBlockData(int x, int y, int z, @NotNull BlockData blockData, boolean physics) { + public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockData blockData, boolean physics) { ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockData) blockData).getHandle(), 0); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index b58b5b968..e03715e5a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -43,11 +43,11 @@ public abstract class WorldChunkMixin { return (World) world; } - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull BlockData terra$getBlock(int x, int y, int z) { return new FabricBlockData(getBlockState(new BlockPos(x, y, z))); } - public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void terra$setBlock(int x, int y, int z, BlockData data, boolean physics) { setBlockState(new BlockPos(x, y, z), ((FabricBlockData) data).getHandle(), false); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 3e2d2ed9f..49d416385 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -19,7 +19,7 @@ public abstract class ProtoChunkMixin { @Shadow public abstract BlockState getBlockState(BlockPos pos); - public @NotNull BlockData terra$getBlockData(int x, int y, int z) { + public @NotNull BlockData terra$getBlock(int x, int y, int z) { return new FabricBlockData(getBlockState(new BlockPos(x, y, z))); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index b772459e3..73c6dbb8d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -27,9 +27,10 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; @Mixin(ChunkRegion.class) -@Implements(@Interface(iface = World.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Implements(@Interface(iface = World.class, prefix = "terraWorld$", remap = Interface.Remap.NONE)) public abstract class ChunkRegionMixin { @Shadow @Final @@ -45,36 +46,39 @@ public abstract class ChunkRegionMixin { @Shadow public abstract TickScheduler getFluidTickScheduler(); - public int terra$getMaxHeight() { + public int terraWorld$getMaxHeight() { return (((ChunkRegion) (Object) this).getBottomY()) + ((ChunkRegion) (Object) this).getHeight(); } @SuppressWarnings("deprecation") - public ChunkGenerator terra$getGenerator() { + public ChunkGenerator terraWorld$getGenerator() { return (ChunkGenerator) ((ChunkRegion) (Object) this).toServerWorld().getChunkManager().getChunkGenerator(); } - public Chunk terra$getChunkAt(int x, int z) { + public Chunk terraWorld$getChunkAt(int x, int z) { return (Chunk) ((ChunkRegion) (Object) this).getChunk(x, z); } - public com.dfsek.terra.api.block.state.BlockState terra$getBlockState(int x, int y, int z) { + public com.dfsek.terra.api.block.state.BlockState terraWorld$getBlockState(int x, int y, int z) { return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); } @SuppressWarnings("deprecation") - public Entity terra$spawnEntity(Location location, EntityType entityType) { + public Entity terraWorld$spawnEntity(Location location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ChunkRegion) (Object) this).toServerWorld()); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ChunkRegion) (Object) this).spawnEntity(entity); return (Entity) entity; } - public BlockData terra$getBlockData(int x, int y, int z) { - return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x, y, z))); + @Intrinsic(displace = true) + public BlockData terraWorld$getBlockData(int x, int y, int z) { + BlockPos pos = new BlockPos(x, y, z); + return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(pos)); } - public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + @Intrinsic(displace = true) + public void terraWorld$setBlockData(int x, int y, int z, BlockData data, boolean physics) { BlockPos pos = new BlockPos(x, y, z); ((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); if(physics && ((FabricBlockData) data).getHandle().getBlock() instanceof FluidBlock) { @@ -83,25 +87,25 @@ public abstract class ChunkRegionMixin { } @Intrinsic - public long terra$getSeed() { + public long terraWorld$getSeed() { return seed; } - public int terra$getMinHeight() { + public int terraWorld$getMinHeight() { return ((ChunkRegion) (Object) this).getBottomY(); } @Intrinsic - public Object terra$getHandle() { + public Object terraWorld$getHandle() { return this; } - public boolean terra$isTerraWorld() { - return terra$getGenerator() instanceof GeneratorWrapper; + public boolean terraWorld$isTerraWorld() { + return terraWorld$getGenerator() instanceof GeneratorWrapper; } - public TerraChunkGenerator terra$getTerraGenerator() { - return ((FabricChunkGeneratorWrapper) terra$getGenerator()).getHandle(); + public TerraChunkGenerator terraWorld$getTerraGenerator() { + return ((FabricChunkGeneratorWrapper) terraWorld$getGenerator()).getHandle(); } /** diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index c357ef4d2..44dc56730 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -58,7 +58,6 @@ public final class FabricUtil { TerraFabricPlugin.FabricAddon fabricAddon = TerraFabricPlugin.getInstance().getFabricAddon(); Registry biomeRegistry = registryManager.get(Registry.BIOME_KEY); - System.out.println(new ArrayList<>(biome.getVanillaBiomes().getContents())); Biome vanilla = ((ProtoBiome) (new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0))).get(biomeRegistry); GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index 0b1764b21..cf5c97738 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -38,7 +38,7 @@ public class DirectChunkData implements ChunkData, com.dfsek.terra.api.world.Chu } @Override - public @NotNull BlockData getBlockData(int x, int y, int z) { + public @NotNull BlockData getBlock(int x, int y, int z) { CompoundTag tag = delegate.getBlockStateAt(x, y, z); if(tag == null) return new Data("minecraft:air"); return new Data(tag.getString("Name")); From cbb746c752c95c39d83ffc08c8b0c74431c8225b Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 06:30:29 -0700 Subject: [PATCH 0065/1529] fix bukkit impl --- .../population/items/flora/TerraFlora.java | 18 ++-- .../bukkit/listeners/CommonListener.java | 3 +- .../dfsek/terra/bukkit/world/BukkitChunk.java | 14 ++-- .../dfsek/terra/bukkit/world/BukkitTree.java | 2 +- .../dfsek/terra/bukkit/world/BukkitWorld.java | 23 +++-- .../terra/bukkit/world/block/BukkitBlock.java | 84 ------------------- .../world/block/state/BukkitBlockState.java | 8 +- 7 files changed, 40 insertions(+), 112 deletions(-) delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 9692c12d4..fe240ee82 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -64,10 +64,12 @@ public class TerraFlora implements Flora { int size = floraPalette.getSize(); Vector3 current = new Vector3Impl(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); List blocks = new ArrayList<>(); + int cx = chunk.getX() << 4; + int cz = chunk.getZ() << 4; for(int y : range) { if(y > 255 || y < 0) continue; current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); - if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk) && valid(size, current.clone(), chunk)) { + if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk.getWorld()) && valid(size, current.clone().add(cx, 0, cz), chunk.getWorld())) { blocks.add(current.clone()); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } @@ -75,21 +77,21 @@ public class TerraFlora implements Flora { return blocks; } - private boolean valid(int size, Vector3 block, Chunk chunk) { + private boolean valid(int size, Vector3 block, World world) { for(int i = 0; i < size; i++) { // Down if ceiling, up if floor if(block.getY() + 1 > 255 || block.getY() < 0) return false; block.add(0, ceiling ? -1 : 1, 0); - if(!replaceable.contains(chunk.getBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ()).getBlockType())) return false; + if(!replaceable.contains(world.getBlockData(block).getBlockType())) return false; } return true; } - private boolean isIrrigated(Vector3 b, Chunk chunk) { + private boolean isIrrigated(Vector3 b, World world) { if(irrigable == null) return true; - return irrigable.contains(chunk.getBlock(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(chunk.getBlock(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(chunk.getBlock(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) - || irrigable.contains(chunk.getBlock(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); + return irrigable.contains(world.getBlockData(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 87cc695ec..b165e5e1c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -10,6 +10,7 @@ import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -54,7 +55,7 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new LocationImpl(bukkit, location.getX(), location.getY(), location.getZ()), , new FastRandom())) + if(!tree.plant(new Vector3Impl(location.getX(), location.getY(), location.getZ()), BukkitAdapter.adapt(e.getWorld()), new FastRandom())) block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index 77e0eda37..63c780e7c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -1,10 +1,8 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.bukkit.world.block.BukkitBlock; import org.jetbrains.annotations.NotNull; public class BukkitChunk implements Chunk { @@ -29,11 +27,6 @@ public class BukkitChunk implements Chunk { return BukkitAdapter.adapt(delegate.getWorld()); } - @Override - public Block getBlock(int x, int y, int z) { - return new BukkitBlock(delegate.getBlock(x, y, z)); - } - @Override public org.bukkit.Chunk getHandle() { return delegate; @@ -46,6 +39,11 @@ public class BukkitChunk implements Chunk { @Override public @NotNull BlockData getBlock(int x, int y, int z) { - return getBlock(x, y, z).getBlockData(); + return BukkitAdapter.adapt(delegate.getBlock(x, y, z).getBlockData()); + } + + @Override + public void setBlock(int x, int y, int z, BlockData data, boolean physics) { + delegate.getBlock(x, y, z).setBlockData(BukkitAdapter.adapt(data), physics); } } 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 07d7af97e..1ecb29409 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 @@ -46,7 +46,7 @@ public class BukkitTree implements Tree { @SuppressWarnings("try") public boolean plant(Vector3 l, World world, Random r) { try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { - return ((BukkitWorld) l.getWorld()).getHandle().generateTree(BukkitAdapter.adapt(l), delegate); + return BukkitAdapter.adapt(world).generateTree(BukkitAdapter.adapt(l).toLocation(BukkitAdapter.adapt(world)), delegate); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index f3c4746eb..4982cc345 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; @@ -9,7 +10,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator; -import com.dfsek.terra.bukkit.world.block.BukkitBlock; +import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import java.io.File; @@ -54,13 +55,23 @@ public class BukkitWorld implements World { return BukkitAdapter.adapt(delegate.getChunkAt(x, z)); } - public File getWorldFolder() { - return delegate.getWorldFolder(); + @Override + public BlockData getBlockData(int x, int y, int z) { + return BukkitAdapter.adapt(delegate.getBlockAt(x, y, z).getBlockData()); } @Override - public Block getBlockAt(int x, int y, int z) { - return new BukkitBlock(delegate.getBlockAt(x, y, z)); + public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + delegate.getBlockAt(x, y, z).setBlockData(BukkitAdapter.adapt(data), physics); + } + + @Override + public BlockState getBlockState(int x, int y, int z) { + return BukkitBlockState.newInstance(delegate.getBlockAt(x, y, z).getState()); + } + + public File getWorldFolder() { + return delegate.getWorldFolder(); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java deleted file mode 100644 index 2d9c29b41..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.dfsek.terra.bukkit.world.block; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; -import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; -import com.dfsek.terra.vector.LocationImpl; - -public class BukkitBlock implements Block { - private final org.bukkit.block.Block delegate; - - public BukkitBlock(org.bukkit.block.Block delegate) { - this.delegate = delegate; - } - - @Override - public void setBlockData(BlockData data, boolean physics) { - delegate.setBlockData(((BukkitBlockData) data).getHandle(), physics); - } - - @Override - public BlockData getBlockData() { - return BukkitBlockData.newInstance(delegate.getBlockData()); - } - - @Override - public BlockState getState() { - return BukkitBlockState.newInstance(delegate.getState()); - } - - @Override - public Block getRelative(BlockFace face) { - return new BukkitBlock(delegate.getRelative(BukkitAdapter.adapt(face))); - } - - @Override - public Block getRelative(BlockFace face, int len) { - return new BukkitBlock(delegate.getRelative(BukkitAdapter.adapt(face), len)); - } - - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - @Override - public LocationImpl getLocation() { - return BukkitAdapter.adapt(delegate.getLocation()); - } - - @Override - public BlockType getType() { - return BukkitAdapter.adapt(delegate.getType()); - } - - @Override - public int getX() { - return delegate.getX(); - } - - @Override - public int getZ() { - return delegate.getZ(); - } - - @Override - public int getY() { - return delegate.getY(); - } - - @Override - public boolean isPassable() { - return delegate.isPassable(); - } - - @Override - public org.bukkit.block.Block getHandle() { - return delegate; - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java index cd8127c09..9351057f8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.bukkit.world.block.BukkitBlock; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; @@ -29,8 +29,8 @@ public class BukkitBlockState implements BlockState { } @Override - public Block getBlock() { - return new BukkitBlock(delegate.getBlock()); + public Vector3 getPosition() { + return BukkitAdapter.adapt(delegate.getBlock().getLocation().toVector()); } @Override From 4306b179bb58c6400f730d3fde08cb985926cfc0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 07:57:17 -0700 Subject: [PATCH 0066/1529] fix Vector3Impl#equals --- .../src/main/java/com/dfsek/terra/vector/Vector3Impl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index 7d3e911d0..456f195b7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -257,9 +257,9 @@ public class Vector3Impl implements Vector3 { */ @Override public boolean equals(Object obj) { - if(!(obj instanceof Vector3Impl)) return false; - Vector3Impl other = (Vector3Impl) obj; - return MathUtil.equals(x, other.x) && MathUtil.equals(y, other.y) && MathUtil.equals(x, other.z); + if(!(obj instanceof Vector3)) return false; + Vector3 other = (Vector3) obj; + return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); } @Override From 56029851f0f7332c91313a8d9e8d9c71e71fbb1d Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 13:27:56 -0700 Subject: [PATCH 0067/1529] begin removing Location --- .../dfsek/terra/api/handle/WorldHandle.java | 3 ++- .../dfsek/terra/api/structure/Structure.java | 8 ++++---- .../com/dfsek/terra/api/vector/Vector3.java | 2 +- .../java/com/dfsek/terra/api/world/Flora.java | 3 +-- .../java/com/dfsek/terra/api/world/World.java | 4 ++-- .../world/biome/generation/BiomeProvider.java | 4 ---- .../structures/script/StructureScript.java | 19 +++++++++---------- .../buffer/items/BufferedEntity.java | 2 +- .../api/world/locate/AsyncBiomeFinder.java | 5 +++-- .../api/world/locate/AsyncFeatureFinder.java | 4 ++-- .../world/locate/AsyncStructureFinder.java | 9 +++++---- .../com/dfsek/terra/carving/CarverCache.java | 2 +- .../commands/biome/BiomeLocateCommand.java | 2 +- .../structure/StructureExportCommand.java | 13 +++++++------ .../structure/StructureLoadCommand.java | 4 ++-- .../structure/StructureLocateCommand.java | 2 +- .../dfsek/terra/config/dummy/DummyWorld.java | 4 ++-- .../world/population/StructurePopulator.java | 5 +++-- .../population/items/flora/FloraLayer.java | 2 +- .../population/items/flora/TerraFlora.java | 9 ++++----- .../terra/bukkit/command/FixChunkCommand.java | 2 +- .../bukkit/handles/BukkitWorldHandle.java | 4 ++-- .../terra/bukkit/listeners/PaperListener.java | 4 ++-- .../bukkit/listeners/SpigotListener.java | 4 ++-- .../dfsek/terra/bukkit/world/BukkitWorld.java | 6 +++--- .../FabricChunkGeneratorWrapper.java | 2 +- .../fabric/handle/FabricWorldHandle.java | 4 ++-- .../world/ChunkRegionMixin.java | 3 ++- .../world/ServerWorldMixin.java | 3 ++- .../terra/fabric/util/WorldEditUtil.java | 8 +++++--- .../com/dfsek/terra/platform/RawTree.java | 4 +++- 31 files changed, 77 insertions(+), 73 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 43a5e0357..a208a98ff 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; /** * Interface to be implemented for world manipulation. @@ -20,7 +21,7 @@ public interface WorldHandle { * @param player Player to get locations for * @return Pair of locations. */ - default Pair getSelectedLocation(Player player) { + default Pair getSelectedLocation(Player player) { throw new UnsupportedOperationException("Cannot get selection on this platform."); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index ff07c3a17..488e83dd1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structure; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -14,17 +13,18 @@ public interface Structure { * Paste the structure at a location * * @param location Location to paste structure + * @param world * @param rotation Rotation of structure * @return Whether generation was successful */ @SuppressWarnings("try") - boolean generate(Location location, Random random, Rotation rotation); + boolean generate(Vector3 location, World world, Random random, Rotation rotation); @SuppressWarnings("try") - boolean generate(Location location, Chunk chunk, Random random, Rotation rotation); + boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation); @SuppressWarnings("try") - boolean test(Location location, Random random, Rotation rotation); + boolean test(Vector3 location, World world, Random random, Rotation rotation); @SuppressWarnings("try") boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index 4acfa2ef1..3b041b8d1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -163,5 +163,5 @@ public interface Vector3 extends Cloneable { Vector3 subtract(Vector3 end); - public Vector3 clone(); + Vector3 clone(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java index 9468e4bb4..a833c5af4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import java.util.List; @@ -9,5 +8,5 @@ import java.util.List; public interface Flora { List getValidSpawnsAt(Chunk chunk, int x, int z, Range check); - boolean plant(Location l); + boolean plant(Vector3 l, World world); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 93aed3e9a..11b0bb5e3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -20,7 +20,7 @@ public interface World extends Handle { Chunk getChunkAt(int x, int z); - default Chunk getChunkAt(Location location) { + default Chunk getChunkAt(Vector3 location) { return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4); } @@ -50,7 +50,7 @@ public interface World extends Handle { return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ()); } - Entity spawnEntity(Location location, EntityType entityType); + Entity spawnEntity(Vector3 location, EntityType entityType); int getMinHeight(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index 028eb2422..e5bb0587f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -16,10 +16,6 @@ public interface BiomeProvider { return getBiome(vector3.getBlockX(), vector3.getBlockZ()); } - default TerraBiome getBiome(Location location) { - return getBiome(location.getBlockX(), location.getBlockZ()); - } - interface BiomeProviderBuilder { BiomeProvider build(long seed); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index c87bb827e..9d2a301a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -32,7 +32,6 @@ import com.dfsek.terra.api.structures.script.builders.UnaryStringFunctionBuilder import com.dfsek.terra.api.structures.script.builders.ZeroArgFunctionBuilder; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -115,30 +114,30 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") - public boolean generate(Location location, Random random, Rotation rotation) { + public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { - StructureBuffer buffer = new StructureBuffer(location.toVector()); - boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, location.getWorld(), 0)); - buffer.paste(location.toVector(), location.getWorld()); + StructureBuffer buffer = new StructureBuffer(location); + boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); + buffer.paste(location, world); return level; } } @Override @SuppressWarnings("try") - public boolean generate(Location location, Chunk chunk, Random random, Rotation rotation) { + public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { - StructureBuffer buffer = computeBuffer(location.toVector(), location.getWorld(), random, rotation); - buffer.paste(location.toVector(), chunk); + StructureBuffer buffer = computeBuffer(location, world, random, rotation); + buffer.paste(location, chunk); return buffer.succeeded(); } } @Override @SuppressWarnings("try") - public boolean test(Location location, Random random, Rotation rotation) { + public boolean test(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { - StructureBuffer buffer = computeBuffer(location.toVector(), location.getWorld(), random, rotation); + StructureBuffer buffer = computeBuffer(location, world, random, rotation); return buffer.succeeded(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 8635ac7b4..1cb6303c6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -21,7 +21,7 @@ public class BufferedEntity implements BufferedItem { @Override public void paste(Vector3 origin, World world) { - Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5).toLocation(world), type); + Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getTerraGenerator().getConfigPack(), entity)); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index d5355509b..995a49059 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import org.jetbrains.annotations.NotNull; @@ -14,8 +15,8 @@ import java.util.function.Consumer; */ public class AsyncBiomeFinder extends AsyncFeatureFinder { - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { - super(provider, target, origin, startRadius, maxRadius, callback, main); + public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + super(provider, target, origin, world, startRadius, maxRadius, callback, main); } /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index f361db044..d4c3ea248 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -22,7 +22,7 @@ public abstract class AsyncFeatureFinder implements Runnable { protected int searchSize = 1; protected final TerraPlugin main; - public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { this.provider = provider; this.target = target; this.main = main; @@ -30,7 +30,7 @@ public abstract class AsyncFeatureFinder implements Runnable { this.maxRadius = maxRadius; this.centerX = origin.getBlockX(); this.centerZ = origin.getBlockZ(); - this.world = origin.getWorld(); + this.world = world; this.callback = callback; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index a191ff87c..255a49dd1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.world.population.items.TerraStructure; @@ -16,8 +17,8 @@ import java.util.Random; import java.util.function.Consumer; public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { - super(provider, target, origin, startRadius, maxRadius, callback, main); + public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + super(provider, target, origin, world, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } @@ -28,9 +29,9 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { @Override public boolean isValid(int x, int z, TerraStructure target) { - Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); + Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); + return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index a31dc9aa6..980ddb166 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -41,7 +41,7 @@ public class CarverCache { List points = new GlueList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); - TerraBiome biome = provider.getBiome(carving.getRunning().toLocation(w)); + TerraBiome biome = provider.getBiome(carving.getRunning()); if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop if we enter a biome this carver is not present in return Collections.emptyList(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index 17b1f5ba9..95cb792cb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -64,7 +64,7 @@ public class BiomeLocateCommand implements CommandTemplate { Player player = (Player) sender; - new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> { + new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index b181d6423..e2ecab03e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -16,6 +16,7 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; import java.io.BufferedWriter; @@ -45,10 +46,10 @@ public class StructureExportCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - Pair l = main.getWorldHandle().getSelectedLocation(player); + Pair l = main.getWorldHandle().getSelectedLocation(player); - Location l1 = l.getLeft(); - Location l2 = l.getRight(); + Vector3 l1 = l.getLeft(); + Vector3 l2 = l.getRight(); StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); @@ -59,7 +60,7 @@ public class StructureExportCommand implements CommandTemplate { for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - BlockState state = l1.getWorld().getBlockState(x, y, z); + BlockState state = player.world().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]") && sign.getLine(1).equals("[CENTER]")) { @@ -76,9 +77,9 @@ public class StructureExportCommand implements CommandTemplate { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - BlockData data = l1.getWorld().getBlockData(x, y, z); + BlockData data = player.world().getBlockData(x, y, z); if(data.isStructureVoid()) continue; - BlockState state = l1.getWorld().getBlockState(x, y, z); + BlockState state = player.world().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java index 0a2d30cce..e8de3b413 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java @@ -79,9 +79,9 @@ public class StructureLoadCommand implements CommandTemplate { return; } if(this.chunk) { - script.generate(player.position().toLocation(player.world()), player.world().getChunkAt(player.position().toLocation(player.world())), random, r); + script.generate(player.position(), player.world(), player.world().getChunkAt(player.position()), random, r); } else { - script.generate(player.position().toLocation(player.world()), random, r); + script.generate(player.position(), player.world(), random, r); } long l = System.nanoTime() - t; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index 1604d2b0d..da1d094d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -62,7 +62,7 @@ public class StructureLocateCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())).toLocation(player.world()), 0, radius, location -> { + new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 2ca34ec03..c8496ba1d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; @@ -52,7 +52,7 @@ public class DummyWorld implements World { } @Override - public Entity spawnEntity(Location location, EntityType entityType) { + public Entity spawnEntity(Vector3 location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 270895868..4b3b56fdd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -40,12 +41,12 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { BiomeProvider provider = tw.getBiomeProvider(); WorldConfig config = tw.getConfig(); for(TerraStructure conf : config.getRegistry(TerraStructure.class).entries()) { - Location spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); + Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); + conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index 77544cde3..942809705 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -23,6 +23,6 @@ public class FloraLayer extends PlaceableLayer { int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; Flora item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.toLocation(chunk.getWorld()).add(cx, 0, cz))); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index fe240ee82..8a1f0529d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -10,7 +10,6 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; @@ -69,7 +68,7 @@ public class TerraFlora implements Flora { for(int y : range) { if(y > 255 || y < 0) continue; current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); - if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.add(0, irrigableOffset, 0), chunk.getWorld()) && valid(size, current.clone().add(cx, 0, cz), chunk.getWorld())) { + if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.clone().add(cx, irrigableOffset, cz), chunk.getWorld()) && valid(size, current.clone().add(cx, 0, cz), chunk.getWorld())) { blocks.add(current.clone()); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } @@ -96,12 +95,12 @@ public class TerraFlora implements Flora { @Override - public boolean plant(Location location) { + public boolean plant(Vector3 location, World world) { boolean doRotation = testRotation.size() > 0; int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; - List faces = doRotation ? getFaces(location.clone().add(0, c, 0).toVector(), location.getWorld()) : new GlueList<>(); + List faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : new GlueList<>(); if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor @@ -119,7 +118,7 @@ public class TerraFlora implements Flora { ((Rotatable) data).setRotation(oneFace); } } - location.getWorld().setBlockData(location.toVector().add(0, i + c, 0), data, physics); + world.setBlockData(location.clone().add(0, i + c, 0), data, physics); } return true; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java index fe65f5933..b50cb68a5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java @@ -15,6 +15,6 @@ public class FixChunkCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - BukkitChunkGeneratorWrapper.fixChunk(player.world().getChunkAt(player.position().toLocation(player.world()))); + BukkitChunkGeneratorWrapper.fixChunk(player.world().getChunkAt(player.position())); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index c8451d0c6..ff04089f5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; @@ -26,7 +26,7 @@ public class BukkitWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); return Pair.of(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index ba3103645..51e887b24 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -24,9 +24,9 @@ public class PaperListener implements Listener { TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld())); TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); if(config != null) { - AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin()), 0, 500, location -> { + AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin().toVector()), tw.getWorld(), 0, 500, location -> { if(location != null) - e.setResult(BukkitAdapter.adapt(location.toLocation(BukkitAdapter.adapt(e.getWorld())))); + e.setResult(BukkitAdapter.adapt(location).toLocation(e.getWorld())); main.getDebugLogger().info("Location: " + location); }, main); finder.run(); // Do this synchronously. diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 04b43a07d..174836681 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -40,9 +40,9 @@ public class SpigotListener implements Listener { TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get("STRONGHOLD")); if(config != null) { main.getDebugLogger().info("Overriding Ender Signal..."); - AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> { + AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation().toVector()), tw.getWorld(), 0, 500, location -> { if(location != null) - signal.setTargetLocation(BukkitAdapter.adapt(location.toLocation(BukkitAdapter.adapt(signal.getWorld())))); + signal.setTargetLocation(BukkitAdapter.adapt(location).toLocation(e.getLocation().getWorld())); main.getDebugLogger().info("Location: " + location); }, main); finder.run(); // Do this synchronously so eye doesn't change direction several ticks after spawning. diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 4982cc345..eb38f9532 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; @@ -75,8 +75,8 @@ public class BukkitWorld implements World { } @Override - public Entity spawnEntity(Location location, EntityType entityType) { - return new BukkitEntity(delegate.spawnEntity(BukkitAdapter.adapt(location), ((BukkitEntityType) entityType).getHandle())); + public Entity spawnEntity(Vector3 location, EntityType entityType) { + return new BukkitEntity(delegate.spawnEntity(BukkitAdapter.adapt(location).toLocation(delegate), ((BukkitEntityType) entityType).getHandle())); } @Override 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 00a3c0990..8dca5d0e5 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 @@ -118,7 +118,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getLocatable().get(name)); if(located != null) { CompletableFuture result = new CompletableFuture<>(); - AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center).toLocation((World) world), 0, 500, location -> { + AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center), terraWorld.getWorld(), 0, 500, location -> { result.complete(FabricAdapter.adapt(location)); }, TerraFabricPlugin.getInstance()); finder.run(); // Do this synchronously. diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 09223ecf7..0cb9f0b11 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.fabric.util.WorldEditUtil; @@ -39,7 +39,7 @@ public class FabricWorldHandle implements WorldHandle { } @Override - public Pair getSelectedLocation(Player player) { + public Pair getSelectedLocation(Player player) { try { Class.forName("com.sk89q.worldedit.WorldEdit"); } catch(ClassNotFoundException e) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 73c6dbb8d..06658209f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; @@ -64,7 +65,7 @@ public abstract class ChunkRegionMixin { } @SuppressWarnings("deprecation") - public Entity terraWorld$spawnEntity(Location location, EntityType entityType) { + public Entity terraWorld$spawnEntity(Vector3 location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ChunkRegion) (Object) this).toServerWorld()); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ChunkRegion) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 687761c71..687661c55 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; @@ -53,7 +54,7 @@ public abstract class ServerWorldMixin { ((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); } - public Entity terra$spawnEntity(Location location, EntityType entityType) { + public Entity terra$spawnEntity(Vector3 location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ServerWorld) (Object) this)); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ServerWorld) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 0169dbd8b..b9788e576 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -3,7 +3,9 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.LocationImpl; +import com.dfsek.terra.vector.Vector3Impl; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.math.BlockVector3; @@ -12,7 +14,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.World; public final class WorldEditUtil { - public static Pair getSelection(Player player) { + public static Pair getSelection(Player player) { WorldEdit worldEdit = WorldEdit.getInstance(); try { Region selection = worldEdit.getSessionManager() @@ -20,8 +22,8 @@ public final class WorldEditUtil { .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world())); BlockVector3 min = selection.getMinimumPoint(); BlockVector3 max = selection.getMaximumPoint(); - LocationImpl l1 = new LocationImpl(player.world(), min.getBlockX(), min.getBlockY(), min.getBlockZ()); - LocationImpl l2 = new LocationImpl(player.world(), max.getBlockX(), max.getBlockY(), max.getBlockZ()); + Vector3 l1 = new Vector3Impl(min.getBlockX(), min.getBlockY(), min.getBlockZ()); + Vector3 l2 = new Vector3Impl(max.getBlockX(), max.getBlockY(), max.getBlockZ()); return Pair.of(l1, l2); } catch(IncompleteRegionException e) { throw new IllegalStateException("No selection has been made", e); diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index e09d5d7d0..8c21508b1 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,14 +1,16 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.vector.LocationImpl; import java.util.Random; public class RawTree implements Tree { // TODO: implement @Override - public boolean plant(LocationImpl l, Random r) { + public boolean plant(Vector3 l, World world, Random r) { return false; } From 966e1eb2a66612e748f266f983596919b3176504 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 13:33:43 -0700 Subject: [PATCH 0068/1529] imports --- .../java/com/dfsek/terra/api/handle/WorldHandle.java | 1 - .../com/dfsek/terra/api/structure/buffer/Buffer.java | 1 - .../src/main/java/com/dfsek/terra/api/world/Tree.java | 1 - .../main/java/com/dfsek/terra/api/world/World.java | 1 - .../api/world/biome/generation/BiomeProvider.java | 1 - .../structures/script/functions/BiomeFunction.java | 1 - .../script/functions/CheckBlockFunction.java | 2 +- .../structures/script/functions/CheckFunction.java | 1 - .../terra/api/structures/structure/buffer/Cell.java | 1 - .../api/structures/structure/buffer/DirectBuffer.java | 1 - .../structure/buffer/IntermediateBuffer.java | 1 - .../structures/structure/buffer/StructureBuffer.java | 1 - .../structure/buffer/items/BufferedEntity.java | 1 - .../buffer/items/BufferedLootApplication.java | 1 - .../structure/buffer/items/BufferedPulledBlock.java | 1 - .../buffer/items/BufferedStateManipulator.java | 1 - .../terra/api/world/locate/AsyncBiomeFinder.java | 1 - .../terra/api/world/locate/AsyncFeatureFinder.java | 1 - .../terra/api/world/locate/AsyncStructureFinder.java | 1 - .../dfsek/terra/commands/structure/SpawnCommand.java | 1 - .../commands/structure/StructureExportCommand.java | 2 -- .../java/com/dfsek/terra/config/GenericLoaders.java | 1 - .../com/dfsek/terra/config/templates/OreTemplate.java | 1 - .../com/dfsek/terra/registry/CheckedRegistryImpl.java | 2 +- .../com/dfsek/terra/registry/OpenRegistryImpl.java | 2 +- .../terra/world/population/StructurePopulator.java | 1 - .../world/population/items/flora/TerraFlora.java | 11 ++++++----- .../terra/world/population/items/tree/TreeLayer.java | 2 +- .../dfsek/terra/bukkit/listeners/CommonListener.java | 1 - .../com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 -- .../mixin/implementations/ConfiguredFeatureMixin.java | 1 - .../mixin/implementations/chunk/ChunkRegionMixin.java | 2 -- .../mixin/implementations/chunk/WorldChunkMixin.java | 1 - .../mixin/implementations/world/ChunkRegionMixin.java | 2 -- .../mixin/implementations/world/ServerWorldMixin.java | 1 - .../com/dfsek/terra/fabric/util/FabricAdapter.java | 8 -------- .../java/com/dfsek/terra/fabric/util/FabricUtil.java | 1 - .../com/dfsek/terra/fabric/util/WorldEditUtil.java | 2 -- .../main/java/com/dfsek/terra/platform/RawTree.java | 1 - 39 files changed, 10 insertions(+), 55 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index a208a98ff..0fbbdd66c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java index 73b679c2c..6d15555d7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.structure.buffer; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java index 76c1247fc..8e00fd945 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import java.util.Random; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 11b0bb5e3..dc5b5baca 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index e5bb0587f..d731e12c9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.world.biome.generation; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 4754ae512..1eaefff4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 4d800941d..d4c2888d8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -34,7 +34,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); + String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 05fab488f..a91182fe6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index 42599c05e..ea9c2be99 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java index 7db25a4a6..47ca2c541 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index 38a9863ec..45cdbdc15 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index cae9ea259..f308cfaa9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 1cb6303c6..d92ca38d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 0f04ac55f..a1c6f0098 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 6ab6741c0..387e6faf5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 2ef5c7fa1..a374f6322 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -3,7 +3,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index 995a49059..4bcb8bda6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index d4c3ea248..c4aebc741 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 255a49dd1..770808a7d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 33678c8ba..20e1df6dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -17,7 +17,6 @@ import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index e2ecab03e..c19a584f1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -15,9 +15,7 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import java.io.BufferedWriter; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index c4a839285..2d1f7e9b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -53,7 +53,6 @@ import com.dfsek.terra.noise.samplers.ImageSampler; import com.dfsek.terra.noise.samplers.noise.CellularSampler; 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; import com.dfsek.terra.world.population.items.ores.OreConfig; import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index d6dc17ac2..ace8e868b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.world.population.items.ores.Ore; import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 108c0290a..dbddd8976 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -3,8 +3,8 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import java.lang.reflect.Type; import java.util.Collection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index a64de9ac7..78a6ec7f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -2,8 +2,8 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import java.lang.reflect.Type; import java.util.Collection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 4b3b56fdd..11b9ddb95 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 8a1f0529d..8654fc763 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -87,10 +87,10 @@ public class TerraFlora implements Flora { private boolean isIrrigated(Vector3 b, World world) { if(irrigable == null) return true; - return irrigable.contains(world.getBlockData(b.getBlockX()+1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX()-1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()+1).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ()-1).getBlockType()); + return irrigable.contains(world.getBlockData(b.getBlockX() + 1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX() - 1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() + 1).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() - 1).getBlockType()); } @@ -133,7 +133,8 @@ public class TerraFlora implements Flora { } private void test(List faces, BlockFace f, Vector3 b, World world) { - if(testRotation.contains(world.getBlockData(b.getBlockX()+f.getModX(), b.getBlockY()+f.getModY(), b.getBlockZ()+f.getModZ()).getBlockType())) faces.add(f); + if(testRotation.contains(world.getBlockData(b.getBlockX() + f.getModX(), b.getBlockY() + f.getModY(), b.getBlockZ() + f.getModZ()).getBlockType())) + faces.add(f); } public enum Search { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 878c9dd15..5b0d88625 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -23,7 +23,7 @@ public class TreeLayer extends PlaceableLayer { Tree item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); Vector3 running = coords.extrude(level.getMax()); for(int ignored : level) { - running.subtract(0,1,0); + running.subtract(0, 1, 0); if(item.getSpawnable().contains(chunk.getBlock(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { item.plant(running.clone().add(cx, 1, cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index b165e5e1c..2e9e56904 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Material; import org.bukkit.TreeType; 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 1042d26f5..fe6a6385d 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 @@ -28,8 +28,6 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.transform.TransformerImpl; -import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.world.TerraWorld; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 779897bd8..b758f09ed 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.mixin.implementations; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index 6ccb02e5c..fedc9229c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -11,10 +11,8 @@ import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; @Mixin(ChunkRegion.class) @Implements(@Interface(iface = Chunk.class, prefix = "terraChunk$", remap = Interface.Remap.NONE)) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index e03715e5a..8b3e23e54 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.block.FabricBlockData; import net.minecraft.block.BlockState; -import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.WorldChunk; import org.jetbrains.annotations.NotNull; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 06658209f..1893735bf 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -28,7 +27,6 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; @Mixin(ChunkRegion.class) @Implements(@Interface(iface = World.class, prefix = "terraWorld$", remap = Interface.Remap.NONE)) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 687661c55..cff5580d6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 7b7b2754f..75691d76b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -5,9 +5,6 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Bisected; import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.api.block.data.Stairs; -import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.block.data.FabricDirectional; @@ -19,17 +16,12 @@ import com.dfsek.terra.fabric.block.data.FabricStairs; import com.dfsek.terra.fabric.block.data.FabricWaterlogged; import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.LootableContainerBlockEntity; -import net.minecraft.block.entity.MobSpawnerBlockEntity; -import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.block.enums.BlockHalf; import net.minecraft.block.enums.SlabType; import net.minecraft.block.enums.StairShape; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.world.WorldAccess; import java.util.Arrays; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 44dc56730..c36fbc09b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.block.state.MobSpawner; import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index b9788e576..1434d77ef 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -2,9 +2,7 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index 8c21508b1..da9fb440f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.vector.LocationImpl; import java.util.Random; From d880d95637ce275f3c1c78b3445f31d72e3d02e8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 13:47:56 -0700 Subject: [PATCH 0069/1529] Location is gone. --- .../com/dfsek/terra/api/vector/Location.java | 53 ----- .../com/dfsek/terra/api/vector/Vector3.java | 2 - .../com/dfsek/terra/api/world/TerraWorld.java | 3 - .../com/dfsek/terra/vector/LocationImpl.java | 198 ------------------ .../com/dfsek/terra/vector/Vector3Impl.java | 7 - .../com/dfsek/terra/world/TerraWorldImpl.java | 6 - .../terra/bukkit/world/BukkitAdapter.java | 9 +- .../com/dfsek/terra/StandalonePlugin.java | 10 +- .../com/dfsek/terra/platform/DirectBlock.java | 87 -------- .../terra/platform/DirectBlockState.java | 4 +- .../dfsek/terra/platform/DirectChunkData.java | 11 +- .../com/dfsek/terra/platform/DirectWorld.java | 22 +- .../com/dfsek/terra/region/RegionWriter.java | 5 - 13 files changed, 31 insertions(+), 386 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/vector/Location.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java delete mode 100644 platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java delete mode 100644 platforms/region/src/main/java/com/dfsek/terra/region/RegionWriter.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java deleted file mode 100644 index 7e1ef97b5..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Location.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.api.vector; - -import com.dfsek.terra.api.world.World; - -public interface Location extends Cloneable { - void setWorld(World world); - - Vector3 getVector(); - - void setVector(Vector3 vector); - - Location clone(); - - int getBlockX(); - - int getBlockY(); - - int getBlockZ(); - - double getY(); - - Location setY(double y); - - double getX(); - - Location setX(double x); - - double getZ(); - - Location setZ(double z); - - World getWorld(); - - Location add(double x, double y, double z); - - Location subtract(int x, int y, int z); - - Location add(Vector3 add); - - Location add(Location add); - - double getPitch(); - - void setPitch(double pitch); - - double getYaw(); - - void setYaw(double yaw); - - Vector3 toVector(); - - Location multiply(double v); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index 3b041b8d1..e939d8bd0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -155,8 +155,6 @@ public interface Vector3 extends Cloneable { */ double dot(@NotNull Vector3 other); - Location toLocation(World world); - Vector3 normalize(); Vector3 subtract(int x, int y, int z); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index 6e612db1d..158647a4d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -25,7 +24,5 @@ public interface TerraWorld { */ BlockData getUngeneratedBlock(int x, int y, int z); - BlockData getUngeneratedBlock(Location l); - BlockData getUngeneratedBlock(Vector3 v); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java deleted file mode 100644 index 78b9651a3..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/LocationImpl.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.dfsek.terra.vector; - -import com.dfsek.terra.api.vector.Location; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; - -import java.util.Objects; - -public class LocationImpl implements Location { - private World world; - private Vector3 vector; - private double pitch; - private double yaw; - - public LocationImpl(World w, double x, double y, double z) { - this.world = w; - this.vector = new Vector3Impl(x, y, z); - } - - public LocationImpl(World w, Vector3 vector) { - this.world = w; - this.vector = vector; - } - - @Override - public void setWorld(World world) { - this.world = world; - } - - @Override - public Vector3 getVector() { - return vector; - } - - @Override - public void setVector(Vector3 vector) { - this.vector = vector; - } - - @Override - public Location clone() { - try { - LocationImpl other = (LocationImpl) super.clone(); - other.setVector(other.getVector().clone()); - return other; - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } - - @Override - public int getBlockX() { - return vector.getBlockX(); - } - - @Override - public int getBlockY() { - return vector.getBlockY(); - } - - @Override - public int getBlockZ() { - return vector.getBlockZ(); - } - - @Override - public double getY() { - return vector.getY(); - } - - @Override - public Location setY(double y) { - vector.setY(y); - return this; - } - - @Override - public double getX() { - return vector.getX(); - } - - @Override - public Location setX(double x) { - vector.setX(x); - return this; - } - - @Override - public double getZ() { - return vector.getZ(); - } - - @Override - public LocationImpl setZ(double z) { - vector.setZ(z); - return this; - } - - @Override - public World getWorld() { - return world; - } - - @Override - public Location add(double x, double y, double z) { - vector.add(x, y, z); - return this; - } - - @Override - public Location subtract(int x, int y, int z) { - vector.subtract(x, y, z); - return this; - } - - @Override - public Location add(Vector3 add) { - vector.add(add); - return this; - } - - @Override - public Location add(Location add) { - vector.add(add.toVector()); - return this; - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof LocationImpl)) { - return false; - } - final LocationImpl other = (LocationImpl) obj; - - World world = this.world; - World otherWorld = other.world; - if(!Objects.equals(world, otherWorld)) { - return false; - } - if(Double.doubleToLongBits(this.vector.getX()) != Double.doubleToLongBits(other.vector.getX())) { - return false; - } - if(Double.doubleToLongBits(this.vector.getY()) != Double.doubleToLongBits(other.vector.getY())) { - return false; - } - return Double.doubleToLongBits(this.vector.getZ()) == Double.doubleToLongBits(other.vector.getZ()); - } - - @Override - public double getPitch() { - return pitch; - } - - @Override - public void setPitch(double pitch) { - this.pitch = pitch; - } - - @Override - public double getYaw() { - return yaw; - } - - @Override - public void setYaw(double yaw) { - this.yaw = yaw; - } - - @Override - public int hashCode() { - int hash = 3; - - World world = (this.world == null) ? null : this.world; - hash = 19 * hash + (world != null ? world.hashCode() : 0); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getX()) ^ (Double.doubleToLongBits(this.vector.getX()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getY()) ^ (Double.doubleToLongBits(this.vector.getY()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.vector.getZ()) ^ (Double.doubleToLongBits(this.vector.getZ()) >>> 32)); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.pitch) ^ Double.doubleToLongBits(this.pitch) >>> 32); - hash = 19 * hash + (int) (Double.doubleToLongBits(this.yaw) ^ Double.doubleToLongBits(this.yaw) >>> 32); - return hash; - } - - @Override - public Vector3 toVector() { - return vector.clone(); - } - - @Override - public String toString() { - return "[" + world + ": (" + getX() + ", " + getY() + ", " + getZ() + ")]"; - } - - @Override - public LocationImpl multiply(double v) { - vector.multiply(v); - return this; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java index 456f195b7..117a19eac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java @@ -1,10 +1,8 @@ package com.dfsek.terra.vector; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -207,11 +205,6 @@ public class Vector3Impl implements Vector3 { return x * other.getX() + y * other.getY() + z * other.getZ(); } - @Override - public Location toLocation(World world) { - return new LocationImpl(world, this.clone()); - } - @Override public Vector3 normalize() { return this.multiply(this.inverseLength()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index daadd3e40..6704924d8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; -import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -76,11 +75,6 @@ public class TerraWorldImpl implements TerraWorld { } else return air; } - @Override - public BlockData getUngeneratedBlock(Location l) { - return getUngeneratedBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); - } - @Override public BlockData getUngeneratedBlock(Vector3 v) { return getUngeneratedBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index fca571179..4880beaf4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -25,7 +25,6 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; -import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; import org.bukkit.Material; @@ -338,12 +337,8 @@ public final class BukkitAdapter { } } - public static Location adapt(com.dfsek.terra.api.vector.Location location) { - return new Location(((BukkitWorld) location.getWorld()).getHandle(), location.getX(), location.getY(), location.getZ()); - } - - public static LocationImpl adapt(Location location) { - return new LocationImpl(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ()); + public static Vector3 adapt(Location location) { + return new Vector3Impl(location.getX(), location.getY(), location.getZ()); } public static Vector adapt(Vector3 vector3) { 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 f8e609627..9d784a7a7 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -13,7 +13,7 @@ import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.JavaLogger; import com.dfsek.terra.api.world.TerraWorld; @@ -26,6 +26,8 @@ import com.dfsek.terra.config.lang.LanguageImpl; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; import com.dfsek.terra.profiler.ProfilerImpl; +import com.dfsek.terra.registry.CheckedRegistryImpl; +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; @@ -38,7 +40,7 @@ public class StandalonePlugin implements TerraPlugin { private final ConfigRegistry registry = new ConfigRegistry(); private final AddonRegistry addonRegistry = new AddonRegistry(this); - private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); + private final Registry addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); private final PluginConfig config = new PluginConfigImpl(); private final RawWorldHandle worldHandle = new RawWorldHandle(); @@ -82,11 +84,11 @@ public class StandalonePlugin implements TerraPlugin { @Override public CheckedRegistry getConfigRegistry() { - return new CheckedRegistry<>(registry); + return new CheckedRegistryImpl<>(registry); } @Override - public LockedRegistry getAddons() { + public Registry getAddons() { return addonLockedRegistry; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java deleted file mode 100644 index 1276443d6..000000000 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlock.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.dfsek.terra.platform; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.LocationImpl; -import net.jafama.FastMath; - -public class DirectBlock implements Block { - private final DirectWorld world; - private final Vector3 pos; - - public DirectBlock(DirectWorld world, Vector3 pos) { - this.world = world; - this.pos = pos; - } - - @Override - public void setBlockData(BlockData data, boolean physics) { - synchronized(world) { - world.compute(FastMath.floorDiv(pos.getBlockX(), 16), FastMath.floorDiv(pos.getBlockZ(), 16)).setBlockStateAt(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ(), ((Data) data).getHandle(), false); - } - } - - @Override - public BlockData getBlockData() { - return new Data(world.getData(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ())); - } - - @Override - public BlockState getState() { - return new DirectBlockState(); - } - - @Override - public Block getRelative(BlockFace face) { - return world.getBlockAt(pos.getBlockX() + face.getModX(), pos.getBlockY() + face.getModY(), pos.getBlockZ() + face.getModZ()); - } - - @Override - public Block getRelative(BlockFace face, int len) { - return world.getBlockAt(pos.getBlockX() + face.getModX() * len, pos.getBlockY() + face.getModY() * len, pos.getBlockZ() + face.getModZ() * len); - } - - @Override - public boolean isEmpty() { - return getBlockData().getAsString().equals("minecraft:air"); - } - - @Override - public LocationImpl getLocation() { - return pos.toLocation(world); - } - - @Override - public BlockType getType() { - return new Data(world.getData(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ())); - } - - @Override - public int getX() { - return pos.getBlockX(); - } - - @Override - public int getZ() { - return pos.getBlockY(); - } - - @Override - public int getY() { - return pos.getBlockY(); - } - - @Override - public boolean isPassable() { - return false; - } - - @Override - public Object getHandle() { - return world; - } -} diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java index e78607792..dff195ba5 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java @@ -1,12 +1,12 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.vector.Vector3; public class DirectBlockState implements BlockState { @Override - public Block getBlock() { + public Vector3 getPosition() { return null; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index cf5c97738..62173010a 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -1,10 +1,8 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.vector.Vector3Impl; import net.querz.mca.Chunk; import net.querz.nbt.tag.CompoundTag; import org.jetbrains.annotations.NotNull; @@ -44,6 +42,11 @@ public class DirectChunkData implements ChunkData, com.dfsek.terra.api.world.Chu return new Data(tag.getString("Name")); } + @Override + public void setBlock(int x, int y, int z, BlockData data, boolean physics) { + setBlock(x, y, z, data); + } + @Override public int getX() { return x; @@ -59,8 +62,4 @@ public class DirectChunkData implements ChunkData, com.dfsek.terra.api.world.Chu return world; } - @Override - public Block getBlock(int x, int y, int z) { - return new DirectBlock(world, new Vector3Impl(x + (this.x << 4), y, z + (this.z << 4))); - } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 0e7e823f0..79f2eba9c 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,14 +1,14 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.block.Block; +import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -57,12 +57,22 @@ public class DirectWorld implements World { } @Override - public Block getBlockAt(int x, int y, int z) { - return new DirectBlock(this, new Vector3Impl(x, y, z)); + public BlockData getBlockData(int x, int y, int z) { + return null; } @Override - public Entity spawnEntity(LocationImpl location, EntityType entityType) { + public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + + } + + @Override + public BlockState getBlockState(int x, int y, int z) { + return null; + } + + @Override + public Entity spawnEntity(Vector3 location, EntityType entityType) { return null; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/region/RegionWriter.java b/platforms/region/src/main/java/com/dfsek/terra/region/RegionWriter.java deleted file mode 100644 index 7ae434669..000000000 --- a/platforms/region/src/main/java/com/dfsek/terra/region/RegionWriter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dfsek.terra.region; - -public class RegionWriter { - -} From 338657043975c9fae2a83ae88e5f11efe3024390 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 19:12:23 -0700 Subject: [PATCH 0070/1529] BlockState -> BlockEntity --- .../block/state/{BlockState.java => BlockEntity.java} | 2 +- .../com/dfsek/terra/api/block/state/Container.java | 2 +- .../com/dfsek/terra/api/block/state/MobSpawner.java | 2 +- .../java/com/dfsek/terra/api/block/state/Sign.java | 2 +- .../src/main/java/com/dfsek/terra/api/world/World.java | 6 +++--- .../buffer/items/BufferedLootApplication.java | 4 ++-- .../buffer/items/BufferedStateManipulator.java | 4 ++-- .../commands/structure/StructureExportCommand.java | 6 +++--- .../java/com/dfsek/terra/config/dummy/DummyWorld.java | 4 ++-- .../java/com/dfsek/terra/bukkit/world/BukkitWorld.java | 8 ++++---- .../{BukkitBlockState.java => BukkitBlockEntity.java} | 10 +++++----- .../bukkit/world/block/state/BukkitContainer.java | 2 +- .../bukkit/world/block/state/BukkitMobSpawner.java | 2 +- .../terra/bukkit/world/block/state/BukkitSign.java | 2 +- .../mixin/implementations/block/BlockEntityMixin.java | 9 ++++----- .../mixin/implementations/world/ChunkRegionMixin.java | 3 ++- .../mixin/implementations/world/ServerWorldMixin.java | 3 ++- .../java/com/dfsek/terra/fabric/util/FabricUtil.java | 7 +++---- .../{DirectBlockState.java => DirectBlockEntity.java} | 4 ++-- .../java/com/dfsek/terra/platform/DirectWorld.java | 4 ++-- 20 files changed, 43 insertions(+), 43 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/block/state/{BlockState.java => BlockEntity.java} (89%) rename platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/{BukkitBlockState.java => BukkitBlockEntity.java} (82%) rename platforms/region/src/main/java/com/dfsek/terra/platform/{DirectBlockState.java => DirectBlockEntity.java} (85%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java similarity index 89% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java index c308f6d8e..dcee2a0ff 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.vector.Vector3; -public interface BlockState extends Handle { +public interface BlockEntity extends Handle { Vector3 getPosition(); int getX(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java index 4a51a5280..feda2d88f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java @@ -2,5 +2,5 @@ package com.dfsek.terra.api.block.state; import com.dfsek.terra.api.inventory.BlockInventoryHolder; -public interface Container extends BlockState, BlockInventoryHolder { +public interface Container extends BlockEntity, BlockInventoryHolder { } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java index ea8f40239..e40889d4b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.block.state; import com.dfsek.terra.api.entity.EntityType; import org.jetbrains.annotations.NotNull; -public interface MobSpawner extends BlockState { +public interface MobSpawner extends BlockEntity { EntityType getSpawnedType(); void setSpawnedType(@NotNull EntityType creatureType); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java index 037572d0d..4f6d1d71f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.block.state; import org.jetbrains.annotations.NotNull; -public interface Sign extends BlockState { +public interface Sign extends BlockEntity { @NotNull String[] getLines(); @NotNull String getLine(int index) throws IndexOutOfBoundsException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index dc5b5baca..e3d07a618 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -43,9 +43,9 @@ public interface World extends Handle { setBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data, physics); } - BlockState getBlockState(int x, int y, int z); + BlockEntity getBlockState(int x, int y, int z); - default BlockState getBlockState(Vector3 position) { + default BlockEntity getBlockState(Vector3 position) { return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index a1c6f0098..3ec922301 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.structure.LootTable; @@ -25,7 +25,7 @@ public class BufferedLootApplication implements BufferedItem { @Override public void paste(Vector3 origin, World world) { try { - BlockState data = world.getBlockState(origin); + BlockEntity data = world.getBlockState(origin); if(!(data instanceof Container)) { main.logger().severe("Failed to place loot at " + origin + "; block " + data + " is not container."); return; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index a374f6322..addf523d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -18,7 +18,7 @@ public class BufferedStateManipulator implements BufferedItem { @Override public void paste(Vector3 origin, World world) { try { - BlockState state = world.getBlockState(origin); + BlockEntity state = world.getBlockState(origin); state.applyState(data); state.update(false); } catch(Exception e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index c19a584f1..c529fb49f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -2,7 +2,7 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -58,7 +58,7 @@ public class StructureExportCommand implements CommandTemplate { for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - BlockState state = player.world().getBlockState(x, y, z); + BlockEntity state = player.world().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]") && sign.getLine(1).equals("[CENTER]")) { @@ -77,7 +77,7 @@ public class StructureExportCommand implements CommandTemplate { BlockData data = player.world().getBlockData(x, y, z); if(data.isStructureVoid()) continue; - BlockState state = player.world().getBlockState(x, y, z); + BlockEntity state = player.world().getBlockState(x, y, z); if(state instanceof Sign) { Sign sign = (Sign) state; if(sign.getLine(0).equals("[TERRA]")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index c8496ba1d..353294efb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.dummy; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -47,7 +47,7 @@ public class DummyWorld implements World { } @Override - public BlockState getBlockState(int x, int y, int z) { + public BlockEntity getBlockState(int x, int y, int z) { throw new UnsupportedOperationException("Cannot get block in DummyWorld"); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index eb38f9532..055302a9a 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator; -import com.dfsek.terra.bukkit.world.block.state.BukkitBlockState; +import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import java.io.File; @@ -66,8 +66,8 @@ public class BukkitWorld implements World { } @Override - public BlockState getBlockState(int x, int y, int z) { - return BukkitBlockState.newInstance(delegate.getBlockAt(x, y, z).getState()); + public BlockEntity getBlockState(int x, int y, int z) { + return BukkitBlockEntity.newInstance(delegate.getBlockAt(x, y, z).getState()); } public File getWorldFolder() { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java similarity index 82% rename from platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java rename to platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 9351057f8..96119b692 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; @@ -9,18 +9,18 @@ import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Sign; -public class BukkitBlockState implements BlockState { +public class BukkitBlockEntity implements BlockEntity { private final org.bukkit.block.BlockState delegate; - protected BukkitBlockState(org.bukkit.block.BlockState block) { + protected BukkitBlockEntity(org.bukkit.block.BlockState block) { this.delegate = block; } - public static BukkitBlockState newInstance(org.bukkit.block.BlockState block) { + public static BukkitBlockEntity newInstance(org.bukkit.block.BlockState block) { if(block instanceof Container) return new BukkitContainer((Container) block); if(block instanceof Sign) return new BukkitSign((Sign) block); if(block instanceof CreatureSpawner) return new BukkitMobSpawner((CreatureSpawner) block); - return new BukkitBlockState(block); + return new BukkitBlockEntity(block); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java index d940d62a5..fe4728bb8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.bukkit.world.inventory.BukkitInventory; -public class BukkitContainer extends BukkitBlockState implements Container { +public class BukkitContainer extends BukkitBlockEntity implements Container { protected BukkitContainer(org.bukkit.block.Container block) { super(block); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index f6f45180c..af5a5b992 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -7,7 +7,7 @@ import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.block.CreatureSpawner; import org.jetbrains.annotations.NotNull; -public class BukkitMobSpawner extends BukkitBlockState implements MobSpawner { +public class BukkitMobSpawner extends BukkitBlockEntity implements MobSpawner { protected BukkitMobSpawner(CreatureSpawner block) { super(block); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index b3e5b3b46..be339bfeb 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.state.Sign; import org.jetbrains.annotations.NotNull; @SuppressWarnings("deprecation") -public class BukkitSign extends BukkitBlockState implements Sign { +public class BukkitSign extends BukkitBlockEntity implements Sign { protected BukkitSign(org.bukkit.block.Sign block) { super(block); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index effcc5761..71494d8a1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,9 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.block; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -14,8 +13,8 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(BlockEntity.class) -@Implements(@Interface(iface = BlockState.class, prefix = "terra$", remap = Interface.Remap.NONE)) +@Mixin(net.minecraft.block.entity.BlockEntity.class) +@Implements(@Interface(iface = BlockEntity.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BlockEntityMixin { @Final @Shadow @@ -52,7 +51,7 @@ public abstract class BlockEntityMixin { } public boolean terra$update(boolean applyPhysics) { - if(hasWorld()) world.getChunk(pos).setBlockEntity((BlockEntity) (Object) this); + if(hasWorld()) world.getChunk(pos).setBlockEntity((net.minecraft.block.entity.BlockEntity) (Object) this); return true; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 1893735bf..a2347757c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,6 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -58,7 +59,7 @@ public abstract class ChunkRegionMixin { return (Chunk) ((ChunkRegion) (Object) this).getChunk(x, z); } - public com.dfsek.terra.api.block.state.BlockState terraWorld$getBlockState(int x, int y, int z) { + public BlockEntity terraWorld$getBlockState(int x, int y, int z) { return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index cff5580d6..75489d162 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,6 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -40,7 +41,7 @@ public abstract class ServerWorldMixin { return (Chunk) ((ServerWorld) (Object) this).getChunk(x, z); } - public com.dfsek.terra.api.block.state.BlockState terra$getBlockState(int x, int y, int z) { + public BlockEntity terra$getBlockState(int x, int y, int z) { return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index c36fbc09b..02b3d8a1f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.block.state.MobSpawner; import com.dfsek.terra.api.block.state.Sign; @@ -13,7 +13,6 @@ import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; -import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -141,8 +140,8 @@ public final class FabricUtil { } } - public static BlockState createState(WorldAccess worldAccess, BlockPos pos) { - BlockEntity entity = worldAccess.getBlockEntity(pos); + public static BlockEntity createState(WorldAccess worldAccess, BlockPos pos) { + net.minecraft.block.entity.BlockEntity entity = worldAccess.getBlockEntity(pos); if(entity instanceof SignBlockEntity) { return (Sign) entity; } else if(entity instanceof MobSpawnerBlockEntity) { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java similarity index 85% rename from platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java rename to platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java index dff195ba5..a4e50d059 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockState.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java @@ -1,10 +1,10 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.vector.Vector3; -public class DirectBlockState implements BlockState { +public class DirectBlockEntity implements BlockEntity { @Override public Vector3 getPosition() { return null; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 79f2eba9c..ea9d407c0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -2,7 +2,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -67,7 +67,7 @@ public class DirectWorld implements World { } @Override - public BlockState getBlockState(int x, int y, int z) { + public BlockEntity getBlockState(int x, int y, int z) { return null; } From 002c7037f1c563b2aab4f4c37a1f23099e90353e Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 19:12:43 -0700 Subject: [PATCH 0071/1529] basic property interfaces --- .../terra/api/block/data/properties/Property.java | 8 +++++++- .../block/data/properties/base/BooleanProperty.java | 10 ++++++++++ .../api/block/data/properties/base/EnumProperty.java | 6 ++++++ .../api/block/data/properties/base/IntProperty.java | 10 ++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java index 7990ba6dd..ca3fc7a31 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java @@ -1,5 +1,11 @@ package com.dfsek.terra.api.block.data.properties; -public interface Property { +import java.util.Collection; +public interface Property { + Class getType(); + + String getName(); + + Collection values(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java new file mode 100644 index 000000000..6461cbd74 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.block.data.properties.base; + +import com.dfsek.terra.api.block.data.properties.Property; + +public interface BooleanProperty extends Property { + @Override + default Class getType() { + return Boolean.class; + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java new file mode 100644 index 000000000..c38c23f5f --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.block.data.properties.base; + +import com.dfsek.terra.api.block.data.properties.Property; + +public interface EnumProperty> extends Property { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java new file mode 100644 index 000000000..0c94d4d0a --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.block.data.properties.base; + +import com.dfsek.terra.api.block.data.properties.Property; + +public interface IntProperty extends Property { + @Override + default Class getType() { + return Integer.class; + } +} From a3cbf9a945ed55457b5000ae025b3ac392ef9df3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 19:13:42 -0700 Subject: [PATCH 0072/1529] BlockData -> BlockState --- .../block/{BlockData.java => BlockState.java} | 6 ++--- .../com/dfsek/terra/api/block/BlockType.java | 2 +- .../api/block/data/AnaloguePowerable.java | 4 +-- .../dfsek/terra/api/block/data/Bisected.java | 4 +-- .../terra/api/block/data/Directional.java | 4 +-- .../terra/api/block/data/MultipleFacing.java | 4 +-- .../terra/api/block/data/Orientable.java | 4 +-- .../com/dfsek/terra/api/block/data/Rail.java | 4 +-- .../terra/api/block/data/RedstoneWire.java | 4 +-- .../dfsek/terra/api/block/data/Rotatable.java | 4 +-- .../com/dfsek/terra/api/block/data/Wall.java | 4 +-- .../terra/api/block/data/Waterlogged.java | 4 +-- .../terra/api/block/state/BlockEntity.java | 4 +-- .../dfsek/terra/api/handle/WorldHandle.java | 4 +-- .../java/com/dfsek/terra/api/world/Chunk.java | 8 +++--- .../dfsek/terra/api/world/ChunkAccess.java | 8 +++--- .../com/dfsek/terra/api/world/TerraWorld.java | 6 ++--- .../java/com/dfsek/terra/api/world/World.java | 14 +++++----- .../terra/api/world/generator/Palette.java | 8 +++--- .../functions/AbstractBlockFunction.java | 4 +-- .../script/functions/BlockFunction.java | 6 ++--- .../functions/DynamicBlockFunction.java | 6 ++--- .../script/functions/PullFunction.java | 6 ++--- .../structure/buffer/items/BufferedBlock.java | 8 +++--- .../buffer/items/BufferedPulledBlock.java | 6 ++--- .../dfsek/terra/api/util/RotationUtil.java | 4 +-- .../api/util/collections/MaterialSet.java | 6 ++--- .../terra/api/world/palette/NoisePalette.java | 4 +-- .../terra/api/world/palette/PaletteImpl.java | 26 +++++++++---------- .../palette/holder/PaletteLayerHolder.java | 8 +++--- .../dfsek/terra/carving/CarverPalette.java | 14 +++++----- .../structure/StructureExportCommand.java | 4 +-- .../dfsek/terra/config/dummy/DummyWorld.java | 6 ++--- .../terra/config/factories/OreFactory.java | 4 +-- .../com/dfsek/terra/config/loaders/Types.java | 4 +-- .../loaders/palette/CarverPaletteLoader.java | 4 +-- .../loaders/palette/PaletteLayerLoader.java | 4 +-- .../terra/config/templates/OreTemplate.java | 10 +++---- .../com/dfsek/terra/world/TerraWorldImpl.java | 8 +++--- .../terra/world/carving/NoiseCarver.java | 6 ++--- .../generators/DefaultChunkGenerator2D.java | 4 +-- .../generators/DefaultChunkGenerator3D.java | 18 ++++++------- .../terra/world/population/CavePopulator.java | 14 +++++----- .../population/items/flora/TerraFlora.java | 4 +-- .../world/population/items/ores/Ore.java | 10 +++---- .../population/items/ores/VanillaOre.java | 4 +-- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 4 +-- .../generator/BukkitChunkGenerator.java | 12 ++++----- .../bukkit/handles/BukkitWorldHandle.java | 8 +++--- .../terra/bukkit/world/BukkitAdapter.java | 12 ++++----- .../dfsek/terra/bukkit/world/BukkitChunk.java | 10 +++---- .../dfsek/terra/bukkit/world/BukkitWorld.java | 6 ++--- .../world/block/BukkitBlockTypeAndItem.java | 4 +-- .../block/data/BukkitAnaloguePowerable.java | 2 +- ...itBlockData.java => BukkitBlockState.java} | 18 ++++++------- .../world/block/data/BukkitDirectional.java | 2 +- .../block/data/BukkitMultipleFacing.java | 2 +- .../world/block/data/BukkitOrientable.java | 2 +- .../bukkit/world/block/data/BukkitRail.java | 2 +- .../world/block/data/BukkitRotatable.java | 2 +- .../bukkit/world/block/data/BukkitStairs.java | 2 +- .../world/block/data/BukkitWaterlogged.java | 2 +- .../world/block/state/BukkitBlockEntity.java | 8 +++--- .../dfsek/terra/fabric/TerraFabricPlugin.java | 4 +-- ...icBlockData.java => FabricBlockState.java} | 19 +++++++------- .../block/data/FabricAnaloguePowerable.java | 4 +-- .../fabric/block/data/FabricDirectional.java | 4 +-- .../block/data/FabricMultipleFacing.java | 4 +-- .../fabric/block/data/FabricOrientable.java | 4 +-- .../fabric/block/data/FabricRotatable.java | 4 +-- .../fabric/block/data/FabricWaterlogged.java | 4 +-- .../FabricChunkGeneratorWrapper.java | 6 ++--- .../fabric/handle/FabricWorldHandle.java | 4 +-- .../block/BlockEntityMixin.java | 4 +-- .../implementations/block/BlockMixin.java | 7 +++-- .../chunk/ChunkRegionMixin.java | 12 ++++----- .../chunk/WorldChunkMixin.java | 21 +++++++-------- .../chunk/data/ProtoChunkMixin.java | 15 +++++------ .../world/ChunkRegionMixin.java | 19 +++++++------- .../world/ServerWorldMixin.java | 12 ++++----- .../terra/fabric/util/FabricAdapter.java | 6 ++--- .../com/dfsek/terra/StandalonePlugin.java | 4 +-- .../terra/platform/DirectBlockEntity.java | 4 +-- .../dfsek/terra/platform/DirectChunkData.java | 14 +++++----- .../com/dfsek/terra/platform/DirectWorld.java | 6 ++--- .../dfsek/terra/platform/RawWorldHandle.java | 6 ++--- .../terra/platform/{Data.java => State.java} | 22 ++++++++-------- .../com/dfsek/terra/sponge/SpongeAdapter.java | 13 +++++----- .../terra/sponge/world/SpongeWorldHandle.java | 7 +++-- ...geBlockData.java => SpongeBlockState.java} | 15 +++++------ 90 files changed, 318 insertions(+), 326 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/block/{BlockData.java => BlockState.java} (61%) rename platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/{BukkitBlockData.java => BukkitBlockState.java} (83%) rename platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/{FabricBlockData.java => FabricBlockState.java} (71%) rename platforms/region/src/main/java/com/dfsek/terra/platform/{Data.java => State.java} (80%) rename platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/{SpongeBlockData.java => SpongeBlockState.java} (59%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java similarity index 61% rename from common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java rename to common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java index b1f3de4d8..43f841a7e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java @@ -2,13 +2,13 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; -public interface BlockData extends Cloneable, Handle { +public interface BlockState extends Cloneable, Handle { BlockType getBlockType(); - boolean matches(BlockData other); + boolean matches(BlockState other); - BlockData clone(); + BlockState clone(); String getAsString(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java index 2a911d2ae..67c33680f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; public interface BlockType extends Handle { - BlockData getDefaultData(); + BlockState getDefaultData(); boolean isSolid(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java index cfa57bb7a..3af2dc40b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; -public interface AnaloguePowerable extends BlockData { +public interface AnaloguePowerable extends BlockState { int getMaximumPower(); int getPower(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java index 7ce6220c8..2544d82d8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; -public interface Bisected extends BlockData { +public interface Bisected extends BlockState { Half getHalf(); void setHalf(Half half); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java index d25fecebb..5c5a4bab3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; -public interface Directional extends BlockData { +public interface Directional extends BlockState { BlockFace getFacing(); void setFacing(BlockFace facing); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java index 2a8504ed3..18761a969 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import java.util.Set; -public interface MultipleFacing extends BlockData { +public interface MultipleFacing extends BlockState { Set getFaces(); void setFace(BlockFace face, boolean facing); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java index 49ca11b51..c0f9dab8e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.block.data; import com.dfsek.terra.api.block.Axis; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import java.util.Set; -public interface Orientable extends BlockData { +public interface Orientable extends BlockState { Set getAxes(); Axis getAxis(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java index 69fb1e567..9edb2db52 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; -public interface Rail extends BlockData { +public interface Rail extends BlockState { Shape getShape(); void setShape(Shape newShape); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java index 06a406d49..7c8d9c852 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java @@ -1,11 +1,11 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import java.util.Set; -public interface RedstoneWire extends BlockData, AnaloguePowerable { +public interface RedstoneWire extends BlockState, AnaloguePowerable { Set getAllowedFaces(); Connection getFace(BlockFace face); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java index fc95651c3..a565f9e7e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; -public interface Rotatable extends BlockData { +public interface Rotatable extends BlockState { BlockFace getRotation(); void setRotation(BlockFace face); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java index 33d8ed086..e1456e7e8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; -public interface Wall extends BlockData, Waterlogged { +public interface Wall extends BlockState, Waterlogged { boolean isUp(); void setHeight(BlockFace face, Height height); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java index a109db6b6..dee1ca3ad 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; -public interface Waterlogged extends BlockData { +public interface Waterlogged extends BlockState { boolean isWaterlogged(); void setWaterlogged(boolean waterlogged); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java index dcee2a0ff..dfbd43f52 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.block.state; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.vector.Vector3; public interface BlockEntity extends Handle { @@ -13,7 +13,7 @@ public interface BlockEntity extends Handle { int getZ(); - BlockData getBlockData(); + BlockState getBlockData(); boolean update(boolean applyPhysics); diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 0fbbdd66c..c074f9aae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.handle; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.vector.Vector3; * Interface to be implemented for world manipulation. */ public interface WorldHandle { - BlockData createBlockData(String data); + BlockState createBlockData(String data); EntityType getEntity(String id); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java index 89ab2bab3..cb232e7c1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; public interface Chunk extends ChunkAccess { int getX(); @@ -9,11 +9,11 @@ public interface Chunk extends ChunkAccess { World getWorld(); - BlockData getBlock(int x, int y, int z); + BlockState getBlock(int x, int y, int z); - void setBlock(int x, int y, int z, BlockData data, boolean physics); + void setBlock(int x, int y, int z, BlockState data, boolean physics); - default void setBlock(int x, int y, int z, BlockData data) { + default void setBlock(int x, int y, int z, BlockState data) { setBlock(x, y, z, data, false); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index 5ea2940cf..1ee7e09ca 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import org.jetbrains.annotations.NotNull; public interface ChunkAccess extends Handle { @@ -13,9 +13,9 @@ public interface ChunkAccess extends Handle { * @param x the x location in the chunk from 0-15 inclusive * @param y the y location in the chunk from 0 (inclusive) - maxHeight (exclusive) * @param z the z location in the chunk from 0-15 inclusive - * @param blockData the type to set the block to + * @param blockState the type to set the block to */ - void setBlock(int x, int y, int z, @NotNull BlockData blockData); + void setBlock(int x, int y, int z, @NotNull BlockState blockState); /** * Get the type and data of the block at x, y, z. @@ -27,5 +27,5 @@ public interface ChunkAccess extends Handle { * @param z the z location in the chunk from 0-15 inclusive * @return the data of the block or the BlockData for air if x, y or z are outside the chunk's bounds */ - @NotNull BlockData getBlock(int x, int y, int z); + @NotNull BlockState getBlock(int x, int y, int z); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index 158647a4d..951d3d879 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -22,7 +22,7 @@ public interface TerraWorld { * @param z Z coordinate * @return BlockData */ - BlockData getUngeneratedBlock(int x, int y, int z); + BlockState getUngeneratedBlock(int x, int y, int z); - BlockData getUngeneratedBlock(Vector3 v); + BlockState getUngeneratedBlock(Vector3 v); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index e3d07a618..3b70f5eb5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -23,23 +23,23 @@ public interface World extends Handle { return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4); } - BlockData getBlockData(int x, int y, int z); + BlockState getBlockData(int x, int y, int z); - default BlockData getBlockData(Vector3 position) { + default BlockState getBlockData(Vector3 position) { return getBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ()); } - void setBlockData(int x, int y, int z, BlockData data, boolean physics); + void setBlockData(int x, int y, int z, BlockState data, boolean physics); - default void setBlockData(int x, int y, int z, BlockData data) { + default void setBlockData(int x, int y, int z, BlockState data) { setBlockData(x, y, z, data, false); } - default void setBlockData(Vector3 position, BlockData data) { + default void setBlockData(Vector3 position, BlockState data) { setBlockData(position, data, false); } - default void setBlockData(Vector3 position, BlockData data, boolean physics) { + default void setBlockData(Vector3 position, BlockState data, boolean physics) { setBlockData(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data, physics); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java index 676acb412..d4723c742 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.world.generator; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; public interface Palette { - Palette add(BlockData m, int layers, NoiseSampler sampler); + Palette add(BlockState m, int layers, NoiseSampler sampler); - Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler); + Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler); /** * Fetches a material from the palette, at a given layer. @@ -15,7 +15,7 @@ public interface Palette { * @param layer - The layer at which to fetch the material. * @return BlockData - The material fetched. */ - BlockData get(int layer, double x, double y, double z); + BlockState get(int layer, double x, double y, double z); int getSize(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index 6e831a127..8d00a9858 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -34,7 +34,7 @@ public abstract class AbstractBlockFunction implements Function { this.position = position; } - void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockData rot) { + void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java index c97c1c84f..15a9bd6be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -13,7 +13,7 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import java.util.Map; public class BlockFunction extends AbstractBlockFunction { - private final BlockData data; + private final BlockState data; public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable data, Returnable overwrite, TerraPlugin main, Position position) throws ParseException { super(x, y, z, data, overwrite, main, position); @@ -29,7 +29,7 @@ public class BlockFunction extends AbstractBlockFunction { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockData rot = data.clone(); + BlockState rot = data.clone(); setBlock(implementationArguments, variableMap, arguments, rot); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java index 2a977d0b9..051a64b5a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; @@ -12,7 +12,7 @@ import java.util.HashMap; import java.util.Map; public class DynamicBlockFunction extends AbstractBlockFunction { - private final Map data = new HashMap<>(); + private final Map data = new HashMap<>(); private final Position position; @@ -24,7 +24,7 @@ public class DynamicBlockFunction extends AbstractBlockFunction { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockData rot = data.computeIfAbsent(blockData.apply(implementationArguments, variableMap), main.getWorldHandle()::createBlockData).clone(); + BlockState rot = data.computeIfAbsent(blockData.apply(implementationArguments, variableMap), main.getWorldHandle()::createBlockData).clone(); setBlock(implementationArguments, variableMap, arguments, rot); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 114534ec4..5794e04a3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; @@ -20,7 +20,7 @@ import net.jafama.FastMath; import java.util.Map; public class PullFunction implements Function { - private final BlockData data; + private final BlockState data; private final Returnable x, y, z; private final Position position; @@ -40,7 +40,7 @@ public class PullFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - BlockData rot = data.clone(); + BlockState rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index d75e67c23..a9f2d8e51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,19 +1,19 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; public class BufferedBlock implements BufferedItem { - private final BlockData data; + private final BlockState data; private final boolean overwrite; private final TerraPlugin main; private final boolean waterlog; - public BufferedBlock(BlockData data, boolean overwrite, TerraPlugin main, boolean waterlog) { + public BufferedBlock(BlockState data, boolean overwrite, TerraPlugin main, boolean waterlog) { this.data = data; this.overwrite = overwrite; this.main = main; @@ -23,7 +23,7 @@ public class BufferedBlock implements BufferedItem { @Override public void paste(Vector3 origin, World world) { try { - BlockData current = world.getBlockData(origin); + BlockState current = world.getBlockData(origin); if(overwrite || current.isAir()) { if(waterlog && current instanceof Waterlogged && current.getBlockType().isWater()) ((Waterlogged) current).setWaterlogged(true); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 387e6faf5..c22ee414f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,14 +1,14 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; public class BufferedPulledBlock implements BufferedItem { - private final BlockData data; + private final BlockState data; - public BufferedPulledBlock(BlockData data) { + public BufferedPulledBlock(BlockState data) { this.data = data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 5e643579d..ecda78388 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.util; import com.dfsek.terra.api.block.Axis; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; @@ -249,7 +249,7 @@ public class RotationUtil { return orig; } - public static void rotateBlockData(BlockData data, Rotation r) { + public static void rotateBlockData(BlockState data, Rotation r) { if(data instanceof Rotatable) { BlockFace rt = getRotatedFace(((Rotatable) data).getRotation(), r); ((Rotatable) data).setRotation(rt); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java index cbfe1d165..19dbf9a44 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.collections; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import java.util.Arrays; @@ -21,7 +21,7 @@ public class MaterialSet extends HashSet { return set; } - public static MaterialSet get(BlockData... materials) { + public static MaterialSet get(BlockState... materials) { MaterialSet set = new MaterialSet(); Arrays.stream(materials).forEach(set::add); return set; @@ -31,7 +31,7 @@ public class MaterialSet extends HashSet { return new MaterialSet(); } - private void add(BlockData data) { + private void add(BlockState data) { add(data.getBlockType()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index 306a00a4a..8362aea13 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.List; @@ -15,7 +15,7 @@ public class NoisePalette extends PaletteImpl { } @Override - public BlockData get(int layer, double x, double y, double z) { + public BlockState get(int layer, double x, double y, double z) { PaletteLayer paletteLayer; if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); else { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java index 9112fe41a..6135003b0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; @@ -24,7 +24,7 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator } @Override - public Palette add(BlockData m, int layers, NoiseSampler sampler) { + public Palette add(BlockState m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { pallet.add(new PaletteLayer(m, sampler)); } @@ -32,7 +32,7 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator } @Override - public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { + public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { pallet.add(new PaletteLayer(m, sampler)); } @@ -54,9 +54,9 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator */ public static class PaletteLayer { private final boolean col; // Is layer using a collection? - private ProbabilityCollection collection; + private ProbabilityCollection collection; private final NoiseSampler sampler; - private BlockData m; + private BlockState m; /** * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. @@ -64,7 +64,7 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator * @param type The collection of materials to choose from. * @param sampler Noise sampler to use */ - public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { + public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { this.sampler = sampler; this.col = true; this.collection = type; @@ -76,7 +76,7 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator * @param type The material to use. * @param sampler Noise sampler to use */ - public PaletteLayer(BlockData type, NoiseSampler sampler) { + public PaletteLayer(BlockState type, NoiseSampler sampler) { this.sampler = sampler; this.col = false; this.m = type; @@ -91,31 +91,31 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator * * @return Material - the material.. */ - public BlockData get(Random random) { + public BlockState get(Random random) { if(col) return this.collection.get(random); return m; } - public BlockData get(NoiseSampler random, double x, double y, double z, boolean is2D) { + public BlockState get(NoiseSampler random, double x, double y, double z, boolean is2D) { if(col && is2D) return this.collection.get(random, x, z); else if(col) return this.collection.get(random, x, y, z); return m; } - public ProbabilityCollection getCollection() { + public ProbabilityCollection getCollection() { return collection; } } public static class Singleton extends PaletteImpl { - private final BlockData item; + private final BlockState item; - public Singleton(BlockData item) { + public Singleton(BlockState item) { this.item = item; } @Override - public BlockData get(int layer, double x, double y, double z) { + public BlockState get(int layer, double x, double y, double z) { return item; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index 628b763cb..43e6c7e49 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -1,23 +1,23 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { - private final ProbabilityCollection layer; + private final ProbabilityCollection layer; private final NoiseSampler sampler; private final int size; - public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { + public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; } @NotNull - public ProbabilityCollection getLayer() { + public ProbabilityCollection getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 40e1bccc2..5ac74e002 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.carving; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -13,8 +13,8 @@ import java.util.TreeMap; public class CarverPalette { private final boolean blacklist; private final MaterialSet replace; - private final TreeMap> map = new TreeMap<>(); - private ProbabilityCollection[] layers; + private final TreeMap> map = new TreeMap<>(); + private ProbabilityCollection[] layers; private int offset = 0; public CarverPalette(MaterialSet replaceable, boolean blacklist) { @@ -22,12 +22,12 @@ public class CarverPalette { this.replace = replaceable; } - public CarverPalette add(ProbabilityCollection collection, int y) { + public CarverPalette add(ProbabilityCollection collection, int y) { map.put(y, collection); return this; } - public ProbabilityCollection get(int y) { + public ProbabilityCollection get(int y) { int index = y + offset; return index >= 0 ? index < layers.length @@ -49,8 +49,8 @@ public class CarverPalette { layers = new ProbabilityCollection[map.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { - ProbabilityCollection d = null; - for(Map.Entry> e : map.entrySet()) { + ProbabilityCollection d = null; + for(Map.Entry> e : map.entrySet()) { if(e.getKey() >= y) { d = e.getValue(); break; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index c529fb49f..29a4398df 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -1,7 +1,7 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.block.state.Sign; import com.dfsek.terra.api.command.CommandTemplate; @@ -75,7 +75,7 @@ public class StructureExportCommand implements CommandTemplate { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - BlockData data = player.world().getBlockData(x, y, z); + BlockState data = player.world().getBlockData(x, y, z); if(data.isStructureVoid()) continue; BlockEntity state = player.world().getBlockState(x, y, z); if(state instanceof Sign) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 353294efb..fdb01867a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -37,12 +37,12 @@ public class DummyWorld implements World { } @Override - public BlockData getBlockData(int x, int y, int z) { + public BlockState getBlockData(int x, int y, int z) { throw new UnsupportedOperationException("Cannot get block in DummyWorld"); } @Override - public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void setBlockData(int x, int y, int z, BlockState data, boolean physics) { throw new UnsupportedOperationException("Cannot set block in DummyWorld"); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java index bd73d32c7..773dbec2d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.world.population.items.ores.Ore; import com.dfsek.terra.world.population.items.ores.VanillaOre; @@ -9,7 +9,7 @@ import com.dfsek.terra.world.population.items.ores.VanillaOre; public class OreFactory implements ConfigFactory { @Override public Ore build(OreTemplate config, TerraPlugin main) { - BlockData m = config.getMaterial(); + BlockState m = config.getMaterial(); return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), main, config.getMaterialOverrides()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index 347260a72..b9fe6581f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.loaders; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Tree; @@ -28,7 +28,7 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private ProbabilityCollection blockDataProbabilityCollection; + private ProbabilityCollection blockStateProbabilityCollection; private ProbabilityCollection floraProbabilityCollection; private ProbabilityCollection treeProbabilityCollection; private ProbabilityCollection terraBiomeProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index ff2a3372c..b37324e08 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.carving.CarverPalette; @@ -24,7 +24,7 @@ public class CarverPaletteLoader implements TypeLoader { CarverPalette palette = new CarverPalette((MaterialSet) configLoader.loadType(MaterialSet.class, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); palette.add(layer, (Integer) map.get("y")); } palette.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index 8a34a0817..2c8ea6cde 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @@ -18,7 +18,7 @@ public class PaletteLayerLoader implements TypeLoader { @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index ace8e868b..d8595d55e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -3,7 +3,7 @@ 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.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -18,12 +18,12 @@ public class OreTemplate extends AbstractableTemplate { @Value("material") @Abstractable - private BlockData material; + private BlockState material; @Value("material-overrides") @Default @Abstractable - private Map materials = new HashMap<>(); + private Map materials = new HashMap<>(); @Value("replace") @Abstractable @@ -60,7 +60,7 @@ public class OreTemplate extends AbstractableTemplate { return size; } - public BlockData getMaterial() { + public BlockState getMaterial() { return material; } @@ -76,7 +76,7 @@ public class OreTemplate extends AbstractableTemplate { return id; } - public Map getMaterialOverrides() { + public Map getMaterialOverrides() { return materials; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index 6704924d8..c3b4be44a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Vector3; @@ -19,7 +19,7 @@ public class TerraWorldImpl implements TerraWorld { private final WorldConfigImpl config; private final boolean safe; private final World world; - private final BlockData air; + private final BlockState air; public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { @@ -56,7 +56,7 @@ public class TerraWorldImpl implements TerraWorld { @Override - public BlockData getUngeneratedBlock(int x, int y, int z) { + public BlockState getUngeneratedBlock(int x, int y, int z) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(x, z); Palette palette = biome.getGenerator(world).getPalette(y); Sampler sampler = config.getSamplerCache().get(x, z); @@ -76,7 +76,7 @@ public class TerraWorldImpl implements TerraWorld { } @Override - public BlockData getUngeneratedBlock(Vector3 v) { + public BlockState getUngeneratedBlock(Vector3 v) { return getUngeneratedBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); } } 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 657b2ff13..04b5f6f06 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 @@ -1,7 +1,7 @@ package com.dfsek.terra.world.carving; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.ChunkAccess; import com.dfsek.terra.api.world.World; @@ -11,10 +11,10 @@ import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator3D; public class NoiseCarver implements Carver { private final Range range; - private final BlockData data; + private final BlockState data; private final TerraPlugin main; - public NoiseCarver(Range range, BlockData data, TerraPlugin main) { + public NoiseCarver(Range range, BlockState data, TerraPlugin main) { this.range = range; this.data = data; this.main = main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 794fbdef8..5832e6fed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PaletteUtil; @@ -92,7 +92,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator { int height = FastMath.min((int) sampler.sample(x, 0, z), world.getMaxHeight() - 1); for(int y = FastMath.max(height, c.getSeaLevel()); y >= 0; y--) { - BlockData data = y > height ? seaPalette.get(seaPaletteLevel++, cx, y, cz) : PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel++, cx, y, cz); + BlockState data = y > height ? seaPalette.get(seaPaletteLevel++, cx, y, cz) : PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel++, cx, y, cz); chunk.setBlock(x, y, z, data); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 7f01d3d8f..b8b5dabdf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.data.Bisected; @@ -103,7 +103,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { Palette seaPalette = c.getOceanPalette(); boolean justSet = false; - BlockData data = null; + BlockState data = null; for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { if(sampler.sample(x, y, z) > 0) { justSet = true; @@ -138,20 +138,20 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map slabs, + private void prepareBlockPartFloor(BlockState down, BlockState orig, ChunkData chunk, Vector3 block, Map slabs, Map stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) { if(stairs != null) { Palette stairPalette = stairs.get(down.getBlockType()); if(stairPalette != null) { - BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); + BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); if(stair instanceof Stairs) { Stairs stairNew = (Stairs) stair; if(placeStair(orig, chunk, block, thresh, sampler, stairNew)) return; // Successfully placed part. } } } - BlockData slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()); + BlockState slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()); if(slab instanceof Waterlogged) { ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water)); } else if(orig.getBlockType().equals(water)) return; @@ -159,13 +159,13 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map slabs, + private void prepareBlockPartCeiling(BlockState up, BlockState orig, ChunkData chunk, Vector3 block, Map slabs, Map stairs, double thresh, Sampler sampler) { if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) { if(stairs != null) { Palette stairPalette = stairs.get(up.getBlockType()); if(stairPalette != null) { - BlockData stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); + BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); if(stair instanceof Stairs) { Stairs stairNew = (Stairs) stair.clone(); stairNew.setHalf(Bisected.Half.TOP); @@ -173,7 +173,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } } - BlockData slab = slabs.getOrDefault(up.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone(); + BlockState slab = slabs.getOrDefault(up.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone(); if(slab instanceof Bisected) ((Bisected) slab).setHalf(Bisected.Half.TOP); if(slab instanceof Slab) ((Slab) slab).setType(Slab.Type.TOP); if(slab instanceof Waterlogged) { @@ -183,7 +183,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private boolean placeStair(BlockData orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, Stairs stairNew) { + private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, Stairs stairNew) { if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index fcfefebde..c547f8516 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.handle.WorldHandle; @@ -22,7 +22,7 @@ import java.util.Map; import java.util.Random; public class CavePopulator implements TerraBlockPopulator, Chunkified { - private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. + private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. private final TerraPlugin main; public CavePopulator(TerraPlugin main) { @@ -34,7 +34,7 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); WorldHandle handle = main.getWorldHandle(); - BlockData AIR = handle.createBlockData("minecraft:air"); + BlockState AIR = handle.createBlockData("minecraft:air"); try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); if(!tw.isSafe()) return; @@ -43,10 +43,10 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); + Map shiftCandidate = new HashMap<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { - BlockData m = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); + BlockState m = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); BlockType re = m.getBlockType(); switch(type) { case CENTER: @@ -76,10 +76,10 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { } } }); - for(Map.Entry entry : shiftCandidate.entrySet()) { + for(Map.Entry entry : shiftCandidate.entrySet()) { Vector3 l = entry.getKey(); Vector3 mut = l.clone(); - BlockData orig = chunk.getBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); + BlockState orig = chunk.getBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); do mut.subtract(0, 1, 0); while(mut.getY() > world.getMinHeight() && chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches(orig)); try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 8654fc763..1986ab197 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; @@ -105,7 +105,7 @@ public class TerraFlora implements Flora { for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor int lvl = (FastMath.abs(i)); - BlockData data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); + BlockState data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); if(doRotation) { BlockFace oneFace = faces.get(new FastRandom(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. if(data instanceof Directional) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index fcf0cb427..50c1abf31 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.Chunk; @@ -12,13 +12,13 @@ import java.util.Random; public abstract class Ore { - private final BlockData material; + private final BlockState material; private final MaterialSet replaceable; private final boolean applyGravity; protected TerraPlugin main; - private final Map materials; + private final Map materials; - public Ore(BlockData material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main, Map materials) { + public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main, Map materials) { this.material = material; this.replaceable = replaceable; this.applyGravity = applyGravity; @@ -28,7 +28,7 @@ public abstract class Ore { public abstract void generate(Vector3Impl origin, Chunk c, Random r); - public BlockData getMaterial(BlockType replace) { + public BlockState getMaterial(BlockType replace) { return materials.getOrDefault(replace, material); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index b4e22b67c..c77fe3ed5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -16,7 +16,7 @@ import java.util.Random; public class VanillaOre extends Ore { private final Range sizeRange; - public VanillaOre(BlockData material, MaterialSet replaceable, boolean applyGravity, Range size, TerraPlugin main, Map materials) { + public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, TerraPlugin main, Map materials) { super(material, replaceable, applyGravity, main, materials); this.sizeRange = size; } 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 43ee73e5f..29cbaae5e 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 @@ -8,7 +8,7 @@ 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.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -302,7 +302,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { @Override public void register(TypeRegistry registry) { registry - .registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o)) + .registerLoader(BlockState.class, (t, o, l) -> handle.createBlockData((String) o)) .registerLoader(Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); genericLoaders.register(registry); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java index ad6cb7c4b..1cf97ec6d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.generator; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import org.bukkit.generator.ChunkGenerator; import org.jetbrains.annotations.NotNull; @@ -38,14 +38,14 @@ public class BukkitChunkGenerator implements com.dfsek.terra.api.world.generator @Override - public void setBlock(int x, int y, int z, @NotNull BlockData blockData) { - delegate.setBlock(x, y, z, ((BukkitBlockData) blockData).getHandle()); + public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { + delegate.setBlock(x, y, z, ((BukkitBlockState) blockState).getHandle()); } @Override - public @NotNull BlockData getBlock(int x, int y, int z) { - return BukkitBlockData.newInstance(delegate.getBlockData(x, y, z)); + public @NotNull BlockState getBlock(int x, int y, int z) { + return BukkitBlockState.newInstance(delegate.getBlockData(x, y, z)); } } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index ff04089f5..dc80bf9fc 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; @@ -8,16 +8,16 @@ import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.Bukkit; public class BukkitWorldHandle implements WorldHandle { @Override - public BlockData createBlockData(String data) { + public BlockState createBlockData(String data) { org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data); - return BukkitBlockData.newInstance(bukkitData); + return BukkitBlockState.newInstance(bukkitData); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 4880beaf4..72d418d12 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.block.Axis; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.data.Bisected; @@ -22,7 +22,7 @@ import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitPlayer; import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; import com.dfsek.terra.vector.Vector3Impl; @@ -67,12 +67,12 @@ public final class BukkitAdapter { } } - public static BlockData adapt(org.bukkit.block.data.BlockData data) { - return BukkitBlockData.newInstance(data); + public static BlockState adapt(org.bukkit.block.data.BlockData data) { + return BukkitBlockState.newInstance(data); } - public static org.bukkit.block.data.BlockData adapt(BlockData data) { - return ((BukkitBlockData) data).getHandle(); + public static org.bukkit.block.data.BlockData adapt(BlockState data) { + return ((BukkitBlockState) data).getHandle(); } public static Axis adapt(org.bukkit.Axis axis) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index 63c780e7c..dda9cd9a4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import org.jetbrains.annotations.NotNull; @@ -33,17 +33,17 @@ public class BukkitChunk implements Chunk { } @Override - public void setBlock(int x, int y, int z, @NotNull BlockData blockData) { - delegate.getBlock(x, y, z).setBlockData(BukkitAdapter.adapt(blockData)); + public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { + delegate.getBlock(x, y, z).setBlockData(BukkitAdapter.adapt(blockState)); } @Override - public @NotNull BlockData getBlock(int x, int y, int z) { + public @NotNull BlockState getBlock(int x, int y, int z) { return BukkitAdapter.adapt(delegate.getBlock(x, y, z).getBlockData()); } @Override - public void setBlock(int x, int y, int z, BlockData data, boolean physics) { + public void setBlock(int x, int y, int z, BlockState data, boolean physics) { delegate.getBlock(x, y, z).setBlockData(BukkitAdapter.adapt(data), physics); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 055302a9a..d01449852 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -56,12 +56,12 @@ public class BukkitWorld implements World { } @Override - public BlockData getBlockData(int x, int y, int z) { + public BlockState getBlockData(int x, int y, int z) { return BukkitAdapter.adapt(delegate.getBlockAt(x, y, z).getBlockData()); } @Override - public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void setBlockData(int x, int y, int z, BlockState data, boolean physics) { delegate.getBlockAt(x, y, z).setBlockData(BukkitAdapter.adapt(data), physics); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 8e72cc3f0..14e3c8da3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; @@ -20,7 +20,7 @@ public class BukkitBlockTypeAndItem implements BlockType, Item { } @Override - public BlockData getDefaultData() { + public BlockState getDefaultData() { return BukkitAdapter.adapt(delegate.createBlockData()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java index 4179e58d4..282a38ec3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java @@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.data.AnaloguePowerable; -public class BukkitAnaloguePowerable extends BukkitBlockData implements AnaloguePowerable { +public class BukkitAnaloguePowerable extends BukkitBlockState implements AnaloguePowerable { public BukkitAnaloguePowerable(org.bukkit.block.data.AnaloguePowerable delegate) { super(delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java similarity index 83% rename from platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java rename to platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index ee4635636..41e3c1f76 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockData.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; @@ -17,14 +17,14 @@ import org.bukkit.block.data.type.Slab; import org.bukkit.block.data.type.Stairs; import org.bukkit.block.data.type.Wall; -public class BukkitBlockData implements BlockData { +public class BukkitBlockState implements BlockState { private org.bukkit.block.data.BlockData delegate; - protected BukkitBlockData(org.bukkit.block.data.BlockData delegate) { + protected BukkitBlockState(org.bukkit.block.data.BlockData delegate) { this.delegate = delegate; } - public static BukkitBlockData newInstance(org.bukkit.block.data.BlockData bukkitData) { + public static BukkitBlockState newInstance(org.bukkit.block.data.BlockData bukkitData) { if(bukkitData instanceof Rail) return new BukkitRail((Rail) bukkitData); if(bukkitData instanceof Stairs) return new BukkitStairs((Stairs) bukkitData); @@ -43,7 +43,7 @@ public class BukkitBlockData implements BlockData { if(bukkitData instanceof Waterlogged) return new BukkitWaterlogged((Waterlogged) bukkitData); - return new BukkitBlockData(bukkitData); + return new BukkitBlockState(bukkitData); } @@ -58,14 +58,14 @@ public class BukkitBlockData implements BlockData { } @Override - public boolean matches(BlockData data) { - return delegate.getMaterial() == ((BukkitBlockData) data).getHandle().getMaterial(); + public boolean matches(BlockState data) { + return delegate.getMaterial() == ((BukkitBlockState) data).getHandle().getMaterial(); } @Override - public BukkitBlockData clone() { + public BukkitBlockState clone() { try { - BukkitBlockData n = (BukkitBlockData) super.clone(); + BukkitBlockState n = (BukkitBlockState) super.clone(); n.delegate = delegate.clone(); return n; } catch(CloneNotSupportedException e) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java index 64a447a48..2db168092 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.bukkit.world.BukkitAdapter; -public class BukkitDirectional extends BukkitBlockData implements Directional { +public class BukkitDirectional extends BukkitBlockState implements Directional { public BukkitDirectional(org.bukkit.block.data.Directional delegate) { super(delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java index 7a4b5f484..58bfe66c0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java @@ -7,7 +7,7 @@ import com.dfsek.terra.bukkit.world.BukkitAdapter; import java.util.Set; import java.util.stream.Collectors; -public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFacing { +public class BukkitMultipleFacing extends BukkitBlockState implements MultipleFacing { public BukkitMultipleFacing(org.bukkit.block.data.MultipleFacing delegate) { super(delegate); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java index 87d9d2587..786b706ae 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java @@ -7,7 +7,7 @@ import com.dfsek.terra.bukkit.world.BukkitAdapter; import java.util.Set; import java.util.stream.Collectors; -public class BukkitOrientable extends BukkitBlockData implements Orientable { +public class BukkitOrientable extends BukkitBlockState implements Orientable { public BukkitOrientable(org.bukkit.block.data.Orientable delegate) { super(delegate); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java index 3c7455735..2f863da3b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java @@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.data.Rail; import com.dfsek.terra.bukkit.world.BukkitAdapter; -public class BukkitRail extends BukkitBlockData implements Rail { +public class BukkitRail extends BukkitBlockState implements Rail { public BukkitRail(org.bukkit.block.data.Rail delegate) { super(delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java index 5b5c7be8d..b0d7f287c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Rotatable; import com.dfsek.terra.bukkit.world.BukkitAdapter; -public class BukkitRotatable extends BukkitBlockData implements Rotatable { +public class BukkitRotatable extends BukkitBlockState implements Rotatable { public BukkitRotatable(org.bukkit.block.data.Rotatable delegate) { super(delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java index 046b17b91..5f050abfc 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.bukkit.world.BukkitAdapter; -public class BukkitStairs extends BukkitBlockData implements Stairs { +public class BukkitStairs extends BukkitBlockState implements Stairs { public BukkitStairs(org.bukkit.block.data.type.Stairs delegate) { super(delegate); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java index a866d32f2..fd1b60f14 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java @@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.data.Waterlogged; -public class BukkitWaterlogged extends BukkitBlockData implements Waterlogged { +public class BukkitWaterlogged extends BukkitBlockState implements Waterlogged { public BukkitWaterlogged(org.bukkit.block.data.Waterlogged delegate) { super(delegate); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 96119b692..5d668772f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,10 +1,10 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Sign; @@ -49,8 +49,8 @@ public class BukkitBlockEntity implements BlockEntity { } @Override - public BlockData getBlockData() { - return BukkitBlockData.newInstance(delegate.getBlockData()); + public BlockState getBlockData() { + return BukkitBlockState.newInstance(delegate.getBlockData()); } @Override 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 fe6a6385d..6dc65d815 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 @@ -9,7 +9,7 @@ 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.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -235,7 +235,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public void register(TypeRegistry registry) { genericLoaders.register(registry); registry - .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) + .registerLoader(BlockState.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o)) .registerLoader(Identifier.class, (t, o, l) -> { Identifier identifier = Identifier.tryParse((String) o); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java similarity index 71% rename from platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java rename to platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java index 05e4fd21e..a285bdadd 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockData.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java @@ -1,18 +1,17 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.mixin.access.StateAccessor; -import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.registry.Registry; import java.util.stream.Collectors; -public class FabricBlockData implements BlockData { - protected BlockState delegate; +public class FabricBlockState implements BlockState { + protected net.minecraft.block.BlockState delegate; - public FabricBlockData(BlockState delegate) { + public FabricBlockState(net.minecraft.block.BlockState delegate) { this.delegate = delegate; } @@ -22,14 +21,14 @@ public class FabricBlockData implements BlockData { } @Override - public boolean matches(BlockData other) { - return delegate.getBlock() == ((FabricBlockData) other).delegate.getBlock(); + public boolean matches(BlockState other) { + return delegate.getBlock() == ((FabricBlockState) other).delegate.getBlock(); } @Override - public BlockData clone() { + public BlockState clone() { try { - return (FabricBlockData) super.clone(); + return (FabricBlockState) super.clone(); } catch(CloneNotSupportedException e) { throw new Error(e); } @@ -57,7 +56,7 @@ public class FabricBlockData implements BlockData { } @Override - public BlockState getHandle() { + public net.minecraft.block.BlockState getHandle() { return delegate; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java index 7e0345474..9083d664e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java @@ -1,13 +1,13 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.data.AnaloguePowerable; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.block.BlockState; /** * None of this actually has implementation, TODO: implement this if we ever end up needing it. */ -public class FabricAnaloguePowerable extends FabricBlockData implements AnaloguePowerable { +public class FabricAnaloguePowerable extends FabricBlockState implements AnaloguePowerable { public FabricAnaloguePowerable(BlockState delegate) { super(delegate); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java index 8d5eff52e..b3e66bbb6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java @@ -2,12 +2,12 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; import net.minecraft.state.property.DirectionProperty; -public class FabricDirectional extends FabricBlockData implements Directional { +public class FabricDirectional extends FabricBlockState implements Directional { private final DirectionProperty property; public FabricDirectional(BlockState delegate, DirectionProperty property) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java index 2dbfe8e27..fb5240b72 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java @@ -2,14 +2,14 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; import java.util.HashSet; import java.util.Set; -public class FabricMultipleFacing extends FabricBlockData implements MultipleFacing { +public class FabricMultipleFacing extends FabricBlockState implements MultipleFacing { public FabricMultipleFacing(BlockState delegate) { super(delegate); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java index 4a92e02c4..566daa696 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.data.Orientable; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.BlockState; import net.minecraft.state.property.EnumProperty; @@ -12,7 +12,7 @@ import java.util.Arrays; import java.util.Set; import java.util.stream.Collectors; -public class FabricOrientable extends FabricBlockData implements Orientable { +public class FabricOrientable extends FabricBlockState implements Orientable { private final EnumProperty property; public FabricOrientable(BlockState delegate, EnumProperty property) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java index 2dc2eee73..87fa2f184 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java @@ -2,11 +2,11 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; -public class FabricRotatable extends FabricBlockData implements Rotatable { +public class FabricRotatable extends FabricBlockState implements Rotatable { public FabricRotatable(BlockState delegate) { super(delegate); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java index e1e71a3ce..344af38cd 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java @@ -1,11 +1,11 @@ package com.dfsek.terra.fabric.block.data; import com.dfsek.terra.api.block.data.Waterlogged; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; -public class FabricWaterlogged extends FabricBlockData implements Waterlogged { +public class FabricWaterlogged extends FabricBlockState implements Waterlogged { public FabricWaterlogged(BlockState delegate) { super(delegate); } 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 8dca5d0e5..d90b3a901 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 @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; @@ -177,7 +177,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) { TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType); int height = world.getWorld().getMaxHeight(); - while(height >= world.getWorld().getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockData) world.getUngeneratedBlock(x, height - 1, z)).getHandle())) { + while(height >= world.getWorld().getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) world.getUngeneratedBlock(x, height - 1, z)).getHandle())) { height--; } return height; @@ -188,7 +188,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType); BlockState[] array = new BlockState[view.getHeight()]; for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) { - array[y] = ((FabricBlockData) world.getUngeneratedBlock(x, y, z)).getHandle(); + array[y] = ((FabricBlockState) world.getUngeneratedBlock(x, y, z)).getHandle(); } return new VerticalBlockSample(view.getBottomY(), array); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 0cb9f0b11..eed56dff1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.fabric.util.WorldEditUtil; import com.mojang.brigadier.StringReader; @@ -20,7 +20,7 @@ import java.util.Locale; public class FabricWorldHandle implements WorldHandle { @Override - public FabricBlockData createBlockData(String data) { + public FabricBlockState createBlockData(String data) { BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true); try { BlockState state = parser.parse(true).getBlockState(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index 71494d8a1..5ee4bf7cd 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.util.math.BlockPos; @@ -46,7 +46,7 @@ public abstract class BlockEntityMixin { return pos.getZ(); } - public BlockData terra$getBlockData() { + public BlockState terra$getBlockData() { return FabricAdapter.adapt(getCachedState()); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index 99b62296e..7e1f830b3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -1,10 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -16,14 +15,14 @@ import org.spongepowered.asm.mixin.Shadow; @Implements(@Interface(iface = BlockType.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BlockMixin { @Shadow - private BlockState defaultState; + private net.minecraft.block.BlockState defaultState; @Intrinsic public Object terra$getHandle() { return this; } - public BlockData terra$getDefaultData() { + public BlockState terra$getDefaultData() { return FabricAdapter.adapt(defaultState); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index fedc9229c..c9e631b03 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.ChunkRegion; @@ -33,12 +33,12 @@ public abstract class ChunkRegionMixin { return (World) this; } - public @NotNull BlockData terraChunk$getBlock(int x, int y, int z) { - return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)))); + public @NotNull BlockState terraChunk$getBlock(int x, int y, int z) { + return new FabricBlockState(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)))); } - public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockData blockData, boolean physics) { - ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockData) blockData).getHandle(), 0); + public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockState blockState, boolean physics) { + ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockState) blockState).getHandle(), 0); } // getHandle already added in world/ChunkRegionMixin. diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 8b3e23e54..5e92ceb5b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -1,10 +1,9 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.fabric.block.FabricBlockData; -import net.minecraft.block.BlockState; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.WorldChunk; import org.jetbrains.annotations.NotNull; @@ -24,11 +23,11 @@ public abstract class WorldChunkMixin { private net.minecraft.world.World world; @Shadow - public abstract BlockState getBlockState(BlockPos pos); + public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos); @Shadow @Nullable - public abstract BlockState setBlockState(BlockPos pos, BlockState state, boolean moved); + public abstract net.minecraft.block.BlockState setBlockState(BlockPos pos, net.minecraft.block.BlockState state, boolean moved); public int terra$getX() { return ((net.minecraft.world.chunk.Chunk) this).getPos().x; @@ -42,16 +41,16 @@ public abstract class WorldChunkMixin { return (World) world; } - public @NotNull BlockData terra$getBlock(int x, int y, int z) { - return new FabricBlockData(getBlockState(new BlockPos(x, y, z))); + public @NotNull BlockState terra$getBlock(int x, int y, int z) { + return new FabricBlockState(getBlockState(new BlockPos(x, y, z))); } - public void terra$setBlock(int x, int y, int z, BlockData data, boolean physics) { - setBlockState(new BlockPos(x, y, z), ((FabricBlockData) data).getHandle(), false); + public void terra$setBlock(int x, int y, int z, BlockState data, boolean physics) { + setBlockState(new BlockPos(x, y, z), ((FabricBlockState) data).getHandle(), false); } - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { - ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockData) blockData).getHandle(), false); + public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) { + ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); } @Intrinsic diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 49d416385..7632d1132 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -1,9 +1,8 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.fabric.block.FabricBlockData; -import net.minecraft.block.BlockState; +import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.ProtoChunk; import org.jetbrains.annotations.NotNull; @@ -17,14 +16,14 @@ import org.spongepowered.asm.mixin.Shadow; @Implements(@Interface(iface = ChunkData.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ProtoChunkMixin { @Shadow - public abstract BlockState getBlockState(BlockPos pos); + public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos); - public @NotNull BlockData terra$getBlock(int x, int y, int z) { - return new FabricBlockData(getBlockState(new BlockPos(x, y, z))); + public @NotNull BlockState terra$getBlock(int x, int y, int z) { + return new FabricBlockState(getBlockState(new BlockPos(x, y, z))); } - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { - ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockData) blockData).getHandle(), false); + public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) { + ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); } @Intrinsic diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index a2347757c..39a6fbd55 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -10,10 +10,9 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.util.FabricUtil; -import net.minecraft.block.BlockState; import net.minecraft.block.FluidBlock; import net.minecraft.fluid.Fluid; import net.minecraft.server.world.ServerWorld; @@ -41,7 +40,7 @@ public abstract class ChunkRegionMixin { private long seed; @Shadow - public abstract boolean setBlockState(BlockPos pos, BlockState state, int flags, int maxUpdateDepth); + public abstract boolean setBlockState(BlockPos pos, net.minecraft.block.BlockState state, int flags, int maxUpdateDepth); @Shadow public abstract TickScheduler getFluidTickScheduler(); @@ -72,17 +71,17 @@ public abstract class ChunkRegionMixin { } @Intrinsic(displace = true) - public BlockData terraWorld$getBlockData(int x, int y, int z) { + public BlockState terraWorld$getBlockData(int x, int y, int z) { BlockPos pos = new BlockPos(x, y, z); - return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(pos)); + return new FabricBlockState(((ChunkRegion) (Object) this).getBlockState(pos)); } @Intrinsic(displace = true) - public void terraWorld$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void terraWorld$setBlockData(int x, int y, int z, BlockState data, boolean physics) { BlockPos pos = new BlockPos(x, y, z); - ((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); - if(physics && ((FabricBlockData) data).getHandle().getBlock() instanceof FluidBlock) { - getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockData) data).getHandle().getBlock()).getFluidState(((FabricBlockData) data).getHandle()).getFluid(), 0); + ((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042); + if(physics && ((FabricBlockState) data).getHandle().getBlock() instanceof FluidBlock) { + getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockState) data).getHandle().getBlock()).getFluidState(((FabricBlockState) data).getHandle()).getFluid(), 0); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 75489d162..832b6c4e9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.server.world.ServerWorld; @@ -45,13 +45,13 @@ public abstract class ServerWorldMixin { return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z)); } - public BlockData terra$getBlockData(int x, int y, int z) { - return new FabricBlockData(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z))); + public BlockState terra$getBlockData(int x, int y, int z) { + return new FabricBlockState(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z))); } - public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void terra$setBlockData(int x, int y, int z, BlockState data, boolean physics) { BlockPos pos = new BlockPos(x, y, z); - ((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042); + ((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042); } public Entity terra$spawnEntity(Vector3 location, EntityType entityType) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 75691d76b..eb47630c2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.block.data.Bisected; import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.fabric.block.FabricBlockData; +import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.block.data.FabricDirectional; import com.dfsek.terra.fabric.block.data.FabricMultipleFacing; import com.dfsek.terra.fabric.block.data.FabricOrientable; @@ -34,7 +34,7 @@ public final class FabricAdapter { return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ()); } - public static FabricBlockData adapt(BlockState state) { + public static FabricBlockState adapt(BlockState state) { if(state.contains(Properties.STAIR_SHAPE)) return new FabricStairs(state); if(state.contains(Properties.SLAB_TYPE)) return new FabricSlab(state); @@ -51,7 +51,7 @@ public final class FabricAdapter { if(state.getProperties().containsAll(Arrays.asList(Properties.NORTH, Properties.SOUTH, Properties.EAST, Properties.WEST))) return new FabricMultipleFacing(state); if(state.contains(Properties.WATERLOGGED)) return new FabricWaterlogged(state); - return new FabricBlockData(state); + return new FabricBlockState(state); } public static Direction adapt(BlockFace face) { 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 9d784a7a7..f18e9921c 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -3,7 +3,7 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; @@ -136,7 +136,7 @@ public class StandalonePlugin implements TerraPlugin { @Override public void register(TypeRegistry registry) { registry - .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) + .registerLoader(BlockState.class, (t, o, l) -> worldHandle.createBlockData((String) o)) .registerLoader(Biome.class, (t, o, l) -> new RawBiome(o.toString())); new GenericLoaders(this).register(registry); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java index a4e50d059..7e0bb1eac 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.vector.Vector3; @@ -26,7 +26,7 @@ public class DirectBlockEntity implements BlockEntity { } @Override - public BlockData getBlockData() { + public BlockState getBlockData() { return null; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index 62173010a..d2409661f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import net.querz.mca.Chunk; @@ -31,19 +31,19 @@ public class DirectChunkData implements ChunkData, com.dfsek.terra.api.world.Chu } @Override - public void setBlock(int x, int y, int z, @NotNull BlockData blockData) { - delegate.setBlockStateAt(x, y, z, ((Data) blockData).getHandle(), false); + public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { + delegate.setBlockStateAt(x, y, z, ((State) blockState).getHandle(), false); } @Override - public @NotNull BlockData getBlock(int x, int y, int z) { + public @NotNull BlockState getBlock(int x, int y, int z) { CompoundTag tag = delegate.getBlockStateAt(x, y, z); - if(tag == null) return new Data("minecraft:air"); - return new Data(tag.getString("Name")); + if(tag == null) return new State("minecraft:air"); + return new State(tag.getString("Name")); } @Override - public void setBlock(int x, int y, int z, BlockData data, boolean physics) { + public void setBlock(int x, int y, int z, BlockState data, boolean physics) { setBlock(x, y, z, data); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index ea9d407c0..ceddd527f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.state.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -57,12 +57,12 @@ public class DirectWorld implements World { } @Override - public BlockData getBlockData(int x, int y, int z) { + public BlockState getBlockData(int x, int y, int z) { return null; } @Override - public void setBlockData(int x, int y, int z, BlockData data, boolean physics) { + public void setBlockData(int x, int y, int z, BlockState data, boolean physics) { } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java index 0c78798b1..22a5e00bb 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java @@ -1,14 +1,14 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; public class RawWorldHandle implements WorldHandle { @Override - public BlockData createBlockData(String data) { - return new Data(data); + public BlockState createBlockData(String data) { + return new State(data); } @Override diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java similarity index 80% rename from platforms/region/src/main/java/com/dfsek/terra/platform/Data.java rename to platforms/region/src/main/java/com/dfsek/terra/platform/State.java index eb956ea2a..21b1fd9a7 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/Data.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java @@ -1,14 +1,14 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; import net.querz.nbt.tag.CompoundTag; -public class Data implements BlockData, BlockType { +public class State implements BlockState, BlockType { private final CompoundTag data; private final String noProp; - public Data(String data) { + public State(String data) { this.data = new CompoundTag(); if(data.contains("[")) { noProp = data.substring(0, data.indexOf('[')); // Strip properties @@ -26,7 +26,7 @@ public class Data implements BlockData, BlockType { this.data.putString("Name", noProp); } - public Data(CompoundTag tag) { + public State(CompoundTag tag) { if(tag == null) { this.data = new CompoundTag(); data.putString("Name", "minecraft:air"); @@ -43,8 +43,8 @@ public class Data implements BlockData, BlockType { } @Override - public boolean matches(BlockData other) { - return ((Data) other).noProp.equals(noProp); + public boolean matches(BlockState other) { + return ((State) other).noProp.equals(noProp); } @Override @@ -59,9 +59,9 @@ public class Data implements BlockData, BlockType { @Override - public BlockData clone() { + public BlockState clone() { try { - return (BlockData) super.clone(); + return (BlockState) super.clone(); } catch(CloneNotSupportedException e) { throw new Error(e); } @@ -84,12 +84,12 @@ public class Data implements BlockData, BlockType { @Override public boolean equals(Object obj) { - if(!(obj instanceof Data)) return false; - return ((Data) obj).noProp.equals(noProp); + if(!(obj instanceof State)) return false; + return ((State) obj).noProp.equals(noProp); } @Override - public BlockData getDefaultData() { + public BlockState getDefaultData() { return this; } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java index 669253dd9..43f453464 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java @@ -1,15 +1,14 @@ package com.dfsek.terra.sponge; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.sponge.world.block.data.SpongeBlockData; -import org.spongepowered.api.block.BlockState; +import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.sponge.world.block.data.SpongeBlockState; public final class SpongeAdapter { - public static BlockData adapt(BlockState state) { - return new SpongeBlockData(state); + public static BlockState adapt(org.spongepowered.api.block.BlockState state) { + return new SpongeBlockState(state); } - public static BlockState adapt(BlockData data) { - return ((SpongeBlockData) data).getHandle(); + public static org.spongepowered.api.block.BlockState adapt(BlockState data) { + return ((SpongeBlockState) data).getHandle(); } } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java index f48453aaa..1294e3d54 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java @@ -1,16 +1,15 @@ package com.dfsek.terra.sponge.world; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.sponge.SpongeAdapter; import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockState; public class SpongeWorldHandle implements WorldHandle { @Override - public BlockData createBlockData(String data) { - return SpongeAdapter.adapt(Sponge.getRegistry().getType(BlockState.class, data).orElseThrow(() -> new IllegalArgumentException("Invalid block data \"" + data + "\""))); + public BlockState createBlockData(String data) { + return SpongeAdapter.adapt(Sponge.getRegistry().getType(org.spongepowered.api.block.BlockState.class, data).orElseThrow(() -> new IllegalArgumentException("Invalid block data \"" + data + "\""))); } @Override diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java similarity index 59% rename from platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java rename to platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java index 5782d392a..bc3d116a1 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockData.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java @@ -1,18 +1,17 @@ package com.dfsek.terra.sponge.world.block.data; -import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockType; -import org.spongepowered.api.block.BlockState; -public class SpongeBlockData implements BlockData { - private final BlockState delegate; +public class SpongeBlockState implements BlockState { + private final org.spongepowered.api.block.BlockState delegate; - public SpongeBlockData(BlockState delegate) { + public SpongeBlockState(org.spongepowered.api.block.BlockState delegate) { this.delegate = delegate; } @Override - public BlockState getHandle() { + public org.spongepowered.api.block.BlockState getHandle() { return delegate; } @@ -22,12 +21,12 @@ public class SpongeBlockData implements BlockData { } @Override - public boolean matches(BlockData other) { + public boolean matches(BlockState other) { return false; } @Override - public BlockData clone() { + public BlockState clone() { return null; } From edb5e316baaf81b84f2e607ca4b98711107c551b Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 20:30:19 -0700 Subject: [PATCH 0073/1529] more properties --- .../java/com/dfsek/terra/api/block/Axis.java | 5 -- .../com/dfsek/terra/api/block/BlockState.java | 7 ++ .../terra/api/block/data/Orientable.java | 2 +- .../com/dfsek/terra/api/block/data/Rail.java | 17 +---- .../data/properties/base/BooleanProperty.java | 19 ++++++ .../data/properties/base/EnumProperty.java | 23 +++++++ .../data/properties/base/IntProperty.java | 27 ++++++++ .../data/properties/base/Properties.java | 17 +++++ .../api/block/data/properties/enums/Axis.java | 5 ++ .../data/properties/enums/Direction.java | 5 ++ .../data/properties/enums/RailShape.java | 14 ++++ .../terra/api/util/generic/Construct.java | 9 +++ .../dfsek/terra/api/util/generic/Lazy.java | 25 +++++++ .../dfsek/terra/api/util/RotationUtil.java | 67 ++++++++++--------- .../terra/bukkit/world/BukkitAdapter.java | 28 ++++---- .../world/block/data/BukkitOrientable.java | 2 +- .../bukkit/world/block/data/BukkitRail.java | 5 +- .../fabric/block/data/FabricOrientable.java | 2 +- .../terra/fabric/util/FabricAdapter.java | 2 +- 19 files changed, 209 insertions(+), 72 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/Axis.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/generic/Construct.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java deleted file mode 100644 index 01b5085bf..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/Axis.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dfsek.terra.api.block; - -public enum Axis { - X, Y, Z -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java index 43f841a7e..dcd78342e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.data.properties.Property; public interface BlockState extends Cloneable, Handle { @@ -15,4 +16,10 @@ public interface BlockState extends Cloneable, Handle { boolean isAir(); boolean isStructureVoid(); + + boolean has(Property property); + + T get(Property property); + + BlockState set(Property property); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java index c0f9dab8e..0c0de4c91 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.BlockState; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java index 9edb2db52..716bd4f9e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java @@ -1,22 +1,11 @@ package com.dfsek.terra.api.block.data; import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.data.properties.enums.RailShape; public interface Rail extends BlockState { - Shape getShape(); + RailShape getShape(); - void setShape(Shape newShape); + void setShape(RailShape newShape); - enum Shape { - ASCENDING_EAST, - ASCENDING_NORTH, - ASCENDING_SOUTH, - ASCENDING_WEST, - EAST_WEST, - NORTH_EAST, - NORTH_SOUTH, - NORTH_WEST, - SOUTH_EAST, - SOUTH_WEST - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java index 6461cbd74..81c729d99 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java @@ -2,9 +2,28 @@ package com.dfsek.terra.api.block.data.properties.base; import com.dfsek.terra.api.block.data.properties.Property; +import java.util.Arrays; +import java.util.Collection; + public interface BooleanProperty extends Property { @Override default Class getType() { return Boolean.class; } + + static BooleanProperty of(String name) { + return new BooleanProperty() { + private static final Collection BOOLEANS = Arrays.asList(true, false); + + @Override + public String getName() { + return name; + } + + @Override + public Collection values() { + return BOOLEANS; + } + }; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java index c38c23f5f..6ede374bb 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java @@ -1,6 +1,29 @@ package com.dfsek.terra.api.block.data.properties.base; import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.util.generic.Lazy; + +import java.util.Arrays; +import java.util.Collection; public interface EnumProperty> extends Property { + static > EnumProperty of(String name, Class clazz) { + return new EnumProperty() { + private final Lazy> constants = Lazy.of(() -> Arrays.asList(clazz.getEnumConstants())); + @Override + public Class getType() { + return clazz; + } + + @Override + public String getName() { + return name; + } + + @Override + public Collection values() { + return constants.value(); + } + }; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java index 0c94d4d0a..490c4694c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java @@ -1,10 +1,37 @@ package com.dfsek.terra.api.block.data.properties.base; import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.util.generic.Construct; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; public interface IntProperty extends Property { @Override default Class getType() { return Integer.class; } + + static IntProperty of(String name, int min, int max) { + return new IntProperty() { + private final Collection collection = Construct.construct(() -> { + List ints = new ArrayList<>(); + for(int i = min; i <= max; i++) { + ints.add(i); + } + return ints; + }); + + @Override + public String getName() { + return name; + } + + @Override + public Collection values() { + return collection; + } + }; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java new file mode 100644 index 000000000..f757a9999 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.api.block.data.properties.base; + +import com.dfsek.terra.api.block.data.properties.enums.Direction; +import com.dfsek.terra.api.block.data.properties.enums.RailShape; + +public final class Properties { + public static final EnumProperty DIRECTION = EnumProperty.of("facing", Direction.class); + + public static final BooleanProperty NORTH = BooleanProperty.of("north"); + public static final BooleanProperty SOUTH = BooleanProperty.of("south"); + public static final BooleanProperty EAST = BooleanProperty.of("east"); + public static final BooleanProperty WEST = BooleanProperty.of("west"); + + public static final EnumProperty RAIL_SHAPE = EnumProperty.of("shape", RailShape.class); + + public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 15); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java new file mode 100644 index 000000000..e9338cbce --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.data.properties.enums; + +public enum Axis { + X, Y, Z +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java new file mode 100644 index 000000000..ff06427f6 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.data.properties.enums; + +public enum Direction { + NORTH,SOUTH,EAST,WEST,UP,DOWN +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java new file mode 100644 index 000000000..54c6c5b1d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java @@ -0,0 +1,14 @@ +package com.dfsek.terra.api.block.data.properties.enums; + +public enum RailShape { + ASCENDING_EAST, + ASCENDING_NORTH, + ASCENDING_SOUTH, + ASCENDING_WEST, + EAST_WEST, + NORTH_EAST, + NORTH_SOUTH, + NORTH_WEST, + SOUTH_EAST, + SOUTH_WEST +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Construct.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Construct.java new file mode 100644 index 000000000..2fb63fe8d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Construct.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.api.util.generic; + +import java.util.function.Supplier; + +public final class Construct { + public static T construct(Supplier in) { + return in.get(); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java new file mode 100644 index 000000000..b48129685 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.api.util.generic; + +import java.util.function.Supplier; + +public final class Lazy { + private final Supplier valueSupplier; + private T value = null; + private boolean got = false; + + private Lazy(Supplier valueSupplier) { + this.valueSupplier = valueSupplier; + } + + public T value() { + if(!got && value == null) { + got = true; + value = valueSupplier.get(); + } + return value; + } + + public static Lazy of(Supplier valueSupplier) { + return new Lazy<>(valueSupplier); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index ecda78388..34a0d4121 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.RailShape; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; @@ -174,76 +175,76 @@ public class RotationUtil { * @return Rotated/mirrored shape */ @SuppressWarnings("fallthrough") - public static Rail.Shape getRotatedRail(Rail.Shape orig, Rotation r) { + public static RailShape getRotatedRail(RailShape orig, Rotation r) { switch(r) { case CCW_90: switch(orig) { case NORTH_WEST: - return Rail.Shape.SOUTH_WEST; + return RailShape.SOUTH_WEST; case NORTH_SOUTH: - return Rail.Shape.EAST_WEST; + return RailShape.EAST_WEST; case SOUTH_WEST: - return Rail.Shape.SOUTH_EAST; + return RailShape.SOUTH_EAST; case SOUTH_EAST: - return Rail.Shape.NORTH_EAST; + return RailShape.NORTH_EAST; case EAST_WEST: - return Rail.Shape.NORTH_SOUTH; + return RailShape.NORTH_SOUTH; case NORTH_EAST: - return Rail.Shape.NORTH_WEST; + return RailShape.NORTH_WEST; case ASCENDING_EAST: - return Rail.Shape.ASCENDING_NORTH; + return RailShape.ASCENDING_NORTH; case ASCENDING_WEST: - return Rail.Shape.ASCENDING_SOUTH; + return RailShape.ASCENDING_SOUTH; case ASCENDING_NORTH: - return Rail.Shape.ASCENDING_WEST; + return RailShape.ASCENDING_WEST; case ASCENDING_SOUTH: - return Rail.Shape.ASCENDING_EAST; + return RailShape.ASCENDING_EAST; } case CW_90: switch(orig) { case NORTH_WEST: - return Rail.Shape.NORTH_EAST; + return RailShape.NORTH_EAST; case NORTH_SOUTH: - return Rail.Shape.EAST_WEST; + return RailShape.EAST_WEST; case SOUTH_WEST: - return Rail.Shape.NORTH_WEST; + return RailShape.NORTH_WEST; case SOUTH_EAST: - return Rail.Shape.SOUTH_WEST; + return RailShape.SOUTH_WEST; case EAST_WEST: - return Rail.Shape.NORTH_SOUTH; + return RailShape.NORTH_SOUTH; case NORTH_EAST: - return Rail.Shape.SOUTH_EAST; + return RailShape.SOUTH_EAST; case ASCENDING_EAST: - return Rail.Shape.ASCENDING_SOUTH; + return RailShape.ASCENDING_SOUTH; case ASCENDING_WEST: - return Rail.Shape.ASCENDING_NORTH; + return RailShape.ASCENDING_NORTH; case ASCENDING_NORTH: - return Rail.Shape.ASCENDING_EAST; + return RailShape.ASCENDING_EAST; case ASCENDING_SOUTH: - return Rail.Shape.ASCENDING_WEST; + return RailShape.ASCENDING_WEST; } case CW_180: switch(orig) { case NORTH_WEST: - return Rail.Shape.SOUTH_EAST; + return RailShape.SOUTH_EAST; case NORTH_SOUTH: - return Rail.Shape.NORTH_SOUTH; + return RailShape.NORTH_SOUTH; case SOUTH_WEST: - return Rail.Shape.NORTH_EAST; + return RailShape.NORTH_EAST; case SOUTH_EAST: - return Rail.Shape.NORTH_WEST; + return RailShape.NORTH_WEST; case EAST_WEST: - return Rail.Shape.EAST_WEST; + return RailShape.EAST_WEST; case NORTH_EAST: - return Rail.Shape.SOUTH_WEST; + return RailShape.SOUTH_WEST; case ASCENDING_EAST: - return Rail.Shape.ASCENDING_WEST; + return RailShape.ASCENDING_WEST; case ASCENDING_WEST: - return Rail.Shape.ASCENDING_EAST; + return RailShape.ASCENDING_EAST; case ASCENDING_NORTH: - return Rail.Shape.ASCENDING_SOUTH; + return RailShape.ASCENDING_SOUTH; case ASCENDING_SOUTH: - return Rail.Shape.ASCENDING_NORTH; + return RailShape.ASCENDING_NORTH; } } return orig; @@ -266,7 +267,7 @@ public class RotationUtil { mfData.setFace(getRotatedFace(face.getKey(), r), face.getValue()); } } else if(data instanceof Rail) { - Rail.Shape newShape = getRotatedRail(((Rail) data).getShape(), r); + RailShape newShape = getRotatedRail(((Rail) data).getShape(), r); ((Rail) data).setShape(newShape); } else if(data instanceof Orientable) { Axis newAxis = getRotatedAxis(((Orientable) data).getAxis(), r); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 72d418d12..775640022 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,12 +1,12 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.RailShape; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.data.Bisected; -import com.dfsek.terra.api.block.data.Rail; import com.dfsek.terra.api.block.data.RedstoneWire; import com.dfsek.terra.api.block.data.Slab; import com.dfsek.terra.api.block.data.Stairs; @@ -200,34 +200,34 @@ public final class BukkitAdapter { } } - public static Rail.Shape adapt(org.bukkit.block.data.Rail.Shape shape) { + public static RailShape adapt(org.bukkit.block.data.Rail.Shape shape) { switch(shape) { case SOUTH_WEST: - return Rail.Shape.SOUTH_WEST; + return RailShape.SOUTH_WEST; case SOUTH_EAST: - return Rail.Shape.SOUTH_EAST; + return RailShape.SOUTH_EAST; case NORTH_EAST: - return Rail.Shape.NORTH_EAST; + return RailShape.NORTH_EAST; case NORTH_WEST: - return Rail.Shape.NORTH_WEST; + return RailShape.NORTH_WEST; case ASCENDING_EAST: - return Rail.Shape.ASCENDING_EAST; + return RailShape.ASCENDING_EAST; case ASCENDING_WEST: - return Rail.Shape.ASCENDING_WEST; + return RailShape.ASCENDING_WEST; case ASCENDING_SOUTH: - return Rail.Shape.ASCENDING_SOUTH; + return RailShape.ASCENDING_SOUTH; case ASCENDING_NORTH: - return Rail.Shape.ASCENDING_NORTH; + return RailShape.ASCENDING_NORTH; case NORTH_SOUTH: - return Rail.Shape.NORTH_SOUTH; + return RailShape.NORTH_SOUTH; case EAST_WEST: - return Rail.Shape.EAST_WEST; + return RailShape.EAST_WEST; default: throw new IllegalStateException(); } } - public static org.bukkit.block.data.Rail.Shape adapt(Rail.Shape shape) { + public static org.bukkit.block.data.Rail.Shape adapt(RailShape shape) { switch(shape) { case EAST_WEST: return org.bukkit.block.data.Rail.Shape.EAST_WEST; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java index 786b706ae..a6b8930e3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java index 2f863da3b..5a7439e6c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.data.Rail; +import com.dfsek.terra.api.block.data.properties.enums.RailShape; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitRail extends BukkitBlockState implements Rail { @@ -9,12 +10,12 @@ public class BukkitRail extends BukkitBlockState implements Rail { } @Override - public Shape getShape() { + public RailShape getShape() { return BukkitAdapter.adapt(((org.bukkit.block.data.Rail) getHandle()).getShape()); } @Override - public void setShape(Shape newShape) { + public void setShape(RailShape newShape) { ((org.bukkit.block.data.Rail) getHandle()).setShape(BukkitAdapter.adapt(newShape)); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java index 566daa696..03766974a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index eb47630c2..abcb75e79 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.block.Axis; +import com.dfsek.terra.api.block.data.properties.enums.Axis; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Bisected; import com.dfsek.terra.api.block.data.Slab; From 4ecb08619f6f7392a0f4e77332376fac53ddaa94 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 20:30:55 -0700 Subject: [PATCH 0074/1529] refactor block entity package --- .../terra/api/block/{state => entity}/BlockEntity.java | 2 +- .../terra/api/block/{state => entity}/Container.java | 2 +- .../terra/api/block/{state => entity}/MobSpawner.java | 2 +- .../terra/api/block/{state => entity}/SerialState.java | 2 +- .../com/dfsek/terra/api/block/{state => entity}/Sign.java | 2 +- .../event/events/world/generation/LootPopulateEvent.java | 2 +- .../src/main/java/com/dfsek/terra/api/world/World.java | 2 +- .../structure/buffer/items/BufferedLootApplication.java | 4 ++-- .../structure/buffer/items/BufferedStateManipulator.java | 2 +- .../terra/commands/structure/StructureExportCommand.java | 4 ++-- .../java/com/dfsek/terra/config/dummy/DummyWorld.java | 2 +- .../java/com/dfsek/terra/bukkit/world/BukkitWorld.java | 2 +- .../terra/bukkit/world/block/state/BukkitBlockEntity.java | 2 +- .../terra/bukkit/world/block/state/BukkitContainer.java | 2 +- .../terra/bukkit/world/block/state/BukkitMobSpawner.java | 4 ++-- .../dfsek/terra/bukkit/world/block/state/BukkitSign.java | 4 ++-- .../mixin/implementations/block/BlockEntityMixin.java | 2 +- .../block/state/LootableContainerBlockEntityMixin.java | 2 +- .../block/state/MobSpawnerBlockEntityMixin.java | 4 ++-- .../implementations/block/state/SignBlockEntityMixin.java | 4 ++-- .../mixin/implementations/world/ChunkRegionMixin.java | 2 +- .../mixin/implementations/world/ServerWorldMixin.java | 2 +- .../main/java/com/dfsek/terra/fabric/util/FabricUtil.java | 8 ++++---- .../src/main/java/com/dfsek/terra/forge/ForgeAdapter.java | 8 ++++---- .../main/java/com/dfsek/terra/forge/block/ForgeBlock.java | 2 +- .../mixin/implementations/block/TileEntityMixin.java | 2 +- .../block/state/LockableLootTileEntityMixin.java | 2 +- .../block/state/MobSpawnerTileEntityMixin.java | 4 ++-- .../implementations/block/state/SignTileEntityMixin.java | 4 ++-- .../java/com/dfsek/terra/platform/DirectBlockEntity.java | 2 +- .../main/java/com/dfsek/terra/platform/DirectWorld.java | 2 +- 31 files changed, 45 insertions(+), 45 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/block/{state => entity}/BlockEntity.java (90%) rename common/api/src/main/java/com/dfsek/terra/api/block/{state => entity}/Container.java (76%) rename common/api/src/main/java/com/dfsek/terra/api/block/{state => entity}/MobSpawner.java (94%) rename common/api/src/main/java/com/dfsek/terra/api/block/{state => entity}/SerialState.java (98%) rename common/api/src/main/java/com/dfsek/terra/api/block/{state => entity}/Sign.java (87%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java similarity index 90% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java rename to common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java index dfbd43f52..85d48b597 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockEntity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.state; +package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockState; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java similarity index 76% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java rename to common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java index feda2d88f..07529b1e9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/Container.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.state; +package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.inventory.BlockInventoryHolder; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java similarity index 94% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java rename to common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java index e40889d4b..c9133ef46 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/MobSpawner.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.state; +package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.entity.EntityType; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java rename to common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java index 22c39ee44..97d19c2a3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/SerialState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.state; +package com.dfsek.terra.api.block.entity; import java.util.HashMap; import java.util.Map; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java similarity index 87% rename from common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java rename to common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java index 4f6d1d71f..8c1a4bfe6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/Sign.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.state; +package com.dfsek.terra.api.block.entity; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 9815c6add..3b2641cbc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.event.events.world.generation; -import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.AbstractCancellable; import com.dfsek.terra.api.event.events.Cancellable; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 3b70f5eb5..9d877bdf1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index 3ec922301..4e85a9416 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockEntity; -import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index addf523d1..637885ff7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 29a4398df..8064351a0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -2,8 +2,8 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index fdb01867a..3cefd1deb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.dummy; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index d01449852..8ff2e6c9f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 5d668772f..511a70a43 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java index fe4728bb8..834afa7ce 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.bukkit.world.inventory.BukkitInventory; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index af5a5b992..853a459ad 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.block.CreatureSpawner; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index be339bfeb..08fc00e46 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.state.SerialState; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.SerialState; +import com.dfsek.terra.api.block.entity.Sign; import org.jetbrains.annotations.NotNull; @SuppressWarnings("deprecation") diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index 5ee4bf7cd..e457b3052 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java index 588c1b463..e3df32ccf 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.fabric.mixin.implementations.block.BlockEntityMixin; import net.minecraft.block.entity.LootableContainerBlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index 4102ddde9..83983067f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.MobSpawnerLogicAccessor; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java index debd3a15c..2f0c36e8f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.SerialState; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.SerialState; +import com.dfsek.terra.api.block.entity.Sign; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 39a6fbd55..150b3723d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 832b6c4e9..ef51eef53 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 02b3d8a1f..c85ab12a1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -1,9 +1,9 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.block.state.BlockEntity; -import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.entity.Container; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.config.builder.BiomeBuilder; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java index d9dd869f4..4eceae900 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java @@ -2,9 +2,9 @@ package com.dfsek.terra.forge; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.state.Container; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.Container; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.forge.block.ForgeBlockData; import com.dfsek.terra.forge.block.data.ForgeDirectional; import com.dfsek.terra.forge.block.data.ForgeMultipleFacing; @@ -55,7 +55,7 @@ public final class ForgeAdapter { return new ForgeBlockData(state); } - public static com.dfsek.terra.api.block.state.BlockState adapt(com.dfsek.terra.api.block.Block block) { + public static com.dfsek.terra.api.block.entity.BlockState adapt(com.dfsek.terra.api.block.Block block) { IWorld worldAccess = (IWorld) block.getLocation().getWorld(); TileEntity entity = worldAccess.getBlockEntity(adapt(block.getLocation().toVector())); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java index f43b49905..6772a9825 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.entity.BlockState; import com.dfsek.terra.api.world.World; import com.dfsek.terra.forge.ForgeAdapter; import net.minecraft.block.FlowingFluidBlock; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java index 614fad18b..00344d40c 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java @@ -2,7 +2,7 @@ package com.dfsek.terra.forge.mixin.implementations.block; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.entity.BlockState; import com.dfsek.terra.forge.ForgeAdapter; import com.dfsek.terra.forge.block.ForgeBlock; import net.minecraft.tileentity.TileEntity; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java index 3b93eafef..c7585535f 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.Container; +import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.forge.mixin.implementations.block.TileEntityMixin; import net.minecraft.tileentity.LockableLootTileEntity; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java index 18a3df3cd..13ed6a0ca 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.MobSpawner; -import com.dfsek.terra.api.block.state.SerialState; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.forge.TerraForgePlugin; import com.dfsek.terra.forge.mixin.access.AbstractSpawnerAccessor; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java index 691530c4d..e759ffe4b 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.forge.mixin.implementations.block.state; -import com.dfsek.terra.api.block.state.SerialState; -import com.dfsek.terra.api.block.state.Sign; +import com.dfsek.terra.api.block.entity.SerialState; +import com.dfsek.terra.api.block.entity.Sign; import net.minecraft.tileentity.SignTileEntity; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java index 7e0bb1eac..60d9c4db5 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.vector.Vector3; public class DirectBlockEntity implements BlockEntity { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index ceddd527f..d842578d0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -2,7 +2,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.state.BlockEntity; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; From 43307b737c7dcff67e29cb2c2fb0bc8f3ad533b6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 25 Jun 2021 20:51:38 -0700 Subject: [PATCH 0075/1529] refactor block state package --- .../src/main/java/com/dfsek/terra/api/block/BlockType.java | 1 + .../com/dfsek/terra/api/block/data/AnaloguePowerable.java | 2 +- .../main/java/com/dfsek/terra/api/block/data/Bisected.java | 2 +- .../java/com/dfsek/terra/api/block/data/Directional.java | 2 +- .../java/com/dfsek/terra/api/block/data/MultipleFacing.java | 2 +- .../java/com/dfsek/terra/api/block/data/Orientable.java | 4 ++-- .../src/main/java/com/dfsek/terra/api/block/data/Rail.java | 4 ++-- .../java/com/dfsek/terra/api/block/data/RedstoneWire.java | 2 +- .../main/java/com/dfsek/terra/api/block/data/Rotatable.java | 2 +- .../src/main/java/com/dfsek/terra/api/block/data/Wall.java | 2 +- .../java/com/dfsek/terra/api/block/data/Waterlogged.java | 2 +- .../dfsek/terra/api/block/data/properties/enums/Axis.java | 5 ----- .../java/com/dfsek/terra/api/block/entity/BlockEntity.java | 2 +- .../com/dfsek/terra/api/block/{ => state}/BlockState.java | 5 +++-- .../api/block/{data => state}/properties/Property.java | 2 +- .../{data => state}/properties/base/BooleanProperty.java | 4 ++-- .../block/{data => state}/properties/base/EnumProperty.java | 4 ++-- .../block/{data => state}/properties/base/IntProperty.java | 4 ++-- .../block/{data => state}/properties/base/Properties.java | 6 +++--- .../dfsek/terra/api/block/state/properties/enums/Axis.java | 5 +++++ .../block/{data => state}/properties/enums/Direction.java | 2 +- .../block/{data => state}/properties/enums/RailShape.java | 2 +- .../main/java/com/dfsek/terra/api/handle/WorldHandle.java | 2 +- .../api/src/main/java/com/dfsek/terra/api/world/Chunk.java | 2 +- .../main/java/com/dfsek/terra/api/world/ChunkAccess.java | 2 +- .../src/main/java/com/dfsek/terra/api/world/TerraWorld.java | 2 +- .../api/src/main/java/com/dfsek/terra/api/world/World.java | 2 +- .../java/com/dfsek/terra/api/world/generator/Palette.java | 2 +- .../structures/script/functions/AbstractBlockFunction.java | 2 +- .../api/structures/script/functions/BlockFunction.java | 2 +- .../structures/script/functions/DynamicBlockFunction.java | 2 +- .../terra/api/structures/script/functions/PullFunction.java | 2 +- .../structures/structure/buffer/items/BufferedBlock.java | 2 +- .../structure/buffer/items/BufferedPulledBlock.java | 2 +- .../main/java/com/dfsek/terra/api/util/RotationUtil.java | 6 +++--- .../com/dfsek/terra/api/util/collections/MaterialSet.java | 2 +- .../com/dfsek/terra/api/world/palette/NoisePalette.java | 2 +- .../java/com/dfsek/terra/api/world/palette/PaletteImpl.java | 2 +- .../terra/api/world/palette/holder/PaletteLayerHolder.java | 2 +- .../main/java/com/dfsek/terra/carving/CarverPalette.java | 2 +- .../terra/commands/structure/StructureExportCommand.java | 2 +- .../main/java/com/dfsek/terra/config/dummy/DummyWorld.java | 2 +- .../java/com/dfsek/terra/config/factories/OreFactory.java | 2 +- .../src/main/java/com/dfsek/terra/config/loaders/Types.java | 2 +- .../terra/config/loaders/palette/CarverPaletteLoader.java | 2 +- .../terra/config/loaders/palette/PaletteLayerLoader.java | 2 +- .../java/com/dfsek/terra/config/templates/OreTemplate.java | 2 +- .../src/main/java/com/dfsek/terra/world/TerraWorldImpl.java | 2 +- .../java/com/dfsek/terra/world/carving/NoiseCarver.java | 2 +- .../generation/generators/DefaultChunkGenerator2D.java | 2 +- .../generation/generators/DefaultChunkGenerator3D.java | 2 +- .../com/dfsek/terra/world/population/CavePopulator.java | 2 +- .../terra/world/population/items/flora/TerraFlora.java | 2 +- .../com/dfsek/terra/world/population/items/ores/Ore.java | 2 +- .../dfsek/terra/world/population/items/ores/VanillaOre.java | 2 +- .../main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../dfsek/terra/bukkit/generator/BukkitChunkGenerator.java | 2 +- .../com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java | 2 +- .../java/com/dfsek/terra/bukkit/world/BukkitAdapter.java | 6 +++--- .../main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java | 2 +- .../main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java | 2 +- .../terra/bukkit/world/block/BukkitBlockTypeAndItem.java | 2 +- .../terra/bukkit/world/block/data/BukkitBlockState.java | 2 +- .../terra/bukkit/world/block/data/BukkitOrientable.java | 2 +- .../com/dfsek/terra/bukkit/world/block/data/BukkitRail.java | 2 +- .../terra/bukkit/world/block/state/BukkitBlockEntity.java | 2 +- .../main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../java/com/dfsek/terra/fabric/block/FabricBlockState.java | 2 +- .../com/dfsek/terra/fabric/block/data/FabricOrientable.java | 2 +- .../mixin/implementations/block/BlockEntityMixin.java | 2 +- .../fabric/mixin/implementations/block/BlockMixin.java | 2 +- .../mixin/implementations/chunk/ChunkRegionMixin.java | 2 +- .../fabric/mixin/implementations/chunk/WorldChunkMixin.java | 2 +- .../mixin/implementations/chunk/data/ProtoChunkMixin.java | 2 +- .../mixin/implementations/world/ChunkRegionMixin.java | 2 +- .../mixin/implementations/world/ServerWorldMixin.java | 2 +- .../java/com/dfsek/terra/fabric/util/FabricAdapter.java | 2 +- .../src/main/java/com/dfsek/terra/StandalonePlugin.java | 2 +- .../java/com/dfsek/terra/platform/DirectBlockEntity.java | 2 +- .../main/java/com/dfsek/terra/platform/DirectChunkData.java | 2 +- .../src/main/java/com/dfsek/terra/platform/DirectWorld.java | 2 +- .../main/java/com/dfsek/terra/platform/RawWorldHandle.java | 2 +- .../src/main/java/com/dfsek/terra/platform/State.java | 2 +- .../src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java | 2 +- .../com/dfsek/terra/sponge/world/SpongeWorldHandle.java | 2 +- .../terra/sponge/world/block/data/SpongeBlockState.java | 2 +- 86 files changed, 102 insertions(+), 100 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java rename common/api/src/main/java/com/dfsek/terra/api/block/{ => state}/BlockState.java (73%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/Property.java (72%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/base/BooleanProperty.java (84%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/base/EnumProperty.java (86%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/base/IntProperty.java (88%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/base/Properties.java (76%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/enums/Direction.java (51%) rename common/api/src/main/java/com/dfsek/terra/api/block/{data => state}/properties/enums/RailShape.java (77%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java index 67c33680f..ce108c345 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.block.state.BlockState; public interface BlockType extends Handle { BlockState getDefaultData(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java index 3af2dc40b..95e493fd3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; public interface AnaloguePowerable extends BlockState { int getMaximumPower(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java index 2544d82d8..e549e1ef0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; public interface Bisected extends BlockState { Half getHalf(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java index 5c5a4bab3..cf5d174db 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; public interface Directional extends BlockState { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java index 18761a969..11fef0727 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java index 0c0de4c91..c560e0ce7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.data.properties.enums.Axis; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.BlockState; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java index 716bd4f9e..92a08d1ca 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; -import com.dfsek.terra.api.block.data.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; public interface Rail extends BlockState { RailShape getShape(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java index 7c8d9c852..45a6d6666 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java index a565f9e7e..c52a676c8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; public interface Rotatable extends BlockState { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java index e1456e7e8..2c0581e26 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; public interface Wall extends BlockState, Waterlogged { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java index dee1ca3ad..edb6b1fa1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; public interface Waterlogged extends BlockState { boolean isWaterlogged(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java deleted file mode 100644 index e9338cbce..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Axis.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dfsek.terra.api.block.data.properties.enums; - -public enum Axis { - X, Y, Z -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java index 85d48b597..1809d6793 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.vector.Vector3; public interface BlockEntity extends Handle { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java similarity index 73% rename from common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index dcd78342e..0359333ac 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -1,7 +1,8 @@ -package com.dfsek.terra.api.block; +package com.dfsek.terra.api.block.state; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.properties.Property; public interface BlockState extends Cloneable, Handle { diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java similarity index 72% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java index ca3fc7a31..041303d87 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/Property.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.data.properties; +package com.dfsek.terra.api.block.state.properties; import java.util.Collection; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java similarity index 84% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java index 81c729d99..9ee43d9da 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/BooleanProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.block.data.properties.base; +package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.block.state.properties.Property; import java.util.Arrays; import java.util.Collection; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java similarity index 86% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 6ede374bb..75f95caac 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/EnumProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.block.data.properties.base; +package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.block.state.properties.Property; import com.dfsek.terra.api.util.generic.Lazy; import java.util.Arrays; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java similarity index 88% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java index 490c4694c..3dd25d8be 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/IntProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.block.data.properties.base; +package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.data.properties.Property; +import com.dfsek.terra.api.block.state.properties.Property; import com.dfsek.terra.api.util.generic.Construct; import java.util.ArrayList; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java similarity index 76% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java index f757a9999..03e2701a2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/base/Properties.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.block.data.properties.base; +package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.data.properties.enums.Direction; -import com.dfsek.terra.api.block.data.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.Direction; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; public final class Properties { public static final EnumProperty DIRECTION = EnumProperty.of("facing", Direction.class); diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java new file mode 100644 index 000000000..98152b027 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.state.properties.enums; + +public enum Axis { + X, Y, Z +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java similarity index 51% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index ff06427f6..351315c8f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/Direction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.data.properties.enums; +package com.dfsek.terra.api.block.state.properties.enums; public enum Direction { NORTH,SOUTH,EAST,WEST,UP,DOWN diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java similarity index 77% rename from common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java rename to common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java index 54c6c5b1d..47d537bc5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/properties/enums/RailShape.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.block.data.properties.enums; +package com.dfsek.terra.api.block.state.properties.enums; public enum RailShape { ASCENDING_EAST, diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index c074f9aae..4bd71e014 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.handle; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java index cb232e7c1..55319ea2c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; public interface Chunk extends ChunkAccess { int getX(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index 1ee7e09ca..dffbcc34e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import org.jetbrains.annotations.NotNull; public interface ChunkAccess extends Handle { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index 951d3d879..b88f52c7e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 9d877bdf1..b8f4d0860 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java index d4723c742..fad37c8cf 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.generator; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index 8d00a9858..dbf99be14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java index 15a9bd6be..ff6b597c8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java index 051a64b5a..debb79d9f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 5794e04a3..f726f8434 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index a9f2d8e51..6155a918a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.data.Waterlogged; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index c22ee414f..4ed8de632 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer.items; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 34a0d4121..5013ad857 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.block.data.properties.enums.RailShape; -import com.dfsek.terra.api.block.data.properties.enums.Axis; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java index 19dbf9a44..137b6c6a2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.collections; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import java.util.Arrays; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java index 8362aea13..400553c2b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java index 6135003b0..61369df5e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index 43e6c7e49..a5b698b1b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.world.palette.holder; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 5ac74e002..aadfeb2f2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -1,6 +1,6 @@ package com.dfsek.terra.carving; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 8064351a0..3448fe3d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -1,7 +1,7 @@ package com.dfsek.terra.commands.structure; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 3cefd1deb..b3c250912 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java index 773dbec2d..f5ba312dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.world.population.items.ores.Ore; import com.dfsek.terra.world.population.items.ores.VanillaOre; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index b9fe6581f..1a554d778 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,6 +1,6 @@ package com.dfsek.terra.config.loaders; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Tree; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index b37324e08..b8b010fd0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.carving.CarverPalette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index 2c8ea6cde..8f1758220 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index d8595d55e..e91f73357 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -3,7 +3,7 @@ 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.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index c3b4be44a..feb2eb753 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Vector3; 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 04b5f6f06..ebead4666 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 @@ -1,7 +1,7 @@ package com.dfsek.terra.world.carving; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +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; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java index 5832e6fed..fe497790d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PaletteUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index b8b5dabdf..f21501290 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.data.Bisected; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index c547f8516..fe767eb7e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.handle.WorldHandle; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 1986ab197..131326ebc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Directional; import com.dfsek.terra.api.block.data.MultipleFacing; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index 50c1abf31..b5430ef58 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.Chunk; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index c77fe3ed5..343b2e16a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; 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 29cbaae5e..902935090 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 @@ -8,7 +8,7 @@ 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.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java index 1cf97ec6d..c0e5ed4ef 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.generator; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import org.bukkit.generator.ChunkGenerator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index dc80bf9fc..097302662 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.handles; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 775640022..4c1fc4d16 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.data.properties.enums.RailShape; -import com.dfsek.terra.api.block.data.properties.enums.Axis; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.data.Bisected; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index dda9cd9a4..a7322c419 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 8ff2e6c9f..e7b1ddc3f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 14e3c8da3..13eef05f3 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index 41e3c1f76..03f94d82f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java index a6b8930e3..4c8d8154e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.block.data.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java index 5a7439e6c..d70be38a4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.data.Rail; -import com.dfsek.terra.api.block.data.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; import com.dfsek.terra.bukkit.world.BukkitAdapter; public class BukkitRail extends BukkitBlockState implements Rail { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 511a70a43..6b03e33ce 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; 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 6dc65d815..4e87326c3 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 @@ -9,7 +9,7 @@ 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.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java index a285bdadd..28de6eb59 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.mixin.access.StateAccessor; import net.minecraft.block.Blocks; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java index 03766974a..82394e34b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.block.data; -import com.dfsek.terra.api.block.data.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.data.Orientable; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index e457b3052..e8431affb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index 7e1f830b3..e09b3f1b6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.Block; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index c9e631b03..1f8e60a44 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.block.FabricBlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 5e92ceb5b..ebabb30d0 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.block.FabricBlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 7632d1132..6a2b720a4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.chunk.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.fabric.block.FabricBlockState; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 150b3723d..5beea9e15 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index ef51eef53..04c75ab9e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index abcb75e79..d30a146e3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.block.data.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.data.Bisected; import com.dfsek.terra.api.block.data.Slab; 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 f18e9921c..582daee49 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -3,7 +3,7 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java index 60d9c4db5..a4a9cc0d1 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java index d2409661f..f037b4ac8 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectChunkData.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import net.querz.mca.Chunk; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index d842578d0..0d87e5dde 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java index 22a5e00bb..d0a39f1c9 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java index 21b1fd9a7..95492c9e6 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import net.querz.nbt.tag.CompoundTag; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java index 43f453464..584fbb6d4 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.sponge; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.sponge.world.block.data.SpongeBlockState; public final class SpongeAdapter { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java index 1294e3d54..b7b2b4607 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java @@ -1,6 +1,6 @@ package com.dfsek.terra.sponge.world; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.sponge.SpongeAdapter; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java index bc3d116a1..fe9c1a5e9 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java @@ -1,6 +1,6 @@ package com.dfsek.terra.sponge.world.block.data; -import com.dfsek.terra.api.block.BlockState; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; public class SpongeBlockState implements BlockState { From bce7a181bd756c79c52073f0edb124f9156872b2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 26 Jun 2021 02:17:31 -0700 Subject: [PATCH 0076/1529] property based block data implementation --- .../com/dfsek/terra/api/block/BlockFace.java | 133 --------- .../api/block/data/AnaloguePowerable.java | 11 - .../dfsek/terra/api/block/data/Bisected.java | 20 -- .../terra/api/block/data/Directional.java | 10 - .../terra/api/block/data/MultipleFacing.java | 16 -- .../terra/api/block/data/Orientable.java | 14 - .../com/dfsek/terra/api/block/data/Rail.java | 11 - .../terra/api/block/data/RedstoneWire.java | 18 -- .../dfsek/terra/api/block/data/Rotatable.java | 10 - .../com/dfsek/terra/api/block/data/Slab.java | 11 - .../dfsek/terra/api/block/data/Stairs.java | 30 -- .../com/dfsek/terra/api/block/data/Wall.java | 18 -- .../terra/api/block/data/Waterlogged.java | 9 - .../terra/api/block/state/BlockState.java | 14 +- .../state/properties/base/Properties.java | 19 ++ .../state/properties/enums/Direction.java | 66 ++++- .../block/state/properties/enums/Half.java | 17 ++ .../properties/enums/RedstoneConnection.java | 5 + .../state/properties/enums/WallHeight.java | 5 + .../structure/buffer/items/BufferedBlock.java | 7 +- .../dfsek/terra/api/util/RotationUtil.java | 260 +++++++----------- .../generators/DefaultChunkGenerator3D.java | 51 ++-- .../population/items/flora/TerraFlora.java | 41 ++- .../terra/bukkit/world/BukkitAdapter.java | 175 +----------- .../block/data/BukkitAnaloguePowerable.java | 24 -- .../world/block/data/BukkitBlockState.java | 18 -- .../world/block/data/BukkitDirectional.java | 21 -- .../block/data/BukkitMultipleFacing.java | 35 --- .../world/block/data/BukkitOrientable.java | 30 -- .../bukkit/world/block/data/BukkitRail.java | 21 -- .../world/block/data/BukkitRedstoneWire.java | 29 -- .../world/block/data/BukkitRotatable.java | 21 -- .../bukkit/world/block/data/BukkitSlab.java | 20 -- .../bukkit/world/block/data/BukkitStairs.java | 52 ---- .../bukkit/world/block/data/BukkitWall.java | 57 ---- .../world/block/data/BukkitWaterlogged.java | 19 -- .../block/data/FabricAnaloguePowerable.java | 29 -- .../fabric/block/data/FabricDirectional.java | 42 --- .../block/data/FabricMultipleFacing.java | 69 ----- .../fabric/block/data/FabricOrientable.java | 37 --- .../fabric/block/data/FabricRotatable.java | 111 -------- .../terra/fabric/block/data/FabricSlab.java | 22 -- .../terra/fabric/block/data/FabricStairs.java | 43 --- .../fabric/block/data/FabricWaterlogged.java | 22 -- .../terra/fabric/util/FabricAdapter.java | 137 +-------- 45 files changed, 288 insertions(+), 1542 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java deleted file mode 100644 index 14a2f5efd..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockFace.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.dfsek.terra.api.block; - -import org.jetbrains.annotations.NotNull; - -public enum BlockFace { - NORTH(0, 0, -1), - EAST(1, 0, 0), - SOUTH(0, 0, 1), - WEST(-1, 0, 0), - UP(0, 1, 0), - DOWN(0, -1, 0), - NORTH_EAST(NORTH, EAST), - NORTH_WEST(NORTH, WEST), - SOUTH_EAST(SOUTH, EAST), - SOUTH_WEST(SOUTH, WEST), - WEST_NORTH_WEST(WEST, NORTH_WEST), - NORTH_NORTH_WEST(NORTH, NORTH_WEST), - NORTH_NORTH_EAST(NORTH, NORTH_EAST), - EAST_NORTH_EAST(EAST, NORTH_EAST), - EAST_SOUTH_EAST(EAST, SOUTH_EAST), - SOUTH_SOUTH_EAST(SOUTH, SOUTH_EAST), - SOUTH_SOUTH_WEST(SOUTH, SOUTH_WEST), - WEST_SOUTH_WEST(WEST, SOUTH_WEST), - SELF(0, 0, 0); - - private final int modX; - private final int modY; - private final int modZ; - - BlockFace(final int modX, final int modY, final int modZ) { - this.modX = modX; - this.modY = modY; - this.modZ = modZ; - } - - BlockFace(final BlockFace face1, final BlockFace face2) { - this.modX = face1.getModX() + face2.getModX(); - this.modY = face1.getModY() + face2.getModY(); - this.modZ = face1.getModZ() + face2.getModZ(); - } - - /** - * Get the amount of X-coordinates to modify to get the represented block - * - * @return Amount of X-coordinates to modify - */ - public int getModX() { - return modX; - } - - /** - * Get the amount of Y-coordinates to modify to get the represented block - * - * @return Amount of Y-coordinates to modify - */ - public int getModY() { - return modY; - } - - /** - * Get the amount of Z-coordinates to modify to get the represented block - * - * @return Amount of Z-coordinates to modify - */ - public int getModZ() { - return modZ; - } - - @NotNull - public BlockFace getOppositeFace() { - switch(this) { - case NORTH: - return BlockFace.SOUTH; - - case SOUTH: - return BlockFace.NORTH; - - case EAST: - return BlockFace.WEST; - - case WEST: - return BlockFace.EAST; - - case UP: - return BlockFace.DOWN; - - case DOWN: - return BlockFace.UP; - - case NORTH_EAST: - return BlockFace.SOUTH_WEST; - - case NORTH_WEST: - return BlockFace.SOUTH_EAST; - - case SOUTH_EAST: - return BlockFace.NORTH_WEST; - - case SOUTH_WEST: - return BlockFace.NORTH_EAST; - - case WEST_NORTH_WEST: - return BlockFace.EAST_SOUTH_EAST; - - case NORTH_NORTH_WEST: - return BlockFace.SOUTH_SOUTH_EAST; - - case NORTH_NORTH_EAST: - return BlockFace.SOUTH_SOUTH_WEST; - - case EAST_NORTH_EAST: - return BlockFace.WEST_SOUTH_WEST; - - case EAST_SOUTH_EAST: - return BlockFace.WEST_NORTH_WEST; - - case SOUTH_SOUTH_EAST: - return BlockFace.NORTH_NORTH_WEST; - - case SOUTH_SOUTH_WEST: - return BlockFace.NORTH_NORTH_EAST; - - case WEST_SOUTH_WEST: - return BlockFace.EAST_NORTH_EAST; - - case SELF: - return BlockFace.SELF; - } - - return BlockFace.SELF; - } -} - diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java deleted file mode 100644 index 95e493fd3..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/AnaloguePowerable.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; - -public interface AnaloguePowerable extends BlockState { - int getMaximumPower(); - - int getPower(); - - void setPower(int power); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java deleted file mode 100644 index e549e1ef0..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Bisected.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; - -public interface Bisected extends BlockState { - Half getHalf(); - - void setHalf(Half half); - - enum Half { - /** - * The top half of the block, normally with the higher y coordinate. - */ - TOP, - /** - * The bottom half of the block, normally with the lower y coordinate. - */ - BOTTOM - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java deleted file mode 100644 index cf5d174db..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Directional.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; - -public interface Directional extends BlockState { - BlockFace getFacing(); - - void setFacing(BlockFace facing); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java deleted file mode 100644 index 11fef0727..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/MultipleFacing.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; - -import java.util.Set; - -public interface MultipleFacing extends BlockState { - Set getFaces(); - - void setFace(BlockFace face, boolean facing); - - Set getAllowedFaces(); - - boolean hasFace(BlockFace f); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java deleted file mode 100644 index c560e0ce7..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Orientable.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.state.BlockState; - -import java.util.Set; - -public interface Orientable extends BlockState { - Set getAxes(); - - Axis getAxis(); - - void setAxis(Axis axis); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java deleted file mode 100644 index 92a08d1ca..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rail.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.state.properties.enums.RailShape; - -public interface Rail extends BlockState { - RailShape getShape(); - - void setShape(RailShape newShape); - -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java deleted file mode 100644 index 45a6d6666..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/RedstoneWire.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; - -import java.util.Set; - -public interface RedstoneWire extends BlockState, AnaloguePowerable { - Set getAllowedFaces(); - - Connection getFace(BlockFace face); - - void setFace(BlockFace face, Connection connection); - - enum Connection { - NONE, SIDE, UP - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java deleted file mode 100644 index c52a676c8..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Rotatable.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; - -public interface Rotatable extends BlockState { - BlockFace getRotation(); - - void setRotation(BlockFace face); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java deleted file mode 100644 index a589ae395..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Slab.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.api.block.data; - -public interface Slab extends Waterlogged { - Type getType(); - - void setType(Type type); - - enum Type { - TOP, BOTTOM, DOUBLE - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java deleted file mode 100644 index fec901575..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Stairs.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.api.block.data; - -public interface Stairs extends Waterlogged, Directional, Bisected { - Shape getShape(); - - void setShape(Shape shape); - - enum Shape { - /** - * Regular stair block. - */ - STRAIGHT, - /** - * Inner corner stair block with higher left side. - */ - INNER_LEFT, - /** - * Inner corner stair block with higher right side. - */ - INNER_RIGHT, - /** - * Outer corner stair block with higher left side. - */ - OUTER_LEFT, - /** - * Outer corner stair block with higher right side. - */ - OUTER_RIGHT - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java deleted file mode 100644 index 2c0581e26..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Wall.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; - -public interface Wall extends BlockState, Waterlogged { - boolean isUp(); - - void setHeight(BlockFace face, Height height); - - Height getHeight(BlockFace face); - - void setUp(boolean up); - - enum Height { - LOW, NONE, TALL - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java b/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java deleted file mode 100644 index edb6b1fa1..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/block/data/Waterlogged.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dfsek.terra.api.block.data; - -import com.dfsek.terra.api.block.state.BlockState; - -public interface Waterlogged extends BlockState { - boolean isWaterlogged(); - - void setWaterlogged(boolean waterlogged); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 0359333ac..83e672a53 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -4,6 +4,8 @@ import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.properties.Property; +import java.util.function.Consumer; + public interface BlockState extends Cloneable, Handle { BlockType getBlockType(); @@ -22,5 +24,15 @@ public interface BlockState extends Cloneable, Handle { T get(Property property); - BlockState set(Property property); + BlockState set(Property property, T value); + + default BlockState setIfPresent(Property property, T value) { + if(has(property)) set(property, value); + return this; + } + + default BlockState ifProperty(Property property, Consumer action) { + if(has(property)) action.accept(this); + return this; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java index 03e2701a2..e69940949 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java @@ -1,17 +1,36 @@ package com.dfsek.terra.api.block.state.properties.base; +import com.dfsek.terra.api.block.state.properties.enums.Axis; 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.block.state.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; +import com.dfsek.terra.api.block.state.properties.enums.WallHeight; public final class Properties { public static final EnumProperty DIRECTION = EnumProperty.of("facing", Direction.class); + public static final EnumProperty AXIS = EnumProperty.of("axis", Axis.class); public static final BooleanProperty NORTH = BooleanProperty.of("north"); public static final BooleanProperty SOUTH = BooleanProperty.of("south"); public static final BooleanProperty EAST = BooleanProperty.of("east"); public static final BooleanProperty WEST = BooleanProperty.of("west"); + public static final EnumProperty NORTH_HEIGHT = EnumProperty.of("north", WallHeight.class); + public static final EnumProperty SOUTH_HEIGHT = EnumProperty.of("south", WallHeight.class); + public static final EnumProperty EAST_HEIGHT = EnumProperty.of("east", WallHeight.class); + public static final EnumProperty WEST_HEIGHT = EnumProperty.of("west", WallHeight.class); + + public static final EnumProperty NORTH_CONNECTION = EnumProperty.of("north", RedstoneConnection.class); + public static final EnumProperty SOUTH_CONNECTION = EnumProperty.of("south", RedstoneConnection.class); + public static final EnumProperty EAST_CONNECTION = EnumProperty.of("east", RedstoneConnection.class); + public static final EnumProperty WEST_CONNECTION = EnumProperty.of("west", RedstoneConnection.class); + + public static final EnumProperty RAIL_SHAPE = EnumProperty.of("shape", RailShape.class); + public static final EnumProperty HALF = EnumProperty.of("half", Half.class); public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 15); + + public static final BooleanProperty WATERLOGGED = BooleanProperty.of("waterlogged"); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index 351315c8f..7b95496a8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -1,5 +1,69 @@ package com.dfsek.terra.api.block.state.properties.enums; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.generic.Construct; + public enum Direction { - NORTH,SOUTH,EAST,WEST,UP,DOWN + NORTH(0, 0, 0, -1), + EAST(1, 1, 0, 0), + SOUTH(2, 0, 0, 1), + WEST(3, -1, 0, 0), + UP(-1, 0, 1, 0), + DOWN(-1, 0, -1, 0); + + private static final Direction[] rotations = Construct.construct(() -> new Direction[] {NORTH, SOUTH, EAST, WEST}); + + private final int rotation; + + private final int modX; + private final int modY; + private final int modZ; + + Direction(int rotation, int modX, int modY, int modZ) { + this.rotation = rotation; + this.modX = modX; + this.modY = modY; + this.modZ = modZ; + } + + public Direction rotate(Rotation rotation) { + switch(this) { + case UP: + case DOWN: + return this; + default: + return rotations[(this.rotation + rotation.getDegrees()/90) % 4]; + } + } + + public int getModX() { + return modX; + } + + public int getModY() { + return modY; + } + + public int getModZ() { + return modZ; + } + + public Direction opposite() { + switch(this) { + case DOWN: + return UP; + case UP: + return DOWN; + case EAST: + return WEST; + case WEST: + return EAST; + case NORTH: + return SOUTH; + case SOUTH: + return NORTH; + } + + throw new IllegalStateException(); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java new file mode 100644 index 000000000..e0088dd13 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.api.block.state.properties.enums; + +public enum Half { + /** + * The top half of the block, normally with the higher y coordinate. + */ + TOP, + /** + * The bottom half of the block, normally with the lower y coordinate. + */ + BOTTOM, + + /** + * Some blocks, e.g. slabs, can occupy both halves. + */ + DOUBLE +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java new file mode 100644 index 000000000..3219f6f3f --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.state.properties.enums; + +public enum RedstoneConnection { + NONE, SIDE, UP +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java new file mode 100644 index 000000000..73af8a898 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.block.state.properties.enums; + +public enum WallHeight { + LOW, NONE, TALL +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 6155a918a..a965497cb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.data.Waterlogged; +import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -25,8 +25,9 @@ public class BufferedBlock implements BufferedItem { try { BlockState current = world.getBlockData(origin); if(overwrite || current.isAir()) { - if(waterlog && current instanceof Waterlogged && current.getBlockType().isWater()) - ((Waterlogged) current).setWaterlogged(true); + if(waterlog && current.has(Properties.WATERLOGGED) && current.getBlockType().isWater()) { + current.set(Properties.WATERLOGGED, true); + } world.setBlockData(origin, data); } } catch(RuntimeException e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 5013ad857..013b8a8d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,27 +1,17 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.block.state.properties.enums.RailShape; -import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.api.block.data.Orientable; -import com.dfsek.terra.api.block.data.Rail; -import com.dfsek.terra.api.block.data.RedstoneWire; -import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.api.block.data.Wall; +import com.dfsek.terra.api.block.state.properties.base.BooleanProperty; +import com.dfsek.terra.api.block.state.properties.base.EnumProperty; +import com.dfsek.terra.api.block.state.properties.base.Properties; +import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; +import com.dfsek.terra.api.block.state.properties.enums.WallHeight; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Vector2; -import com.google.common.collect.Sets; -import net.jafama.FastMath; - -import java.util.EnumMap; -import java.util.Map; -import java.util.Set; public class RotationUtil { - private static final Set CARDINALS = Sets.newHashSet(BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST); /** * Rotate and mirror a coordinate pair. @@ -46,112 +36,8 @@ public class RotationUtil { orig.setZ(copy.getZ()); } - /** - * Get the BlockFace with rotation and mirrors applied to it - * - * @param f BlockFace to apply rotation to - * @param r Rotation - * @return Rotated BlockFace - */ - public static BlockFace getRotatedFace(BlockFace f, Rotation r) { - BlockFace n = f; - int rotateNum = r.getDegrees() / 90; - int rn = faceRotation(f); - if(rn >= 0) { - n = fromRotation(faceRotation(n) + 4 * rotateNum); - } - return n; - } - /** - * Get an integer representation of a BlockFace, to perform math on. - * - * @param f BlockFace to get integer for - * @return integer representation of BlockFace - */ - public static int faceRotation(BlockFace f) { - switch(f) { - case NORTH: - return 0; - case NORTH_NORTH_EAST: - return 1; - case NORTH_EAST: - return 2; - case EAST_NORTH_EAST: - return 3; - case EAST: - return 4; - case EAST_SOUTH_EAST: - return 5; - case SOUTH_EAST: - return 6; - case SOUTH_SOUTH_EAST: - return 7; - case SOUTH: - return 8; - case SOUTH_SOUTH_WEST: - return 9; - case SOUTH_WEST: - return 10; - case WEST_SOUTH_WEST: - return 11; - case WEST: - return 12; - case WEST_NORTH_WEST: - return 13; - case NORTH_WEST: - return 14; - case NORTH_NORTH_WEST: - return 15; - default: - return -1; - } - } - /** - * Convert integer to BlockFace representation - * - * @param r integer to get BlockFace for - * @return BlockFace represented by integer. - */ - public static BlockFace fromRotation(int r) { - switch(FastMath.floorMod(r, 16)) { - case 0: - return BlockFace.NORTH; - case 1: - return BlockFace.NORTH_NORTH_EAST; - case 2: - return BlockFace.NORTH_EAST; - case 3: - return BlockFace.EAST_NORTH_EAST; - case 4: - return BlockFace.EAST; - case 5: - return BlockFace.EAST_SOUTH_EAST; - case 6: - return BlockFace.SOUTH_EAST; - case 7: - return BlockFace.SOUTH_SOUTH_EAST; - case 8: - return BlockFace.SOUTH; - case 9: - return BlockFace.SOUTH_SOUTH_WEST; - case 10: - return BlockFace.SOUTH_WEST; - case 11: - return BlockFace.WEST_SOUTH_WEST; - case 12: - return BlockFace.WEST; - case 13: - return BlockFace.WEST_NORTH_WEST; - case 14: - return BlockFace.NORTH_WEST; - case 15: - return BlockFace.NORTH_NORTH_WEST; - default: - throw new IllegalArgumentException(); - } - } public static Axis getRotatedAxis(Axis orig, Rotation r) { Axis other = orig; @@ -250,44 +136,100 @@ public class RotationUtil { return orig; } - public static void rotateBlockData(BlockState data, Rotation r) { - if(data instanceof Rotatable) { - BlockFace rt = getRotatedFace(((Rotatable) data).getRotation(), r); - ((Rotatable) data).setRotation(rt); - } else if(data instanceof Directional) { - BlockFace rt = getRotatedFace(((Directional) data).getFacing(), r); - ((Directional) data).setFacing(rt); - } else if(data instanceof MultipleFacing) { - MultipleFacing mfData = (MultipleFacing) data; - Map faces = new EnumMap<>(BlockFace.class); - for(BlockFace f : mfData.getAllowedFaces()) { - faces.put(f, mfData.hasFace(f)); - } - for(Map.Entry face : faces.entrySet()) { - mfData.setFace(getRotatedFace(face.getKey(), r), face.getValue()); - } - } else if(data instanceof Rail) { - RailShape newShape = getRotatedRail(((Rail) data).getShape(), r); - ((Rail) data).setShape(newShape); - } else if(data instanceof Orientable) { - Axis newAxis = getRotatedAxis(((Orientable) data).getAxis(), r); - ((Orientable) data).setAxis(newAxis); - } else if(data instanceof RedstoneWire) { - Map connections = new EnumMap<>(BlockFace.class); - RedstoneWire rData = (RedstoneWire) data; - for(BlockFace f : rData.getAllowedFaces()) { - connections.put(f, rData.getFace(f)); - } - for(Map.Entry e : connections.entrySet()) { - rData.setFace(getRotatedFace(e.getKey(), r), e.getValue()); - } - } else if(data instanceof Wall) { - Wall wallData = (Wall) data; - Map faces = new EnumMap<>(BlockFace.class); - for(BlockFace b : CARDINALS) faces.put(b, wallData.getHeight(b)); - for(Map.Entry face : faces.entrySet()) { - wallData.setHeight(getRotatedFace(face.getKey(), r), face.getValue()); - } + private static BooleanProperty rotateCardinal(BooleanProperty property, Rotation r) { + switch(r) { + case NONE: + return property; + case CW_90: + if(property == Properties.NORTH) return Properties.EAST; + if(property == Properties.EAST) return Properties.SOUTH; + if(property == Properties.SOUTH) return Properties.WEST; + if(property == Properties.WEST) return Properties.NORTH; + throw new IllegalStateException(); + case CW_180: + if(property == Properties.NORTH) return Properties.SOUTH; + if(property == Properties.EAST) return Properties.WEST; + if(property == Properties.SOUTH) return Properties.NORTH; + if(property == Properties.WEST) return Properties.EAST; + throw new IllegalStateException(); + case CCW_90: + if(property == Properties.NORTH) return Properties.WEST; + if(property == Properties.EAST) return Properties.NORTH; + if(property == Properties.SOUTH) return Properties.EAST; + if(property == Properties.WEST) return Properties.SOUTH; + throw new IllegalStateException(); } + throw new IllegalStateException(); + } + + private static EnumProperty rotateRedstone(EnumProperty property, Rotation r) { + switch(r) { + case NONE: + return property; + case CW_90: + if(property == Properties.NORTH_CONNECTION) return Properties.EAST_CONNECTION; + if(property == Properties.EAST_CONNECTION) return Properties.SOUTH_CONNECTION; + if(property == Properties.SOUTH_CONNECTION) return Properties.WEST_CONNECTION; + if(property == Properties.WEST_CONNECTION) return Properties.NORTH_CONNECTION; + throw new IllegalStateException(); + case CW_180: + if(property == Properties.NORTH_CONNECTION) return Properties.SOUTH_CONNECTION; + if(property == Properties.EAST_CONNECTION) return Properties.WEST_CONNECTION; + if(property == Properties.SOUTH_CONNECTION) return Properties.NORTH_CONNECTION; + if(property == Properties.WEST_CONNECTION) return Properties.EAST_CONNECTION; + throw new IllegalStateException(); + case CCW_90: + if(property == Properties.NORTH_CONNECTION) return Properties.WEST_CONNECTION; + if(property == Properties.EAST_CONNECTION) return Properties.NORTH_CONNECTION; + if(property == Properties.SOUTH_CONNECTION) return Properties.EAST_CONNECTION; + if(property == Properties.WEST_CONNECTION) return Properties.SOUTH_CONNECTION; + throw new IllegalStateException(); + } + throw new IllegalStateException(); + } + + private static EnumProperty rotateWall(EnumProperty property, Rotation r) { + switch(r) { + case NONE: + return property; + case CW_90: + if(property == Properties.NORTH_HEIGHT) return Properties.EAST_HEIGHT; + if(property == Properties.EAST_HEIGHT) return Properties.SOUTH_HEIGHT; + if(property == Properties.SOUTH_HEIGHT) return Properties.WEST_HEIGHT; + if(property == Properties.WEST_HEIGHT) return Properties.NORTH_HEIGHT; + throw new IllegalStateException(); + case CW_180: + if(property == Properties.NORTH_HEIGHT) return Properties.SOUTH_HEIGHT; + if(property == Properties.EAST_HEIGHT) return Properties.WEST_HEIGHT; + if(property == Properties.SOUTH_HEIGHT) return Properties.NORTH_HEIGHT; + if(property == Properties.WEST_HEIGHT) return Properties.EAST_HEIGHT; + throw new IllegalStateException(); + case CCW_90: + if(property == Properties.NORTH_HEIGHT) return Properties.WEST_HEIGHT; + if(property == Properties.EAST_HEIGHT) return Properties.NORTH_HEIGHT; + if(property == Properties.SOUTH_HEIGHT) return Properties.EAST_HEIGHT; + if(property == Properties.WEST_HEIGHT) return Properties.SOUTH_HEIGHT; + throw new IllegalStateException(); + } + throw new IllegalStateException(); + } + + public static void rotateBlockData(BlockState data, Rotation r) { + data + .ifProperty(Properties.NORTH, state -> state.set(rotateCardinal(Properties.NORTH, r), state.get(Properties.NORTH))) + .ifProperty(Properties.SOUTH, state -> state.set(rotateCardinal(Properties.SOUTH, r), state.get(Properties.SOUTH))) + .ifProperty(Properties.EAST, state -> state.set(rotateCardinal(Properties.EAST, r), state.get(Properties.EAST))) + .ifProperty(Properties.WEST, state -> state.set(rotateCardinal(Properties.WEST, r), state.get(Properties.WEST))) + .ifProperty(Properties.DIRECTION, state -> state.set(Properties.DIRECTION, state.get(Properties.DIRECTION).rotate(r))) + .ifProperty(Properties.AXIS, state -> state.set(Properties.AXIS, getRotatedAxis(state.get(Properties.AXIS), r))) + .ifProperty(Properties.RAIL_SHAPE, state -> state.set(Properties.RAIL_SHAPE, getRotatedRail(state.get(Properties.RAIL_SHAPE), r))) + .ifProperty(Properties.NORTH_CONNECTION, state -> state.set(rotateRedstone(Properties.NORTH_CONNECTION, r), state.get(Properties.NORTH_CONNECTION))) + .ifProperty(Properties.SOUTH_CONNECTION, state -> state.set(rotateRedstone(Properties.SOUTH_CONNECTION, r), state.get(Properties.SOUTH_CONNECTION))) + .ifProperty(Properties.EAST_CONNECTION, state -> state.set(rotateRedstone(Properties.EAST_CONNECTION, r), state.get(Properties.EAST_CONNECTION))) + .ifProperty(Properties.WEST_CONNECTION, state -> state.set(rotateRedstone(Properties.WEST_CONNECTION, r), state.get(Properties.WEST_CONNECTION))) + .ifProperty(Properties.NORTH_HEIGHT, state -> state.set(rotateWall(Properties.NORTH_HEIGHT, r), state.get(Properties.NORTH_HEIGHT))) + .ifProperty(Properties.SOUTH_HEIGHT, state -> state.set(rotateWall(Properties.SOUTH_HEIGHT, r), state.get(Properties.SOUTH_HEIGHT))) + .ifProperty(Properties.EAST_HEIGHT, state -> state.set(rotateWall(Properties.EAST_HEIGHT, r), state.get(Properties.EAST_HEIGHT))) + .ifProperty(Properties.WEST_HEIGHT, state -> state.set(rotateWall(Properties.WEST_HEIGHT, r), state.get(Properties.WEST_HEIGHT))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index f21501290..fe850b40f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -1,13 +1,11 @@ package com.dfsek.terra.world.generation.generators; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.data.Bisected; -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.api.block.data.Stairs; -import com.dfsek.terra.api.block.data.Waterlogged; +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; @@ -145,16 +143,16 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { Palette stairPalette = stairs.get(down.getBlockType()); if(stairPalette != null) { BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); - if(stair instanceof Stairs) { - Stairs stairNew = (Stairs) stair; + if(stair.has(Properties.DIRECTION)) { + BlockState stairNew = stair.clone(); if(placeStair(orig, chunk, block, thresh, sampler, stairNew)) return; // Successfully placed part. } } } - BlockState slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()); - if(slab instanceof Waterlogged) { - ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water)); - } else if(orig.getBlockType().equals(water)) return; + BlockState slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()) + .setIfPresent(Properties.WATERLOGGED, orig.getBlockType().equals(water)); + + if(orig.getBlockType().equals(water)) return; chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); } } @@ -166,37 +164,36 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { Palette stairPalette = stairs.get(up.getBlockType()); if(stairPalette != null) { BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); - if(stair instanceof Stairs) { - Stairs stairNew = (Stairs) stair.clone(); - stairNew.setHalf(Bisected.Half.TOP); + stair.setIfPresent(Properties.HALF, Half.TOP); + if(stair.has(Properties.DIRECTION)) { + BlockState stairNew = stair.clone(); if(placeStair(orig, chunk, block, thresh, sampler, stairNew)) return; // Successfully placed part. } } } BlockState slab = slabs.getOrDefault(up.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone(); - if(slab instanceof Bisected) ((Bisected) slab).setHalf(Bisected.Half.TOP); - if(slab instanceof Slab) ((Slab) slab).setType(Slab.Type.TOP); - if(slab instanceof Waterlogged) { - ((Waterlogged) slab).setWaterlogged(orig.getBlockType().equals(water)); - } else if(orig.getBlockType().equals(water)) return; // Only replace water if waterlogged. + slab.setIfPresent(Properties.HALF, Half.TOP); + + slab.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); + if(orig.getBlockType().equals(water)) return; + chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); } } - private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, Stairs stairNew) { + private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, BlockState stairNew) { if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { - - stairNew.setFacing(BlockFace.WEST); + stairNew.set(Properties.DIRECTION, Direction.WEST); } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() - 0.55) > thresh) { - stairNew.setFacing(BlockFace.NORTH); + stairNew.set(Properties.DIRECTION, Direction.NORTH); } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() + 0.55) > thresh) { - stairNew.setFacing(BlockFace.SOUTH); + stairNew.set(Properties.DIRECTION, Direction.SOUTH); } else if(sampler.sample(block.getX() + 0.55, block.getY(), block.getZ()) > thresh) { - stairNew.setFacing(BlockFace.EAST); + stairNew.set(Properties.DIRECTION, Direction.EAST); } else stairNew = null; if(stairNew != null) { - if(orig.getBlockType().equals(water)) stairNew.setWaterlogged(orig.getBlockType().equals(water)); + stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().equals(water)); chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); return true; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 131326ebc..0e3bd8b69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -2,12 +2,9 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.api.block.data.Rotatable; +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.util.FastRandom; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; @@ -19,6 +16,7 @@ import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; public class TerraFlora implements Flora { @@ -100,39 +98,36 @@ public class TerraFlora implements Flora { int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; - List faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : new GlueList<>(); + EnumSet faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : EnumSet.noneOf(Direction.class); if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor int lvl = (FastMath.abs(i)); BlockState data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); if(doRotation) { - BlockFace oneFace = faces.get(new FastRandom(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. - if(data instanceof Directional) { - ((Directional) data).setFacing(oneFace.getOppositeFace()); - } else if(data instanceof MultipleFacing) { - MultipleFacing o = (MultipleFacing) data; - for(BlockFace face : o.getFaces()) o.setFace(face, false); - for(BlockFace face : faces) o.setFace(face, true); - } else if(data instanceof Rotatable) { - ((Rotatable) data).setRotation(oneFace); - } + Direction oneFace = new ArrayList<>(faces).get(new FastRandom(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. + + data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) + .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) + .setIfPresent(Properties.SOUTH, faces.contains(Direction.SOUTH)) + .setIfPresent(Properties.EAST, faces.contains(Direction.EAST)) + .setIfPresent(Properties.WEST, faces.contains(Direction.WEST)); } world.setBlockData(location.clone().add(0, i + c, 0), data, physics); } return true; } - private List getFaces(Vector3 b, World world) { - List faces = new GlueList<>(); - test(faces, BlockFace.NORTH, b, world); - test(faces, BlockFace.SOUTH, b, world); - test(faces, BlockFace.EAST, b, world); - test(faces, BlockFace.WEST, b, world); + private EnumSet getFaces(Vector3 b, World world) { + EnumSet faces = EnumSet.noneOf(Direction.class); + test(faces, Direction.NORTH, b, world); + test(faces, Direction.SOUTH, b, world); + test(faces, Direction.EAST, b, world); + test(faces, Direction.WEST, b, world); return faces; } - private void test(List faces, BlockFace f, Vector3 b, World world) { + private void test(EnumSet faces, Direction f, Vector3 b, World world) { if(testRotation.contains(world.getBlockData(b.getBlockX() + f.getModX(), b.getBlockY() + f.getModY(), b.getBlockZ() + f.getModZ()).getBlockType())) faces.add(f); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 4c1fc4d16..0fd3dfd60 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,15 +1,12 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.RailShape; import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.data.Bisected; -import com.dfsek.terra.api.block.data.RedstoneWire; -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.api.block.data.Stairs; +import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; @@ -50,23 +47,6 @@ public final class BukkitAdapter { .build(); - public static Stairs.Shape adapt(org.bukkit.block.data.type.Stairs.Shape shape) { - switch(shape) { - case STRAIGHT: - return Stairs.Shape.STRAIGHT; - case INNER_LEFT: - return Stairs.Shape.INNER_LEFT; - case OUTER_LEFT: - return Stairs.Shape.OUTER_LEFT; - case INNER_RIGHT: - return Stairs.Shape.INNER_RIGHT; - case OUTER_RIGHT: - return Stairs.Shape.OUTER_RIGHT; - default: - throw new IllegalStateException(); - } - } - public static BlockState adapt(org.bukkit.block.data.BlockData data) { return BukkitBlockState.newInstance(data); } @@ -88,89 +68,31 @@ public final class BukkitAdapter { } } - public static Bisected.Half adapt(org.bukkit.block.data.Bisected.Half half) { + public static Half adapt(org.bukkit.block.data.Bisected.Half half) { switch(half) { case BOTTOM: - return Bisected.Half.BOTTOM; + return Half.BOTTOM; case TOP: - return Bisected.Half.TOP; + return Half.TOP; default: throw new IllegalStateException(); } } - public static BlockFace adapt(org.bukkit.block.BlockFace face) { - switch(face) { - case DOWN: - return BlockFace.DOWN; - case UP: - return BlockFace.UP; - case NORTH_WEST: - return BlockFace.NORTH_WEST; - case NORTH_EAST: - return BlockFace.NORTH_EAST; - case SOUTH_EAST: - return BlockFace.SOUTH_EAST; - case SOUTH_WEST: - return BlockFace.SOUTH_WEST; - case NORTH_NORTH_WEST: - return BlockFace.NORTH_NORTH_WEST; - case WEST_NORTH_WEST: - return BlockFace.WEST_NORTH_WEST; - case WEST_SOUTH_WEST: - return BlockFace.WEST_SOUTH_WEST; - case SOUTH_SOUTH_WEST: - return BlockFace.SOUTH_SOUTH_WEST; - case EAST_NORTH_EAST: - return BlockFace.EAST_NORTH_EAST; - case WEST: - return BlockFace.WEST; - case SOUTH: - return BlockFace.SOUTH; - case EAST: - return BlockFace.EAST; - case NORTH: - return BlockFace.NORTH; - case SELF: - return BlockFace.SELF; - case EAST_SOUTH_EAST: - return BlockFace.EAST_SOUTH_EAST; - case NORTH_NORTH_EAST: - return BlockFace.NORTH_NORTH_EAST; - case SOUTH_SOUTH_EAST: - return BlockFace.SOUTH_SOUTH_EAST; - default: - throw new IllegalStateException(); - } - } - - public static Slab.Type adapt(org.bukkit.block.data.type.Slab.Type type) { - switch(type) { - case BOTTOM: - return Slab.Type.BOTTOM; - case TOP: - return Slab.Type.TOP; - case DOUBLE: - return Slab.Type.DOUBLE; - default: - throw new IllegalStateException(); - } - } - - public static RedstoneWire.Connection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) { + public static RedstoneConnection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) { switch(connection) { case NONE: - return RedstoneWire.Connection.NONE; + return RedstoneConnection.NONE; case UP: - return RedstoneWire.Connection.UP; + return RedstoneConnection.UP; case SIDE: - return RedstoneWire.Connection.SIDE; + return RedstoneConnection.SIDE; default: throw new IllegalStateException(); } } - public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneWire.Connection connection) { + public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneConnection connection) { switch(connection) { case SIDE: return org.bukkit.block.data.type.RedstoneWire.Connection.SIDE; @@ -183,23 +105,6 @@ public final class BukkitAdapter { } } - public static org.bukkit.block.data.type.Stairs.Shape adapt(Stairs.Shape shape) { - switch(shape) { - case STRAIGHT: - return org.bukkit.block.data.type.Stairs.Shape.STRAIGHT; - case INNER_LEFT: - return org.bukkit.block.data.type.Stairs.Shape.INNER_LEFT; - case OUTER_LEFT: - return org.bukkit.block.data.type.Stairs.Shape.OUTER_LEFT; - case INNER_RIGHT: - return org.bukkit.block.data.type.Stairs.Shape.INNER_RIGHT; - case OUTER_RIGHT: - return org.bukkit.block.data.type.Stairs.Shape.OUTER_RIGHT; - default: - throw new IllegalStateException(); - } - } - public static RailShape adapt(org.bukkit.block.data.Rail.Shape shape) { switch(shape) { case SOUTH_WEST: @@ -255,7 +160,7 @@ public final class BukkitAdapter { } - public static org.bukkit.block.data.Bisected.Half adapt(Bisected.Half half) { + public static org.bukkit.block.data.Bisected.Half adapt(Half half) { switch(half) { case TOP: return org.bukkit.block.data.Bisected.Half.TOP; @@ -279,64 +184,6 @@ public final class BukkitAdapter { } } - public static org.bukkit.block.BlockFace adapt(BlockFace face) { - switch(face) { - case DOWN: - return org.bukkit.block.BlockFace.DOWN; - case UP: - return org.bukkit.block.BlockFace.UP; - case NORTH_WEST: - return org.bukkit.block.BlockFace.NORTH_WEST; - case NORTH_EAST: - return org.bukkit.block.BlockFace.NORTH_EAST; - case SOUTH_EAST: - return org.bukkit.block.BlockFace.SOUTH_EAST; - case SOUTH_WEST: - return org.bukkit.block.BlockFace.SOUTH_WEST; - case NORTH_NORTH_WEST: - return org.bukkit.block.BlockFace.NORTH_NORTH_WEST; - case WEST_NORTH_WEST: - return org.bukkit.block.BlockFace.WEST_NORTH_WEST; - case WEST_SOUTH_WEST: - return org.bukkit.block.BlockFace.WEST_SOUTH_WEST; - case SOUTH_SOUTH_WEST: - return org.bukkit.block.BlockFace.SOUTH_SOUTH_WEST; - case EAST_NORTH_EAST: - return org.bukkit.block.BlockFace.EAST_NORTH_EAST; - case WEST: - return org.bukkit.block.BlockFace.WEST; - case SOUTH: - return org.bukkit.block.BlockFace.SOUTH; - case EAST: - return org.bukkit.block.BlockFace.EAST; - case NORTH: - return org.bukkit.block.BlockFace.NORTH; - case SELF: - return org.bukkit.block.BlockFace.SELF; - case EAST_SOUTH_EAST: - return org.bukkit.block.BlockFace.EAST_SOUTH_EAST; - case NORTH_NORTH_EAST: - return org.bukkit.block.BlockFace.NORTH_NORTH_EAST; - case SOUTH_SOUTH_EAST: - return org.bukkit.block.BlockFace.SOUTH_SOUTH_EAST; - default: - throw new IllegalStateException(); - } - } - - public static org.bukkit.block.data.type.Slab.Type adapt(Slab.Type type) { - switch(type) { - case TOP: - return org.bukkit.block.data.type.Slab.Type.TOP; - case DOUBLE: - return org.bukkit.block.data.type.Slab.Type.DOUBLE; - case BOTTOM: - return org.bukkit.block.data.type.Slab.Type.BOTTOM; - default: - throw new IllegalStateException(); - } - } - public static Vector3 adapt(Location location) { return new Vector3Impl(location.getX(), location.getY(), location.getZ()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java deleted file mode 100644 index 282a38ec3..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.data.AnaloguePowerable; - -public class BukkitAnaloguePowerable extends BukkitBlockState implements AnaloguePowerable { - public BukkitAnaloguePowerable(org.bukkit.block.data.AnaloguePowerable delegate) { - super(delegate); - } - - @Override - public int getMaximumPower() { - return ((org.bukkit.block.data.AnaloguePowerable) getHandle()).getMaximumPower(); - } - - @Override - public int getPower() { - return ((org.bukkit.block.data.AnaloguePowerable) getHandle()).getPower(); - } - - @Override - public void setPower(int power) { - ((org.bukkit.block.data.AnaloguePowerable) getHandle()).setPower(power); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index 03f94d82f..888257dd8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -25,24 +25,6 @@ public class BukkitBlockState implements BlockState { } public static BukkitBlockState newInstance(org.bukkit.block.data.BlockData bukkitData) { - - if(bukkitData instanceof Rail) return new BukkitRail((Rail) bukkitData); - if(bukkitData instanceof Stairs) return new BukkitStairs((Stairs) bukkitData); - if(bukkitData instanceof Slab) return new BukkitSlab((Slab) bukkitData); - if(TerraBukkitPlugin.BUKKIT_VERSION.above(TerraBukkitPlugin.BukkitVersion.V1_16) && bukkitData instanceof Wall) { // Wall only exists on 1.16 and up. - return new BukkitWall((Wall) bukkitData); - } - - if(bukkitData instanceof RedstoneWire) return new BukkitRedstoneWire((RedstoneWire) bukkitData); - if(bukkitData instanceof AnaloguePowerable) return new BukkitAnaloguePowerable((AnaloguePowerable) bukkitData); - - if(bukkitData instanceof MultipleFacing) return new BukkitMultipleFacing((MultipleFacing) bukkitData); - if(bukkitData instanceof Rotatable) return new BukkitRotatable((Rotatable) bukkitData); - if(bukkitData instanceof Directional) return new BukkitDirectional((Directional) bukkitData); - if(bukkitData instanceof Orientable) return new BukkitOrientable((Orientable) bukkitData); - - if(bukkitData instanceof Waterlogged) return new BukkitWaterlogged((Waterlogged) bukkitData); - return new BukkitBlockState(bukkitData); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java deleted file mode 100644 index 2db168092..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitDirectional extends BukkitBlockState implements Directional { - public BukkitDirectional(org.bukkit.block.data.Directional delegate) { - super(delegate); - } - - @Override - public BlockFace getFacing() { - return BukkitAdapter.adapt(((org.bukkit.block.data.Directional) getHandle()).getFacing()); - } - - @Override - public void setFacing(BlockFace facing) { - ((org.bukkit.block.data.Directional) getHandle()).setFacing(BukkitAdapter.adapt(facing)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java deleted file mode 100644 index 58bfe66c0..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -import java.util.Set; -import java.util.stream.Collectors; - -public class BukkitMultipleFacing extends BukkitBlockState implements MultipleFacing { - - public BukkitMultipleFacing(org.bukkit.block.data.MultipleFacing delegate) { - super(delegate); - } - - @Override - public Set getFaces() { - return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet()); - } - - @Override - public void setFace(BlockFace face, boolean facing) { - ((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(BukkitAdapter.adapt(face), facing); - } - - @Override - public Set getAllowedFaces() { - return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet()); - } - - @Override - public boolean hasFace(BlockFace f) { - return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(BukkitAdapter.adapt(f)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java deleted file mode 100644 index 4c8d8154e..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.data.Orientable; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -import java.util.Set; -import java.util.stream.Collectors; - -public class BukkitOrientable extends BukkitBlockState implements Orientable { - - public BukkitOrientable(org.bukkit.block.data.Orientable delegate) { - super(delegate); - } - - @Override - public Set getAxes() { - return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet()); - } - - @Override - public Axis getAxis() { - return BukkitAdapter.adapt(((org.bukkit.block.data.Orientable) getHandle()).getAxis()); - } - - @Override - public void setAxis(Axis axis) { - ((org.bukkit.block.data.Orientable) getHandle()).setAxis(BukkitAdapter.adapt(axis)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java deleted file mode 100644 index d70be38a4..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.data.Rail; -import com.dfsek.terra.api.block.state.properties.enums.RailShape; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitRail extends BukkitBlockState implements Rail { - public BukkitRail(org.bukkit.block.data.Rail delegate) { - super(delegate); - } - - @Override - public RailShape getShape() { - return BukkitAdapter.adapt(((org.bukkit.block.data.Rail) getHandle()).getShape()); - } - - @Override - public void setShape(RailShape newShape) { - ((org.bukkit.block.data.Rail) getHandle()).setShape(BukkitAdapter.adapt(newShape)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java deleted file mode 100644 index 8ee7fbb59..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.RedstoneWire; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -import java.util.Set; -import java.util.stream.Collectors; - -public class BukkitRedstoneWire extends BukkitAnaloguePowerable implements RedstoneWire { - public BukkitRedstoneWire(org.bukkit.block.data.type.RedstoneWire delegate) { - super(delegate); - } - - @Override - public Set getAllowedFaces() { - return ((org.bukkit.block.data.type.RedstoneWire) getHandle()).getAllowedFaces().stream().map(BukkitAdapter::adapt).collect(Collectors.toSet()); - } - - @Override - public Connection getFace(BlockFace face) { - return BukkitAdapter.adapt(((org.bukkit.block.data.type.RedstoneWire) getHandle()).getFace(BukkitAdapter.adapt(face))); - } - - @Override - public void setFace(BlockFace face, Connection connection) { - ((org.bukkit.block.data.type.RedstoneWire) getHandle()).setFace(BukkitAdapter.adapt(face), BukkitAdapter.adapt(connection)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java deleted file mode 100644 index b0d7f287c..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitRotatable extends BukkitBlockState implements Rotatable { - public BukkitRotatable(org.bukkit.block.data.Rotatable delegate) { - super(delegate); - } - - @Override - public BlockFace getRotation() { - return BukkitAdapter.adapt(((org.bukkit.block.data.Rotatable) getHandle()).getRotation()); - } - - @Override - public void setRotation(BlockFace face) { - ((org.bukkit.block.data.Rotatable) getHandle()).setRotation(BukkitAdapter.adapt(face)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java deleted file mode 100644 index 6420e6de0..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitSlab extends BukkitWaterlogged implements Slab { - public BukkitSlab(org.bukkit.block.data.type.Slab delegate) { - super(delegate); - } - - @Override - public Type getType() { - return BukkitAdapter.adapt(((org.bukkit.block.data.type.Slab) getHandle()).getType()); - } - - @Override - public void setType(Type type) { - ((org.bukkit.block.data.type.Slab) getHandle()).setType(BukkitAdapter.adapt(type)); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java deleted file mode 100644 index 5f050abfc..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Stairs; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitStairs extends BukkitBlockState implements Stairs { - - public BukkitStairs(org.bukkit.block.data.type.Stairs delegate) { - super(delegate); - } - - @Override - public Shape getShape() { - return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape()); - } - - @Override - public void setShape(Shape shape) { - ((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(BukkitAdapter.adapt(shape)); - } - - @Override - public Half getHalf() { - return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf()); - } - - @Override - public void setHalf(Half half) { - ((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(BukkitAdapter.adapt(half)); - } - - @Override - public BlockFace getFacing() { - return BukkitAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing()); - } - - @Override - public void setFacing(BlockFace facing) { - ((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(BukkitAdapter.adapt(facing)); - } - - @Override - public boolean isWaterlogged() { - return ((org.bukkit.block.data.type.Stairs) super.getHandle()).isWaterlogged(); - } - - @Override - public void setWaterlogged(boolean waterlogged) { - ((org.bukkit.block.data.type.Stairs) super.getHandle()).setWaterlogged(waterlogged); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java deleted file mode 100644 index e19038dba..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Wall; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -public class BukkitWall extends BukkitWaterlogged implements Wall { - public BukkitWall(org.bukkit.block.data.type.Wall delegate) { - super(delegate); - } - - @Override - public boolean isUp() { - return ((org.bukkit.block.data.type.Wall) getHandle()).isUp(); - } - - @Override - public void setUp(boolean up) { - ((org.bukkit.block.data.type.Wall) getHandle()).setUp(up); - } - - public static org.bukkit.block.data.type.Wall.Height adapt(com.dfsek.terra.api.block.data.Wall.Height height) { - switch(height) { - case NONE: - return org.bukkit.block.data.type.Wall.Height.NONE; - case LOW: - return org.bukkit.block.data.type.Wall.Height.LOW; - case TALL: - return org.bukkit.block.data.type.Wall.Height.TALL; - default: - throw new IllegalStateException(); - } - } - - public static com.dfsek.terra.api.block.data.Wall.Height adapt(org.bukkit.block.data.type.Wall.Height height) { - switch(height) { - case TALL: - return com.dfsek.terra.api.block.data.Wall.Height.TALL; - case LOW: - return com.dfsek.terra.api.block.data.Wall.Height.LOW; - case NONE: - return com.dfsek.terra.api.block.data.Wall.Height.NONE; - default: - throw new IllegalStateException(); - } - } - - @Override - public void setHeight(BlockFace face, Height height) { - ((org.bukkit.block.data.type.Wall) getHandle()).setHeight(BukkitAdapter.adapt(face), adapt(height)); - } - - @Override - public Height getHeight(BlockFace face) { - return adapt(((org.bukkit.block.data.type.Wall) getHandle()).getHeight(BukkitAdapter.adapt(face))); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java deleted file mode 100644 index fd1b60f14..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWaterlogged.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.bukkit.world.block.data; - -import com.dfsek.terra.api.block.data.Waterlogged; - -public class BukkitWaterlogged extends BukkitBlockState implements Waterlogged { - public BukkitWaterlogged(org.bukkit.block.data.Waterlogged delegate) { - super(delegate); - } - - @Override - public boolean isWaterlogged() { - return ((org.bukkit.block.data.Waterlogged) super.getHandle()).isWaterlogged(); - } - - @Override - public void setWaterlogged(boolean waterlogged) { - ((org.bukkit.block.data.Waterlogged) super.getHandle()).setWaterlogged(waterlogged); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java deleted file mode 100644 index 9083d664e..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricAnaloguePowerable.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.data.AnaloguePowerable; -import com.dfsek.terra.fabric.block.FabricBlockState; -import net.minecraft.block.BlockState; - -/** - * None of this actually has implementation, TODO: implement this if we ever end up needing it. - */ -public class FabricAnaloguePowerable extends FabricBlockState implements AnaloguePowerable { - public FabricAnaloguePowerable(BlockState delegate) { - super(delegate); - } - - @Override - public int getMaximumPower() { - return 0; - } - - @Override - public int getPower() { - return 0; - } - - @Override - public void setPower(int power) { - - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java deleted file mode 100644 index b3e66bbb6..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricDirectional.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.DirectionProperty; - -public class FabricDirectional extends FabricBlockState implements Directional { - private final DirectionProperty property; - - public FabricDirectional(BlockState delegate, DirectionProperty property) { - super(delegate); - this.property = property; - } - - @Override - public BlockFace getFacing() { - switch(delegate.get(property)) { - case SOUTH: - return BlockFace.SOUTH; - case DOWN: - return BlockFace.DOWN; - case UP: - return BlockFace.UP; - case EAST: - return BlockFace.EAST; - case WEST: - return BlockFace.WEST; - case NORTH: - return BlockFace.NORTH; - default: - throw new IllegalStateException(); - } - } - - @Override - public void setFacing(BlockFace facing) { - delegate = delegate.with(property, FabricAdapter.adapt(facing)); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java deleted file mode 100644 index fb5240b72..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricMultipleFacing.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.fabric.block.FabricBlockState; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.Properties; - -import java.util.HashSet; -import java.util.Set; - -public class FabricMultipleFacing extends FabricBlockState implements MultipleFacing { - public FabricMultipleFacing(BlockState delegate) { - super(delegate); - } - - @Override - public Set getFaces() { - Set set = new HashSet<>(); - if(delegate.get(Properties.NORTH)) set.add(BlockFace.NORTH); - if(delegate.get(Properties.SOUTH)) set.add(BlockFace.SOUTH); - if(delegate.get(Properties.EAST)) set.add(BlockFace.EAST); - if(delegate.get(Properties.WEST)) set.add(BlockFace.WEST); - if(delegate.contains(Properties.UP) && delegate.get(Properties.UP)) set.add(BlockFace.UP); - if(delegate.contains(Properties.DOWN) && delegate.get(Properties.DOWN)) set.add(BlockFace.DOWN); - return set; - } - - @Override - public void setFace(BlockFace face, boolean facing) { - switch(face) { - case NORTH: - delegate = delegate.with(Properties.NORTH, facing); - break; - case SOUTH: - delegate = delegate.with(Properties.SOUTH, facing); - break; - case EAST: - delegate = delegate.with(Properties.EAST, facing); - break; - case WEST: - delegate = delegate.with(Properties.WEST, facing); - break; - case UP: - delegate = delegate.with(Properties.UP, facing); - break; - case DOWN: - delegate = delegate.with(Properties.DOWN, facing); - break; - } - } - - @Override - public Set getAllowedFaces() { - Set set = new HashSet<>(); - if(delegate.contains(Properties.NORTH)) set.add(BlockFace.NORTH); - if(delegate.contains(Properties.SOUTH)) set.add(BlockFace.SOUTH); - if(delegate.contains(Properties.EAST)) set.add(BlockFace.EAST); - if(delegate.contains(Properties.WEST)) set.add(BlockFace.WEST); - if(delegate.contains(Properties.UP)) set.add(BlockFace.UP); - if(delegate.contains(Properties.DOWN)) set.add(BlockFace.DOWN); - return set; - } - - @Override - public boolean hasFace(BlockFace f) { - return getFaces().contains(f); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java deleted file mode 100644 index 82394e34b..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricOrientable.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.data.Orientable; -import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.util.math.Direction; - -import java.util.Arrays; -import java.util.Set; -import java.util.stream.Collectors; - -public class FabricOrientable extends FabricBlockState implements Orientable { - private final EnumProperty property; - - public FabricOrientable(BlockState delegate, EnumProperty property) { - super(delegate); - this.property = property; - } - - @Override - public Set getAxes() { - return Arrays.stream(Axis.values()).collect(Collectors.toSet()); - } - - @Override - public Axis getAxis() { - return FabricAdapter.adapt(getHandle().get(property)); - } - - @Override - public void setAxis(Axis axis) { - delegate = delegate.with(property, FabricAdapter.adapt(axis)); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java deleted file mode 100644 index 87fa2f184..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricRotatable.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.fabric.block.FabricBlockState; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.Properties; - -public class FabricRotatable extends FabricBlockState implements Rotatable { - public FabricRotatable(BlockState delegate) { - super(delegate); - } - - @Override - public BlockFace getRotation() { - int r = delegate.get(Properties.ROTATION); - switch(r) { - case 0: - return BlockFace.SOUTH; - case 1: - return BlockFace.SOUTH_SOUTH_WEST; - case 2: - return BlockFace.SOUTH_WEST; - case 3: - return BlockFace.WEST_SOUTH_WEST; - case 4: - return BlockFace.WEST; - case 5: - return BlockFace.WEST_NORTH_WEST; - case 6: - return BlockFace.NORTH_WEST; - case 7: - return BlockFace.NORTH_NORTH_WEST; - case 8: - return BlockFace.NORTH; - case 9: - return BlockFace.NORTH_NORTH_EAST; - case 10: - return BlockFace.NORTH_EAST; - case 11: - return BlockFace.EAST_NORTH_EAST; - case 12: - return BlockFace.EAST; - case 13: - return BlockFace.EAST_SOUTH_EAST; - case 14: - return BlockFace.SOUTH_EAST; - case 15: - return BlockFace.SOUTH_SOUTH_EAST; - default: - throw new IllegalArgumentException("Unknown rotation " + r); - } - } - - @Override - public void setRotation(BlockFace face) { - switch(face) { - case UP: - case DOWN: - throw new IllegalArgumentException("Illegal rotation " + face); - case SOUTH: - delegate = delegate.with(Properties.ROTATION, 0); - return; - case SOUTH_SOUTH_WEST: - delegate = delegate.with(Properties.ROTATION, 1); - return; - case SOUTH_WEST: - delegate = delegate.with(Properties.ROTATION, 2); - return; - case WEST_SOUTH_WEST: - delegate = delegate.with(Properties.ROTATION, 3); - return; - case WEST: - delegate = delegate.with(Properties.ROTATION, 4); - return; - case WEST_NORTH_WEST: - delegate = delegate.with(Properties.ROTATION, 5); - return; - case NORTH_WEST: - delegate = delegate.with(Properties.ROTATION, 6); - return; - case NORTH_NORTH_WEST: - delegate = delegate.with(Properties.ROTATION, 7); - return; - case NORTH: - delegate = delegate.with(Properties.ROTATION, 8); - return; - case NORTH_NORTH_EAST: - delegate = delegate.with(Properties.ROTATION, 9); - return; - case NORTH_EAST: - delegate = delegate.with(Properties.ROTATION, 10); - return; - case EAST_NORTH_EAST: - delegate = delegate.with(Properties.ROTATION, 11); - return; - case EAST: - delegate = delegate.with(Properties.ROTATION, 12); - return; - case EAST_SOUTH_EAST: - delegate = delegate.with(Properties.ROTATION, 13); - return; - case SOUTH_EAST: - delegate = delegate.with(Properties.ROTATION, 14); - return; - case SOUTH_SOUTH_EAST: - delegate = delegate.with(Properties.ROTATION, 15); - return; - } - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java deleted file mode 100644 index bcd7c753e..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricSlab.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.Properties; - -public class FabricSlab extends FabricWaterlogged implements Slab { - public FabricSlab(BlockState delegate) { - super(delegate); - } - - @Override - public Type getType() { - return FabricAdapter.adapt(delegate.get(Properties.SLAB_TYPE)); - } - - @Override - public void setType(Type type) { - delegate = delegate.with(Properties.SLAB_TYPE, FabricAdapter.adapt(type)); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java deleted file mode 100644 index 2764551ba..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricStairs.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Stairs; -import com.dfsek.terra.fabric.util.FabricAdapter; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.Properties; - -public class FabricStairs extends FabricWaterlogged implements Stairs { - public FabricStairs(BlockState delegate) { - super(delegate); - } - - @Override - public Shape getShape() { - return FabricAdapter.adapt(getHandle().get(Properties.STAIR_SHAPE)); - } - - @Override - public void setShape(Shape shape) { - super.delegate = getHandle().with(Properties.STAIR_SHAPE, FabricAdapter.adapt(shape)); - } - - @Override - public Half getHalf() { - return FabricAdapter.adapt(getHandle().get(Properties.BLOCK_HALF)); - } - - @Override - public void setHalf(Half half) { - super.delegate = getHandle().with(Properties.BLOCK_HALF, FabricAdapter.adapt(half)); - } - - @Override - public BlockFace getFacing() { - return FabricAdapter.adapt(getHandle().get(Properties.HORIZONTAL_FACING)); - } - - @Override - public void setFacing(BlockFace facing) { - super.delegate = getHandle().with(Properties.HORIZONTAL_FACING, FabricAdapter.adapt(facing)); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java deleted file mode 100644 index 344af38cd..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/data/FabricWaterlogged.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.fabric.block.data; - -import com.dfsek.terra.api.block.data.Waterlogged; -import com.dfsek.terra.fabric.block.FabricBlockState; -import net.minecraft.block.BlockState; -import net.minecraft.state.property.Properties; - -public class FabricWaterlogged extends FabricBlockState implements Waterlogged { - public FabricWaterlogged(BlockState delegate) { - super(delegate); - } - - @Override - public boolean isWaterlogged() { - return delegate.get(Properties.WATERLOGGED); - } - - @Override - public void setWaterlogged(boolean waterlogged) { - super.delegate = delegate.with(Properties.WATERLOGGED, waterlogged); - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index d30a146e3..0b9e1e8e4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,30 +1,15 @@ package com.dfsek.terra.fabric.util; +import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Bisected; -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.api.block.data.Stairs; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.fabric.block.data.FabricDirectional; -import com.dfsek.terra.fabric.block.data.FabricMultipleFacing; -import com.dfsek.terra.fabric.block.data.FabricOrientable; -import com.dfsek.terra.fabric.block.data.FabricRotatable; -import com.dfsek.terra.fabric.block.data.FabricSlab; -import com.dfsek.terra.fabric.block.data.FabricStairs; -import com.dfsek.terra.fabric.block.data.FabricWaterlogged; import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; import net.minecraft.block.enums.BlockHalf; -import net.minecraft.block.enums.SlabType; -import net.minecraft.block.enums.StairShape; -import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import java.util.Arrays; - public final class FabricAdapter { public static BlockPos adapt(Vector3 v) { return new BlockPos(v.getBlockX(), v.getBlockY(), v.getBlockZ()); @@ -35,122 +20,23 @@ public final class FabricAdapter { } public static FabricBlockState adapt(BlockState state) { - if(state.contains(Properties.STAIR_SHAPE)) return new FabricStairs(state); - - if(state.contains(Properties.SLAB_TYPE)) return new FabricSlab(state); - - if(state.contains(Properties.AXIS)) return new FabricOrientable(state, Properties.AXIS); - if(state.contains(Properties.HORIZONTAL_AXIS)) return new FabricOrientable(state, Properties.HORIZONTAL_AXIS); - - if(state.contains(Properties.ROTATION)) return new FabricRotatable(state); - - if(state.contains(Properties.FACING)) return new FabricDirectional(state, Properties.FACING); - if(state.contains(Properties.HOPPER_FACING)) return new FabricDirectional(state, Properties.HOPPER_FACING); - if(state.contains(Properties.HORIZONTAL_FACING)) return new FabricDirectional(state, Properties.HORIZONTAL_FACING); - - if(state.getProperties().containsAll(Arrays.asList(Properties.NORTH, Properties.SOUTH, Properties.EAST, Properties.WEST))) - return new FabricMultipleFacing(state); - if(state.contains(Properties.WATERLOGGED)) return new FabricWaterlogged(state); return new FabricBlockState(state); } - public static Direction adapt(BlockFace face) { - switch(face) { - case NORTH: - return Direction.NORTH; - case WEST: - return Direction.WEST; - case SOUTH: - return Direction.SOUTH; - case EAST: - return Direction.EAST; - case UP: - return Direction.UP; - case DOWN: - return Direction.DOWN; - default: - throw new IllegalArgumentException("Illegal direction: " + face); - } - } - public static Stairs.Shape adapt(StairShape shape) { - switch(shape) { - case OUTER_RIGHT: - return Stairs.Shape.OUTER_RIGHT; - case INNER_RIGHT: - return Stairs.Shape.INNER_RIGHT; - case OUTER_LEFT: - return Stairs.Shape.OUTER_LEFT; - case INNER_LEFT: - return Stairs.Shape.INNER_LEFT; - case STRAIGHT: - return Stairs.Shape.STRAIGHT; - default: - throw new IllegalStateException(); - } - } - public static Bisected.Half adapt(BlockHalf half) { + public static Half adapt(BlockHalf half) { switch(half) { case BOTTOM: - return Bisected.Half.BOTTOM; + return Half.BOTTOM; case TOP: - return Bisected.Half.TOP; + return Half.TOP; default: throw new IllegalStateException(); } } - public static BlockFace adapt(Direction direction) { - switch(direction) { - case DOWN: - return BlockFace.DOWN; - case UP: - return BlockFace.UP; - case WEST: - return BlockFace.WEST; - case EAST: - return BlockFace.EAST; - case NORTH: - return BlockFace.NORTH; - case SOUTH: - return BlockFace.SOUTH; - default: - throw new IllegalStateException(); - } - } - - public static Slab.Type adapt(SlabType type) { - switch(type) { - case BOTTOM: - return Slab.Type.BOTTOM; - case TOP: - return Slab.Type.TOP; - case DOUBLE: - return Slab.Type.DOUBLE; - default: - throw new IllegalStateException(); - } - } - - public static StairShape adapt(Stairs.Shape shape) { - switch(shape) { - case STRAIGHT: - return StairShape.STRAIGHT; - case INNER_LEFT: - return StairShape.INNER_LEFT; - case OUTER_LEFT: - return StairShape.OUTER_LEFT; - case INNER_RIGHT: - return StairShape.INNER_RIGHT; - case OUTER_RIGHT: - return StairShape.OUTER_RIGHT; - default: - throw new IllegalStateException(); - } - } - - public static BlockHalf adapt(Bisected.Half half) { + public static BlockHalf adapt(Half half) { switch(half) { case TOP: return BlockHalf.TOP; @@ -161,18 +47,7 @@ public final class FabricAdapter { } } - public static SlabType adapt(Slab.Type type) { - switch(type) { - case DOUBLE: - return SlabType.DOUBLE; - case TOP: - return SlabType.TOP; - case BOTTOM: - return SlabType.BOTTOM; - default: - throw new IllegalStateException(); - } - } + public static Axis adapt(Direction.Axis axis) { switch(axis) { From ca3a9180be6236e007bb61ffc8b15eb951615461 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:10:13 -0700 Subject: [PATCH 0077/1529] sort of working fabric impl --- .../com/dfsek/terra/config/loaders/Types.java | 5 +- .../terra/config/pack/ConfigPackTemplate.java | 2 + .../terra/fabric/block/FabricBlockState.java | 73 +++++++++ .../terra/fabric/util/FabricAdapter.java | 139 ++++++++++++++++++ 4 files changed, 216 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index 1a554d778..3b6125045 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -21,7 +21,7 @@ public final class Types { public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP; static { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockDataProbabilityCollection"); + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockStateProbabilityCollection"); FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection"); TREE_PROBABILITY_COLLECTION_TYPE = getType("treeProbabilityCollection"); TERRA_BIOME_PROBABILITY_COLLECTION_TYPE = getType("terraBiomeProbabilityCollection"); @@ -38,8 +38,7 @@ public final class Types { try { return Types.class.getDeclaredField(dummyFieldName).getGenericType(); } catch(NoSuchFieldException e) { - e.printStackTrace(); - return null; + throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong."); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index d1b767d04..d3da8aaf9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -7,6 +7,8 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; +import java.lang.reflect.Field; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java index 28de6eb59..3f2e6926f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java @@ -2,13 +2,68 @@ package com.dfsek.terra.fabric.block; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.properties.Property; +import com.dfsek.terra.api.block.state.properties.base.Properties; +import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.Half; +import com.dfsek.terra.api.util.generic.Construct; +import com.dfsek.terra.api.util.generic.pair.ImmutablePair; +import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.fabric.mixin.access.StateAccessor; +import com.dfsek.terra.fabric.util.FabricAdapter; +import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.block.Blocks; +import net.minecraft.block.enums.BlockHalf; +import net.minecraft.block.enums.RailShape; +import net.minecraft.block.enums.WallShape; +import net.minecraft.block.enums.WireConnection; +import net.minecraft.util.math.Direction; import net.minecraft.util.registry.Registry; +import scala.collection.immutable.Stream; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; public class FabricBlockState implements BlockState { + private static final Map, ImmutablePair, Function>> PROPERTY_DELEGATES_T2M = Construct.construct(() -> { + Map, ImmutablePair, Function>> map = new HashMap<>(); + map.put(Properties.AXIS, ImmutablePair.of(net.minecraft.state.property.Properties.AXIS, a -> FabricAdapter.adapt((net.minecraft.util.math.Direction.Axis) a))); + + map.put(Properties.NORTH, ImmutablePair.of(net.minecraft.state.property.Properties.NORTH, Function.identity())); + map.put(Properties.SOUTH, ImmutablePair.of(net.minecraft.state.property.Properties.SOUTH, Function.identity())); + map.put(Properties.EAST, ImmutablePair.of(net.minecraft.state.property.Properties.EAST, Function.identity())); + map.put(Properties.WEST, ImmutablePair.of(net.minecraft.state.property.Properties.WEST, Function.identity())); + + map.put(Properties.NORTH_CONNECTION, ImmutablePair.of(net.minecraft.state.property.Properties.NORTH_WIRE_CONNECTION, c -> FabricAdapter.adapt((WireConnection) c))); + map.put(Properties.SOUTH_CONNECTION, ImmutablePair.of(net.minecraft.state.property.Properties.SOUTH_WIRE_CONNECTION, c -> FabricAdapter.adapt((WireConnection) c))); + map.put(Properties.EAST_CONNECTION, ImmutablePair.of(net.minecraft.state.property.Properties.EAST_WIRE_CONNECTION, c -> FabricAdapter.adapt((WireConnection) c))); + map.put(Properties.WEST_CONNECTION, ImmutablePair.of(net.minecraft.state.property.Properties.WEST_WIRE_CONNECTION, c -> FabricAdapter.adapt((WireConnection) c))); + + + map.put(Properties.NORTH_HEIGHT, ImmutablePair.of(net.minecraft.state.property.Properties.NORTH_WALL_SHAPE, h -> FabricAdapter.adapt((WallShape) h))); + map.put(Properties.SOUTH_HEIGHT, ImmutablePair.of(net.minecraft.state.property.Properties.SOUTH_WALL_SHAPE, h -> FabricAdapter.adapt((WallShape) h))); + map.put(Properties.EAST_HEIGHT, ImmutablePair.of(net.minecraft.state.property.Properties.EAST_WALL_SHAPE, h -> FabricAdapter.adapt((WallShape) h))); + map.put(Properties.WEST_HEIGHT, ImmutablePair.of(net.minecraft.state.property.Properties.WEST_WALL_SHAPE, h -> FabricAdapter.adapt((WallShape) h))); + + map.put(Properties.DIRECTION, ImmutablePair.of(net.minecraft.state.property.Properties.FACING, d -> FabricAdapter.adapt((Direction) d))); + + map.put(Properties.WATERLOGGED, ImmutablePair.of(net.minecraft.state.property.Properties.WATERLOGGED, Function.identity())); + + map.put(Properties.RAIL_SHAPE, ImmutablePair.of(net.minecraft.state.property.Properties.RAIL_SHAPE, s -> FabricAdapter.adapt((RailShape) s))); + + map.put(Properties.HALF, ImmutablePair.of(net.minecraft.state.property.Properties.BLOCK_HALF, h -> FabricAdapter.adapt((BlockHalf) h))); + + return map; + }); + + private static final Map, Property> PROPERTY_DELEGATES_M2T = Construct.construct(() -> { + Map, Property> map = new HashMap<>(); + PROPERTY_DELEGATES_T2M.forEach((p, p2) -> map.put(p2.getLeft(), p)); + return map; + }); + protected net.minecraft.block.BlockState delegate; public FabricBlockState(net.minecraft.block.BlockState delegate) { @@ -55,6 +110,24 @@ public class FabricBlockState implements BlockState { return delegate.getBlock() == Blocks.STRUCTURE_VOID; } + @Override + public boolean has(Property property) { + return delegate.getProperties().contains(PROPERTY_DELEGATES_T2M.get(property).getLeft()); + } + + @SuppressWarnings("unchecked") + @Override + public T get(Property property) { + ImmutablePair, Function> pair = PROPERTY_DELEGATES_T2M.get(property); + return (T) pair.getRight().apply(delegate.get(pair.getLeft())); + } + + @Override + public BlockState set(Property property, T value) { + //return delegate = delegate.with(PROPERTY_DELEGATES_T2M.get(property), v); + return this; + } + @Override public net.minecraft.block.BlockState getHandle() { return delegate; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 0b9e1e8e4..c64720750 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -2,11 +2,16 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.RailShape; +import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; +import com.dfsek.terra.api.block.state.properties.enums.WallHeight; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; import net.minecraft.block.enums.BlockHalf; +import net.minecraft.block.enums.WallShape; +import net.minecraft.block.enums.WireConnection; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -23,6 +28,89 @@ public final class FabricAdapter { return new FabricBlockState(state); } + public static Direction adapt(com.dfsek.terra.api.block.state.properties.enums.Direction direction) { + switch(direction) { + case SOUTH: + return Direction.SOUTH; + case NORTH: + return Direction.NORTH; + case WEST: + return Direction.WEST; + case EAST: + return Direction.EAST; + case UP: + return Direction.UP; + case DOWN: + return Direction.DOWN; + } + throw new IllegalArgumentException(); + } + + public static com.dfsek.terra.api.block.state.properties.enums.Direction adapt(Direction direction) { + switch(direction) { + case SOUTH: + return com.dfsek.terra.api.block.state.properties.enums.Direction.SOUTH; + case NORTH: + return com.dfsek.terra.api.block.state.properties.enums.Direction.NORTH; + case WEST: + return com.dfsek.terra.api.block.state.properties.enums.Direction.WEST; + case EAST: + return com.dfsek.terra.api.block.state.properties.enums.Direction.EAST; + case UP: + return com.dfsek.terra.api.block.state.properties.enums.Direction.UP; + case DOWN: + return com.dfsek.terra.api.block.state.properties.enums.Direction.DOWN; + } + throw new IllegalArgumentException(); + } + + public static WallHeight adapt(WallShape shape) { + switch(shape) { + case LOW: + return WallHeight.LOW; + case NONE: + return WallHeight.NONE; + case TALL: + return WallHeight.TALL; + } + throw new IllegalArgumentException(); + } + + public static WallShape adapt(WallHeight shape) { + switch(shape) { + case LOW: + return WallShape.LOW; + case NONE: + return WallShape.NONE; + case TALL: + return WallShape.TALL; + } + throw new IllegalArgumentException(); + } + + public static RedstoneConnection adapt(WireConnection connection) { + switch(connection) { + case NONE: + return RedstoneConnection.NONE; + case UP: + return RedstoneConnection.UP; + case SIDE: + return RedstoneConnection.SIDE; + } + throw new IllegalArgumentException(); + } + + public static WireConnection adapt(RedstoneConnection connection) { + switch(connection) { + case NONE: + return WireConnection.NONE; + case UP: + return WireConnection.UP; + case SIDE: + return WireConnection.SIDE; + } + throw new IllegalArgumentException(); + } public static Half adapt(BlockHalf half) { @@ -47,6 +135,57 @@ public final class FabricAdapter { } } + public static RailShape adapt(net.minecraft.block.enums.RailShape railShape) { + switch(railShape) { + case EAST_WEST: + return RailShape.EAST_WEST; + case NORTH_EAST: + return RailShape.NORTH_EAST; + case NORTH_WEST: + return RailShape.NORTH_WEST; + case SOUTH_EAST: + return RailShape.SOUTH_EAST; + case SOUTH_WEST: + return RailShape.SOUTH_WEST; + case NORTH_SOUTH: + return RailShape.NORTH_SOUTH; + case ASCENDING_EAST: + return RailShape.ASCENDING_EAST; + case ASCENDING_NORTH: + return RailShape.ASCENDING_NORTH; + case ASCENDING_SOUTH: + return RailShape.ASCENDING_SOUTH; + case ASCENDING_WEST: + return RailShape.ASCENDING_WEST; + } + throw new IllegalStateException(); + } + + public static net.minecraft.block.enums.RailShape adapt(RailShape railShape) { + switch(railShape) { + case EAST_WEST: + return net.minecraft.block.enums.RailShape.EAST_WEST; + case NORTH_EAST: + return net.minecraft.block.enums.RailShape.NORTH_EAST; + case NORTH_WEST: + return net.minecraft.block.enums.RailShape.NORTH_WEST; + case SOUTH_EAST: + return net.minecraft.block.enums.RailShape.SOUTH_EAST; + case SOUTH_WEST: + return net.minecraft.block.enums.RailShape.SOUTH_WEST; + case NORTH_SOUTH: + return net.minecraft.block.enums.RailShape.NORTH_SOUTH; + case ASCENDING_EAST: + return net.minecraft.block.enums.RailShape.ASCENDING_EAST; + case ASCENDING_NORTH: + return net.minecraft.block.enums.RailShape.ASCENDING_NORTH; + case ASCENDING_SOUTH: + return net.minecraft.block.enums.RailShape.ASCENDING_SOUTH; + case ASCENDING_WEST: + return net.minecraft.block.enums.RailShape.ASCENDING_WEST; + } + throw new IllegalStateException(); + } public static Axis adapt(Direction.Axis axis) { From 7cd60d6d4e9a26d29b52fc2a066bb5bf9c9b3223 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:21:12 -0700 Subject: [PATCH 0078/1529] set up modules for addon/config loaders --- .../addon}/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 59 +++++++++++++++++++ settings.gradle.kts | 3 +- 3 files changed, 61 insertions(+), 2 deletions(-) rename common/{platform => loader/addon}/build.gradle.kts (96%) create mode 100644 common/loader/config/build.gradle.kts diff --git a/common/platform/build.gradle.kts b/common/loader/addon/build.gradle.kts similarity index 96% rename from common/platform/build.gradle.kts rename to common/loader/addon/build.gradle.kts index 7c1ecd52c..d6f23e57a 100644 --- a/common/platform/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -14,7 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"(project(":common:implementation")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.4") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/loader/config/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 69a622230..714b5e431 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,7 +10,8 @@ rootProject.name = "Terra" include("common:api") include("common:implementation") -include("common:platform") +include("common:loader:config") +include("common:loader:addon") include("platforms:bukkit") From 9880f488e5582a7d726c2b93f48e75d49525435d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:23:31 -0700 Subject: [PATCH 0079/1529] implementation depends on loaders (for now) --- common/implementation/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index d6f23e57a..13e9d27d0 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -14,6 +14,8 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) + "shadedApi"(project(":common:loader:config")) + "shadedApi"(project(":common:loader:addon")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.4") From 22c97ca390f96ef20995d7eadd8f483071c14aad Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:34:54 -0700 Subject: [PATCH 0080/1529] refactor addon loader to new module --- .../java/com/dfsek/terra/api/addon/TerraAddon.java | 12 ++++++------ .../com/dfsek/terra/api/addon/annotations/Addon.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Author.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Depends.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Version.java | 4 ++-- .../dfsek/terra/api/event/annotations/Global.java | 2 +- .../com/dfsek/terra/api/event/events/PackEvent.java | 4 ++-- .../dfsek/terra/registry/master/AddonRegistry.java | 10 +++++----- .../java/com/dfsek/terra/addon/AddonClassLoader.java | 0 .../main/java/com/dfsek/terra/addon/AddonPool.java | 2 +- .../java/com/dfsek/terra/addon/PreLoadAddon.java | 4 ++-- .../terra/addon/exception/AddonLoadException.java | 0 .../addon/exception/CircularDependencyException.java | 0 .../addon/exception/DependencyMissingException.java | 0 .../com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 10 +++++----- .../dfsek/terra/bukkit/listeners/TerraListener.java | 2 +- .../com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../java/com/dfsek/terra/forge/TerraForgePlugin.java | 2 +- 18 files changed, 33 insertions(+), 33 deletions(-) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/AddonPool.java (94%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java (94%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java (100%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index b49a87710..1771a77d9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -7,11 +7,11 @@ import com.dfsek.terra.api.addon.annotations.Version; import org.jetbrains.annotations.NotNull; /** - * Represents an entry point for an addon. Implementations must be annotated with {@link Addon}. + * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. */ public abstract class TerraAddon { /** - * Gets the version of this addon. + * Gets the version of this com.dfsek.terra.addon. * * @return Addon version. */ @@ -21,7 +21,7 @@ public abstract class TerraAddon { } /** - * Gets the author of this addon. + * Gets the author of this com.dfsek.terra.addon. * * @return Addon author. */ @@ -31,19 +31,19 @@ public abstract class TerraAddon { } /** - * Gets the name (ID) of this addon. + * Gets the name (ID) of this com.dfsek.terra.addon. * * @return Addon ID. */ 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. + throw new IllegalStateException("Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the com.dfsek.terra.addon loader. return addon.value(); } /** - * Invoked immediately after an addon is loaded. + * Invoked immediately after an com.dfsek.terra.addon is loaded. */ public abstract void initialize(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java index 355cf68d7..3ca6354c9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Specifies that the annotated class is an entry point for a Terra addon. + * Specifies that the annotated class is an entry point for a Terra com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Addon { /** - * @return The ID of the addon. + * @return The ID of the com.dfsek.terra.addon. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java index a7241990f..9c46e8eab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies the author of an addon. + * Optional annotation that specifies the author of an com.dfsek.terra.addon. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Author { /** - * @return Name of the addon author. + * @return Name of the com.dfsek.terra.addon author. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java index 604b5c3f9..83b5b01fd 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies dependencies of an addon. + * Optional annotation that specifies dependencies of an com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Depends { /** - * @return All addons this addon is dependent upon. + * @return All addons this com.dfsek.terra.addon is dependent upon. */ @NotNull String[] value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java index a683c821c..63afd191f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies the version of an addon. + * Optional annotation that specifies the version of an com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Version { /** - * @return Version of the addon. + * @return Version of the com.dfsek.terra.addon. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java index d162c00d9..f20d2f0ed 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java @@ -9,7 +9,7 @@ import java.lang.annotation.Target; /** * Specifies that an event handler is to handle all {@link PackEvent}s, regardless of whether the pack - * depends on the addon's listener. + * depends on the com.dfsek.terra.addon's listener. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index 048885f1f..3c774b4ab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -6,8 +6,8 @@ import com.dfsek.terra.api.event.annotations.Global; /** * An event with functionality directly linked to a {@link ConfigPack}. *

- * PackEvents are only invoked when the pack specifies the addon in its - * {@code addon} key (or when the listener is annotated {@link Global}). + * PackEvents are only invoked when the pack specifies the com.dfsek.terra.addon in its + * {@code com.dfsek.terra.addon} key (or when the listener is annotated {@link Global}). */ @SuppressWarnings("InterfaceMayBeAnnotatedFunctional") public interface PackEvent extends Event { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 1b8ef7d76..a96e6b0a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -34,7 +34,7 @@ public class AddonRegistry extends OpenRegistryImpl { public boolean add(String identifier, TerraAddon addon) { if(contains(identifier)) throw new IllegalArgumentException("Addon " + identifier + " is already registered."); addon.initialize(); - main.logger().info("Loaded addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); + main.logger().info("Loaded com.dfsek.terra.addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); return super.add(identifier, addon); } @@ -88,15 +88,15 @@ public class AddonRegistry extends OpenRegistryImpl { pluginInjector.inject(loadedAddon); loggerInjector.inject(loadedAddon); } catch(InstantiationException | IllegalAccessException | InvocationTargetException | InjectionException e) { - throw new AddonLoadException("Failed to load addon \" + " + addon.getId() + "\": ", e); + throw new AddonLoadException("Failed to load com.dfsek.terra.addon \" + " + addon.getId() + "\": ", e); } try { addChecked(loadedAddon.getName(), loadedAddon); } catch(DuplicateEntryException e) { valid = false; - main.logger().severe("Duplicate addon ID; addon with ID " + loadedAddon.getName() + " is already loaded."); - main.logger().severe("Existing addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); - main.logger().severe("Duplicate addon class: " + addonClass.getCanonicalName()); + main.logger().severe("Duplicate com.dfsek.terra.addon ID; com.dfsek.terra.addon with ID " + loadedAddon.getName() + " is already loaded."); + main.logger().severe("Existing com.dfsek.terra.addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); + main.logger().severe("Duplicate com.dfsek.terra.addon class: " + addonClass.getCanonicalName()); } } } catch(AddonLoadException | IOException e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java index 5636aa06b..479e82237 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java @@ -12,7 +12,7 @@ public class AddonPool { public void add(PreLoadAddon addon) throws AddonLoadException { if(pool.containsKey(addon.getId())) { - String message = "Duplicate addon ID: " + + String message = "Duplicate com.dfsek.terra.addon ID: " + addon.getId() + "; original ID from file: " + pool.get(addon.getId()).getFile().getAbsolutePath() + ", class: " + diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java index f3b1b0482..41c99a269 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addon; +import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.addon.exception.CircularDependencyException; -import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Depends; @@ -33,7 +33,7 @@ public class PreLoadAddon { public void rebuildDependencies(AddonPool pool, PreLoadAddon origin, boolean levelG1) throws AddonLoadException { if(this.equals(origin) && !levelG1) - throw new CircularDependencyException("Detected circular dependency in addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); + throw new CircularDependencyException("Detected circular dependency in com.dfsek.terra.addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); for(String dependency : dependencies) { PreLoadAddon preLoadAddon = pool.get(dependency); diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java 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 902935090..4d01b8ed4 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 @@ -129,10 +129,10 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { public void setHandle(WorldHandle handle) { getLogger().warning("|-------------------------------------------------------|"); - getLogger().warning("A third-party addon has injected a custom WorldHandle!"); - getLogger().warning("If you encounter issues, try *without* the addon before"); - getLogger().warning("reporting to Terra. Report issues with the addon to the"); - getLogger().warning("addon's maintainers!"); + 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; } @@ -183,7 +183,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll()) { - getLogger().severe("Failed to load addons. Please correct addon installations to continue."); + getLogger().severe("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); Bukkit.getPluginManager().disablePlugin(this); return; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 264e085d4..680ec2952 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -26,7 +26,7 @@ public class TerraListener implements EventListener { String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); event.getPack().getRegistry(Tree.class).add(id, new BukkitTree(value, main)); event.getPack().getRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" - } catch(DuplicateEntryException ignore) { // If another addon has already registered trees, do nothing. + } catch(DuplicateEntryException ignore) { // If another com.dfsek.terra.addon has already registered trees, do nothing. } } } 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 4e87326c3..515f2398d 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 @@ -258,7 +258,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll()) { - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); + throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); } logger.info("Loaded addons."); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java index 9a2d118ff..deaa61a19 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java @@ -162,7 +162,7 @@ public class TerraForgePlugin implements TerraPlugin { logger.info("Initializing Terra..."); if(!addonRegistry.loadAll()) { - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); + throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); } logger.info("Loaded addons."); From abd3683a49da906f66170b2805d62a5d7012dc05 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:48:23 -0700 Subject: [PATCH 0081/1529] create noise addon module --- common/addons/noise/build.gradle.kts | 59 ++++++++++++++++++++++++++++ settings.gradle.kts | 3 ++ 2 files changed, 62 insertions(+) create mode 100644 common/addons/noise/build.gradle.kts diff --git a/common/addons/noise/build.gradle.kts b/common/addons/noise/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/noise/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 714b5e431..711183be2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,9 +10,12 @@ rootProject.name = "Terra" include("common:api") include("common:implementation") + include("common:loader:config") include("common:loader:addon") +include("common:addons:noise") + include("platforms:bukkit") include("platforms:fabric") From bf5e8d903ca06702bec8a0f1a52c80d74a773919 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 30 Jun 2021 10:39:03 -0700 Subject: [PATCH 0082/1529] put vector3 in class in API --- .../dfsek/terra/addons/noise/NoiseAddon.java | 104 +++++++ .../config}/NoiseSamplerBuilderLoader.java | 2 +- .../config}/templates/DomainWarpTemplate.java | 4 +- .../config/templates}/FunctionTemplate.java | 2 +- .../templates/ImageSamplerTemplate.java | 4 +- .../config}/templates/KernelTemplate.java | 4 +- .../config}/templates/SamplerTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 6 +- .../noise/ConstantNoiseTemplate.java | 6 +- .../noise/ExpressionFunctionTemplate.java | 14 +- .../templates/noise/GaborNoiseTemplate.java | 4 +- .../templates/noise/NoiseTemplate.java | 6 +- .../templates/noise/SimpleNoiseTemplate.java | 4 +- .../noise/fractal/BrownianMotionTemplate.java | 4 +- .../noise/fractal/FractalTemplate.java | 6 +- .../noise/fractal/PingPongTemplate.java | 4 +- .../noise/fractal/RidgedFractalTemplate.java | 4 +- .../normalizer/ClampNormalizerTemplate.java | 7 +- .../normalizer/LinearNormalizerTemplate.java | 4 +- .../normalizer/NormalNormalizerTemplate.java | 4 +- .../normalizer/NormalizerTemplate.java | 6 +- .../noise/normalizer/ClampNormalizer.java | 2 +- .../noise/normalizer/LinearNormalizer.java | 2 +- .../noise/normalizer/NormalNormalizer.java | 2 +- .../addons}/noise/normalizer/Normalizer.java | 2 +- .../noise}/paralithic/BlankFunction.java | 2 +- .../defined/UserDefinedFunction.java | 4 +- .../paralithic/noise/NoiseFunction.java | 2 +- .../paralithic/noise/NoiseFunction2.java | 4 +- .../paralithic/noise/NoiseFunction3.java | 2 +- .../noise/samplers/DomainWarpedSampler.java | 2 +- .../noise/samplers/ExpressionSampler.java | 2 +- .../addons}/noise/samplers/ImageSampler.java | 2 +- .../addons}/noise/samplers/KernelSampler.java | 2 +- .../noise/samplers/noise/CellularSampler.java | 6 +- .../noise/samplers/noise/ConstantSampler.java | 2 +- .../samplers/noise/ExpressionFunction.java | 2 +- .../samplers/noise/GaborNoiseSampler.java | 4 +- .../noise/samplers/noise/NoiseFunction.java | 2 +- .../noise/fractal/BrownianMotionSampler.java | 2 +- .../noise/fractal/FractalNoiseFunction.java | 4 +- .../noise/fractal/PingPongSampler.java | 2 +- .../noise/fractal/RidgedFractalSampler.java | 2 +- .../noise/random/GaussianNoiseSampler.java | 4 +- .../noise/random/WhiteNoiseSampler.java | 4 +- .../noise/simplex/OpenSimplex2SSampler.java | 2 +- .../noise/simplex/OpenSimplex2Sampler.java | 2 +- .../samplers/noise/simplex/PerlinSampler.java | 2 +- .../noise/simplex/SimplexSampler.java | 2 +- .../noise/simplex/SimplexStyleSampler.java | 4 +- .../noise/value/ValueCubicSampler.java | 2 +- .../samplers/noise/value/ValueSampler.java | 2 +- .../samplers/noise/value/ValueStyleNoise.java | 4 +- .../addons/noise/util}/HashIntrinsic.java | 2 +- .../noise/util}/HashMapDoubleDouble.java | 2 +- .../java/com/dfsek/terra/api/TerraPlugin.java | 4 +- .../dfsek/terra/api/config/ConfigPack.java | 6 +- .../dfsek/terra/api/noise/NoiseSampler.java | 24 ++ .../terra/api/tectonic/LoaderHolder.java | 20 ++ .../api/{ => tectonic}/LoaderRegistrar.java | 2 +- .../terra/api/util/seeded/NoiseProvider.java | 0 .../terra/api/util/seeded/NoiseSeeded.java | 0 .../terra/api/util/seeded/SeededBuilder.java | 0 .../terra/api/util/seeded/SourceSeeded.java | 0 .../terra/api/util/seeded/StageSeeded.java | 0 .../com/dfsek/terra/api/vector/Vector3.java | 225 +++++++++++++-- .../com/dfsek/terra/api/math/GridSpawn.java | 5 +- .../functions/AbstractBlockFunction.java | 4 +- .../script/functions/BiomeFunction.java | 4 +- .../script/functions/CheckBlockFunction.java | 4 +- .../script/functions/CheckFunction.java | 3 +- .../script/functions/EntityFunction.java | 4 +- .../script/functions/GetMarkFunction.java | 4 +- .../script/functions/LootFunction.java | 4 +- .../script/functions/PullFunction.java | 4 +- .../script/functions/SetMarkFunction.java | 4 +- .../script/functions/StateFunction.java | 4 +- .../script/functions/StructureFunction.java | 3 +- .../dfsek/terra/api/world/carving/Worm.java | 7 +- .../api/world/locate/AsyncFeatureFinder.java | 3 +- .../com/dfsek/terra/carving/CarverCache.java | 4 +- .../terra/carving/UserDefinedCarver.java | 3 +- .../commands/biome/BiomeLocateCommand.java | 6 +- .../commands/structure/SpawnCommand.java | 3 +- .../structure/StructureLocateCommand.java | 6 +- .../dfsek/terra/config/GenericLoaders.java | 17 +- .../builder/UserDefinedBiomeBuilder.java | 3 +- .../provider/BiomeProviderTemplate.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 29 +- .../terra/config/pack/ConfigPackTemplate.java | 2 - .../terra/config/templates/BiomeTemplate.java | 3 +- .../terra/registry/config/NoiseRegistry.java | 52 ---- .../com/dfsek/terra/vector/Vector2Impl.java | 2 +- .../com/dfsek/terra/vector/Vector3Impl.java | 263 ------------------ .../generators/DefaultChunkGenerator3D.java | 7 +- .../interpolation/ChunkInterpolator2D.java | 3 +- .../interpolation/ChunkInterpolator3D.java | 3 +- .../terra/world/population/OrePopulator.java | 4 +- .../population/items/flora/TerraFlora.java | 3 +- .../world/population/items/ores/Ore.java | 4 +- .../population/items/ores/VanillaOre.java | 4 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 3 +- .../bukkit/listeners/CommonListener.java | 3 +- .../terra/bukkit/world/BukkitAdapter.java | 5 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 27 ++ .../terra/fabric/util/FabricAdapter.java | 3 +- .../terra/fabric/util/WorldEditUtil.java | 5 +- 107 files changed, 552 insertions(+), 544 deletions(-) create mode 100644 common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/NoiseSamplerBuilderLoader.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/DomainWarpTemplate.java (85%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/function => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates}/FunctionTemplate.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/ImageSamplerTemplate.java (82%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/KernelTemplate.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/SamplerTemplate.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/CellularNoiseTemplate.java (87%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/ConstantNoiseTemplate.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/ExpressionFunctionTemplate.java (84%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/GaborNoiseTemplate.java (88%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/NoiseTemplate.java (63%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/SimpleNoiseTemplate.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/fractal/BrownianMotionTemplate.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/fractal/FractalTemplate.java (72%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/fractal/PingPongTemplate.java (83%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/noise/fractal/RidgedFractalTemplate.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/normalizer/ClampNormalizerTemplate.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/normalizer/LinearNormalizerTemplate.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/normalizer/NormalNormalizerTemplate.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler => addons/noise/src/main/java/com/dfsek/terra/addons/noise/config}/templates/normalizer/NormalizerTemplate.java (54%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/normalizer/ClampNormalizer.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/normalizer/LinearNormalizer.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/normalizer/NormalNormalizer.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/normalizer/Normalizer.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => addons/noise/src/main/java/com/dfsek/terra/addons/noise}/paralithic/BlankFunction.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => addons/noise/src/main/java/com/dfsek/terra/addons/noise}/paralithic/defined/UserDefinedFunction.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => addons/noise/src/main/java/com/dfsek/terra/addons/noise}/paralithic/noise/NoiseFunction.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => addons/noise/src/main/java/com/dfsek/terra/addons/noise}/paralithic/noise/NoiseFunction2.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api/math => addons/noise/src/main/java/com/dfsek/terra/addons/noise}/paralithic/noise/NoiseFunction3.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/DomainWarpedSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/ExpressionSampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/ImageSampler.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/KernelSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/CellularSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/ConstantSampler.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/ExpressionFunction.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/GaborNoiseSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/NoiseFunction.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/fractal/BrownianMotionSampler.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/fractal/FractalNoiseFunction.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/fractal/PingPongSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/fractal/RidgedFractalSampler.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/random/GaussianNoiseSampler.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/random/WhiteNoiseSampler.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/simplex/OpenSimplex2SSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/simplex/OpenSimplex2Sampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/simplex/PerlinSampler.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/simplex/SimplexSampler.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/simplex/SimplexStyleSampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/value/ValueCubicSampler.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/value/ValueSampler.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra => addons/noise/src/main/java/com/dfsek/terra/addons}/noise/samplers/noise/value/ValueStyleNoise.java (82%) rename common/{implementation/src/main/java/com/dfsek/terra/api/util/hash => addons/noise/src/main/java/com/dfsek/terra/addons/noise/util}/HashIntrinsic.java (99%) rename common/{implementation/src/main/java/com/dfsek/terra/api/util/hash => addons/noise/src/main/java/com/dfsek/terra/addons/noise/util}/HashMapDoubleDouble.java (99%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java rename common/api/src/main/java/com/dfsek/terra/api/{ => tectonic}/LoaderRegistrar.java (77%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java (100%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java new file mode 100644 index 000000000..e861d5814 --- /dev/null +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -0,0 +1,104 @@ +package com.dfsek.terra.addons.noise; + +import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; +import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; +import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; +import com.dfsek.terra.addons.noise.config.templates.KernelTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.CellularNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.ConstantNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.ExpressionFunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.GaborNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.SimpleNoiseTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.BrownianMotionTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.PingPongTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractalTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate; +import com.dfsek.terra.addons.noise.samplers.ImageSampler; +import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.PerlinSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.SimplexSampler; +import com.dfsek.terra.addons.noise.samplers.noise.value.ValueCubicSampler; +import com.dfsek.terra.addons.noise.samplers.noise.value.ValueSampler; +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.annotations.Global; +import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.seeded.NoiseProvider; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; + +import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; + +@Addon("noise") +@Author("Terra") +@Version("1.0.0") +public class NoiseAddon extends TerraAddon { + @Inject + private TerraPlugin plugin; + + @Override + public void initialize() { + plugin.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) + .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) + .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) + .applyLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) + .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) + .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) + .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)) + ; + } + + @SuppressWarnings("deprecation") + @Global + public void packPreLoad(ConfigPackPreLoadEvent event) { + + event.getPack() + .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(event.getPack().getRegistry(NoiseProvider.class))); + + CheckedRegistry noiseRegistry = event.getPack().getRegistry(NoiseProvider.class); + + noiseRegistry.addUnchecked("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.addUnchecked("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.addUnchecked("CLAMP", ClampNormalizerTemplate::new); + noiseRegistry.addUnchecked("EXPRESSION", ExpressionFunctionTemplate::new); + + noiseRegistry.addUnchecked("IMAGE", ImageSamplerTemplate::new); + + noiseRegistry.addUnchecked("DOMAINWARP", DomainWarpTemplate::new); + + noiseRegistry.addUnchecked("FBM", BrownianMotionTemplate::new); + noiseRegistry.addUnchecked("PINGPONG", PingPongTemplate::new); + noiseRegistry.addUnchecked("RIDGED", RidgedFractalTemplate::new); + + noiseRegistry.addUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.addUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.addUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.addUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.addUnchecked("GABOR", GaborNoiseTemplate::new); + + + noiseRegistry.addUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.addUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + + noiseRegistry.addUnchecked("CELLULAR", CellularNoiseTemplate::new); + + noiseRegistry.addUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.addUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + + noiseRegistry.addUnchecked("CONSTANT", ConstantNoiseTemplate::new); + + noiseRegistry.addUnchecked("KERNEL", KernelTemplate::new); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 919ace8f7..fdd2107bf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler; +package com.dfsek.terra.addons.noise.config; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java similarity index 85% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 8a62a6aa0..7167aca7a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/DomainWarpTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.DomainWarpedSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java index 640dd1999..1d7d8da82 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/function/FunctionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.function; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index cc751580c..d5571d37e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/ImageSamplerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.ImageSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.ImageSampler; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 59448ca85..0abf1a2b5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/KernelTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.terra.addons.noise.samplers.KernelSampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.KernelSampler; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 39836d59f..7dc39a6f7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/SamplerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates; +package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 6bec571d1..e962ad71a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index 37cf881f4..2239eb6e0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; @SuppressWarnings("FieldMayBeFinal") public class ConstantNoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 0c88b590e..a1c9dd3d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; @@ -8,14 +8,14 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.ExpressionFunction; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index c3df2ab8c..6766b2f03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.GaborNoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.GaborNoiseSampler; public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index 32295e959..4b9e6fad5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/NoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index a922ca27d..ef2b72be1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise; +package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; import java.util.function.Function; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index dd4c33482..1965f9d8c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.BrownianMotionSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.BrownianMotionSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 37db190de..ceb46f3ad 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index 912b89831..d8a5bc460 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.PingPongSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.PingPongSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index 91495b5df..e16f33403 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; +package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.fractal.RidgedFractalSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.fractal.RidgedFractalSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index c6d16a164..689939a01 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -1,12 +1,11 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.ClampNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.ClampNormalizer; -import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class ClampNormalizerTemplate extends NormalizerTemplate { +public class ClampNormalizerTemplate extends NormalizerTemplate { @Value("max") private double max; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index ef26b99e8..4de3930c5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.LinearNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.LinearNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class LinearNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java index aa9e01279..f6d94a3e7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.normalizer.NormalNormalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.normalizer.NormalNormalizer; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class NormalNormalizerTemplate extends NormalizerTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java similarity index 54% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index da4a92fa7..248b34e69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/sampler/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; +package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.normalizer.Normalizer; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; -import com.dfsek.terra.noise.normalizer.Normalizer; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java index e4e3598ae..3bce239c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/ClampNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java index d062f9c07..faaa5c587 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/LinearNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java index 575b60db0..d56ac8a82 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/NormalNormalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java index 327cb5e72..a4dce32c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/normalizer/Normalizer.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.normalizer; +package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java index 12cd1872a..3165b58d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/BlankFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic; +package com.dfsek.terra.addons.noise.paralithic; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index 7058d8085..0f7f79cbf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.math.paralithic.defined; +package com.dfsek.terra.addons.noise.paralithic.defined; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; public class UserDefinedFunction implements DynamicFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java index 76b2bf39e..20c2aa909 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java index 2a1fa0f94..4fe62fb7e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; +import com.dfsek.terra.addons.noise.util.HashMapDoubleDouble; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.hash.HashMapDoubleDouble; public class NoiseFunction2 implements NoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java index 0c4d826a1..67e7400dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction3.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.math.paralithic.noise; +package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java index 51a40d85a..bb81468a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/DomainWarpedSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java index 24ba1549b..38f126c8e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ExpressionSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java index cc1aa3f89..65ca10e92 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/ImageSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java index e3f0d43ce..897d193b1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/KernelSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers; +package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 7f21694d3..e4741d2d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/CellularSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector3Impl; @@ -384,7 +384,7 @@ public class CellularSampler extends NoiseFunction { int yPrimedBase = (yr - 1) * PRIME_Y; int zPrimedBase = (zr - 1) * PRIME_Z; - Vector3 center = new Vector3Impl(x, y, z); + Vector3 center = new Vector3(x, y, z); switch(distanceFunction) { case Euclidean: diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java index 59455ffa1..74110466f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ConstantSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; /** * Sampler3D implementation that returns a constant. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java index 2cd6bcdac..e736a8e91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/ExpressionFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java index 277316a50..4b779f768 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; import net.jafama.FastMath; public class GaborNoiseSampler extends NoiseFunction { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index 7e21160a2..57c20a59b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise; +package com.dfsek.terra.addons.noise.samplers.noise; import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java index f974132aa..e95f89074 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java index 702ab0b1c..b558ef8be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; public abstract class FractalNoiseFunction extends NoiseFunction { protected final NoiseSampler input; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java index 95fe14387..1a1ef243a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java index 358568bc4..d11af4d06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.fractal; +package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java index 5a488a6aa..1dc5e95d5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.random; +package com.dfsek.terra.addons.noise.samplers.noise.random; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java index 5a99eed7c..335287137 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.random; +package com.dfsek.terra.addons.noise.samplers.noise.random; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index 17a49e93f..cb8c91d69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index 0ce5a2a6f..6a8e46089 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide OpenSimplex2 noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java index 13fbe326b..a20dd5c79 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; /** * NoiseSampler implementation to provide Perlin Noise. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java index 7b1ccc099..9190c981a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; public class SimplexSampler extends SimplexStyleSampler { private static final Double2[] GRAD_2D = { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java index 83805d85b..39c0b6c7c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.simplex; +package com.dfsek.terra.addons.noise.samplers.noise.simplex; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; /** * Abstract NoiseSampler implementation for simplex-style noise functions. diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java index 154d7053a..bb61eb93b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueCubicSampler extends ValueStyleNoise { public ValueCubicSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java index 656f60d7f..1546177f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueSampler extends ValueStyleNoise { public ValueSampler(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java index aff9e1a22..32483df29 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.noise.samplers.noise.value; +package com.dfsek.terra.addons.noise.samplers.noise.value; -import com.dfsek.terra.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; public abstract class ValueStyleNoise extends NoiseFunction { public ValueStyleNoise(int seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java index 638d8a66c..104e7fe38 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/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.api.util.hash; +package com.dfsek.terra.addons.noise.util; import java.io.Serializable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java rename to common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java index edad7aa32..9172c656b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/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.api.util.hash; +package com.dfsek.terra.addons.noise.util; import java.io.Serializable; import java.util.NoSuchElementException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 68f58b009..c77a5a134 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -10,6 +10,8 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.tectonic.LoaderHolder; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.JarUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -22,7 +24,7 @@ import java.util.jar.JarFile; /** * Represents a Terra mod/plugin instance. */ -public interface TerraPlugin extends LoaderRegistrar { +public interface TerraPlugin extends LoaderRegistrar, LoaderHolder { WorldHandle getWorldHandle(); TerraWorld getWorld(World world); 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 c4acb01bd..0c4691c98 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 @@ -1,6 +1,7 @@ package com.dfsek.terra.api.config; -import com.dfsek.terra.api.LoaderRegistrar; +import com.dfsek.terra.api.tectonic.LoaderHolder; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.world.TerraWorld; @@ -9,8 +10,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.Map; import java.util.Set; -public interface ConfigPack extends LoaderRegistrar { - @SuppressWarnings("unchecked") +public interface ConfigPack extends LoaderRegistrar, LoaderHolder { CheckedRegistry getRegistry(Class clazz); BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index 1509e752e..be8b19097 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -30,4 +30,28 @@ public interface NoiseSampler { double getNoiseSeeded(int seed, double x, double y); double getNoiseSeeded(int seed, double x, double y, double z); + + static NoiseSampler zero() { + return new NoiseSampler() { + @Override + public double getNoise(double x, double y) { + return 0; + } + + @Override + public double getNoise(double x, double y, double z) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y, double z) { + return 0; + } + }; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java new file mode 100644 index 000000000..3bbd10ecc --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.api.tectonic; + +import com.dfsek.tectonic.abstraction.TemplateProvider; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.lang.reflect.Type; +import java.util.function.Supplier; + +public interface LoaderHolder { + LoaderHolder applyLoader(Type type, TypeLoader loader); + default LoaderHolder applyLoader(Class type, TypeLoader loader) { + return applyLoader((Type) type, loader); + } + + LoaderHolder applyLoader(Type type, TemplateProvider> loader); + default LoaderHolder applyLoader(Class type, TemplateProvider> loader) { + return applyLoader((Type) type, loader); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java similarity index 77% rename from common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java rename to common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java index 96308deb0..61fc561ae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/LoaderRegistrar.java +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api; +package com.dfsek.terra.api.tectonic; import com.dfsek.tectonic.loading.TypeRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index e939d8bd0..69a40b39a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -1,47 +1,115 @@ package com.dfsek.terra.api.vector; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.World; +import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -public interface Vector3 extends Cloneable { - double getZ(); +public class Vector3 implements Cloneable { + private double x; + private double y; + private double z; - Vector3 setZ(double z); + public Vector3(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } - double getX(); + public double getZ() { + return z; + } - Vector3 setX(double x); + public Vector3 setZ(double z) { + this.z = z; + return this; + } - double getY(); + public double getX() { + return x; + } - Vector3 setY(double y); + public Vector3 setX(double x) { + this.x = x; + return this; + } - int getBlockX(); + public double getY() { + return y; + } - int getBlockY(); + public Vector3 setY(double y) { + this.y = y; + return this; + } - int getBlockZ(); + public int getBlockX() { + return FastMath.floorToInt(x); + } - Vector3 multiply(double m); + public int getBlockY() { + return FastMath.floorToInt(y); + } - Vector3 add(double x, double y, double z); + public int getBlockZ() { + return FastMath.floorToInt(z); + } - Vector3 add(Vector3 other); + public Vector3 multiply(double m) { + x *= m; + y *= m; + z *= m; + return this; + } - Vector3 add(Vector2 other); + public Vector3 add(double x, double y, double z) { + this.x += x; + this.y += y; + this.z += z; + return this; + } - double lengthSquared(); + public Vector3 add(Vector3 other) { + this.x += other.getX(); + this.y += other.getY(); + this.z += other.getZ(); + return this; + } - double length(); + public Vector3 add(Vector2 other) { + this.x += other.getX(); + this.z += other.getZ(); + return this; + } - double inverseLength(); + public double lengthSquared() { + return x * x + y * y + z * z; + } + + public Vector3 clone() { + try { + return (Vector3) super.clone(); + } catch(CloneNotSupportedException e) { + throw new Error(e); + } + } + + public double length() { + return FastMath.sqrt(lengthSquared()); + } + + public double inverseLength() { + return FastMath.invSqrtQuick(lengthSquared()); + } /** * Returns if a vector is normalized * * @return whether the vector is normalised */ - boolean isNormalized(); + public boolean isNormalized() { + return MathUtil.equals(this.lengthSquared(), 1); + } /** * Rotates the vector around the x axis. @@ -55,7 +123,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundX(double angle); + @NotNull + public Vector3 rotateAroundX(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double y = angleCos * getY() - angleSin * getZ(); + double z = angleSin * getY() + angleCos * getZ(); + return setY(y).setZ(z); + } /** * Rotates the vector around the y axis. @@ -69,7 +145,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundY(double angle); + @NotNull + public Vector3 rotateAroundY(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double x = angleCos * getX() + angleSin * getZ(); + double z = -angleSin * getX() + angleCos * getZ(); + return setX(x).setZ(z); + } /** * Rotates the vector around the z axis @@ -83,7 +167,15 @@ public interface Vector3 extends Cloneable { * in radians * @return the same vector */ - @NotNull Vector3 rotateAroundZ(double angle); + @NotNull + public Vector3 rotateAroundZ(double angle) { + double angleCos = Math.cos(angle); + double angleSin = Math.sin(angle); + + double x = angleCos * getX() - angleSin * getY(); + double y = angleSin * getX() + angleCos * getY(); + return setX(x).setY(y); + } /** * Get the distance between this vector and another. The value of this @@ -95,7 +187,9 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distance(@NotNull Vector3 o); + public double distance(@NotNull Vector3 o) { + return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); + } /** * Get the squared distance between this vector and another. @@ -103,7 +197,9 @@ public interface Vector3 extends Cloneable { * @param o The other vector * @return the distance */ - double distanceSquared(@NotNull Vector3 o); + public double distanceSquared(@NotNull Vector3 o) { + return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); + } /** * Rotates the vector around a given arbitrary axis in 3 dimensional space. @@ -124,7 +220,10 @@ public interface Vector3 extends Cloneable { * @throws IllegalArgumentException if the provided axis vector instance is * null */ - @NotNull Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; + @NotNull + public Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { + return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.clone().normalize(), angle); + } /** * Rotates the vector around a given arbitrary axis in 3 dimensional space. @@ -144,7 +243,27 @@ public interface Vector3 extends Cloneable { * @throws IllegalArgumentException if the provided axis vector instance is * null */ - @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException; + @NotNull + public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { + double x = getX(), y = getY(), z = getZ(); + double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); + + double cosTheta = Math.cos(angle); + double sinTheta = Math.sin(angle); + double dotProduct = this.dot(axis); + + double xPrime = x2 * dotProduct * (1d - cosTheta) + + x * cosTheta + + (-z2 * y + y2 * z) * sinTheta; + double yPrime = y2 * dotProduct * (1d - cosTheta) + + y * cosTheta + + (z2 * x - x2 * z) * sinTheta; + double zPrime = z2 * dotProduct * (1d - cosTheta) + + z * cosTheta + + (-y2 * x + x2 * y) * sinTheta; + + return setX(xPrime).setY(yPrime).setZ(zPrime); + } /** * Calculates the dot product of this vector with another. The dot product @@ -153,13 +272,59 @@ public interface Vector3 extends Cloneable { * @param other The other vector * @return dot product */ - double dot(@NotNull Vector3 other); + public double dot(@NotNull Vector3 other) { + return x * other.getX() + y * other.getY() + z * other.getZ(); + } - Vector3 normalize(); + public Vector3 normalize() { + return this.multiply(this.inverseLength()); + } - Vector3 subtract(int x, int y, int z); + public Vector3 subtract(int x, int y, int z) { + this.x -= x; + this.y -= y; + this.z -= z; + return this; + } - Vector3 subtract(Vector3 end); + public Vector3 subtract(Vector3 end) { + x -= end.getX(); + y -= end.getY(); + z -= end.getZ(); + return this; + } - Vector3 clone(); + /** + * Returns a hash code for this vector + * + * @return hash code + */ + @Override + public int hashCode() { + int hash = 7; + + hash = 79 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32)); + hash = 79 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32)); + hash = 79 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32)); + return hash; + } + + /** + * Checks to see if two objects are equal. + *

+ * Only two Vectors can ever return true. This method uses a fuzzy match + * to account for floating point errors. The epsilon can be retrieved + * with epsilon. + */ + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Vector3)) return false; + Vector3 other = (Vector3) obj; + return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); + } + + @Override + public String toString() { + return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index f50ac27f5..bb8b8d148 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import java.util.List; import java.util.Random; @@ -41,7 +40,7 @@ public class GridSpawn { } } Vector3 shortest = zones.get(0); - Vector3 compare = new Vector3Impl(x, 0, z); + Vector3 compare = new Vector3(x, 0, z); for(Vector3 v : zones) { if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone(); } @@ -62,7 +61,7 @@ public class GridSpawn { int offsetZ = r.nextInt(width); int sx = structureChunkX * (width + 2 * separation) + offsetX; int sz = structureChunkZ * (width + 2 * separation) + offsetZ; - return new Vector3Impl(sx, 0, sz); + return new Vector3(sx, 0, sz); } public int getWidth() { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index dbf99be14..bb52791e1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -11,8 +11,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -40,7 +40,7 @@ public abstract class AbstractBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 1eaefff4e..07ddc7bb3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -9,9 +9,9 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -41,7 +41,7 @@ public class BiomeFunction implements Function { BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); - return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); + return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index d4c2888d8..89709e6ee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -34,7 +34,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); + String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index a91182fe6..212623bcc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -17,7 +17,6 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -47,7 +46,7 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getWorld()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 043d3d570..683d8fdde 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; @@ -42,7 +42,7 @@ public class EntityFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3Impl(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); + arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index e678793f8..764127093 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -31,7 +31,7 @@ public class GetMarkFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return mark == null ? "" : mark; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index b61afb6f9..677cfb080 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplica import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -53,7 +53,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index f726f8434..4a7998038 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -42,7 +42,7 @@ public class PullFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); BlockState rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index 51c994181..a97212e93 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -34,7 +34,7 @@ public class SetMarkFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3Impl(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index a39eabb85..40b52f675 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -10,8 +10,8 @@ import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipu import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -37,7 +37,7 @@ public class StateFunction implements Function { Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 16a9cdae4..2b96c1fc5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -15,7 +15,6 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; @@ -72,7 +71,7 @@ public class StructureFunction implements Function { return null; } - Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); + Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java index c2ccb4be3..a41366e2d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java @@ -2,7 +2,6 @@ package com.dfsek.terra.api.world.carving; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Random; @@ -98,12 +97,12 @@ public abstract class Worm { for(int z = -zRad - 1; z <= zRad + 1; z++) { if(!(FastMath.floorDiv(origin.getBlockZ() + z, 16) == chunkZ)) continue; for(int y = -yRad - 1; y <= yRad + 1; y++) { - Vector3 position = origin.clone().add(new Vector3Impl(x, y, z)); + Vector3 position = origin.clone().add(new Vector3(x, y, z)); if(position.getY() < world.getMinHeight() || position.getY() > world.getMaxHeight()) continue; double eq = ellipseEquation(x, y, z, xRad, yRad, zRad); if(eq <= 1 && y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { - consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); + consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); } else if(eq <= 1.5) { Carver.CarvingType type = Carver.CarvingType.WALL; if(y <= -yRad - 1 + bottomCut) { @@ -111,7 +110,7 @@ public abstract class Worm { } else if(y >= yRad + 1 - topCut) { type = Carver.CarvingType.TOP; } - consumer.accept(new Vector3Impl(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); + consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index c4aebc741..49de326f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -66,7 +65,7 @@ public abstract class AsyncFeatureFinder implements Runnable { run++; toggle = !toggle; } - Vector3 finalSpawn = found ? finalizeVector(new Vector3Impl(x, 0, z)) : null; + Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; callback.accept(finalSpawn); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java index 980ddb166..4ea8dce4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -5,12 +5,12 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.carving.Worm; -import com.dfsek.terra.vector.Vector3Impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -37,7 +37,7 @@ public class CarverCache { if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); Random r = new FastRandom(seed); - Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); + Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); List points = new GlueList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index d6bf399fd..ddc2199fc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -20,7 +20,6 @@ import com.dfsek.terra.api.world.carving.Worm; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.List; @@ -156,7 +155,7 @@ public class UserDefinedCarver extends Carver { this.seed = seed; super.setTopCut(topCut); super.setBottomCut(bottomCut); - direction = new Vector3Impl((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); + direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); double[] args = {origin.getX(), origin.getY(), origin.getZ(), length, 0, seed}; setRadius(new int[] {(int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args))}); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java index 95cb792cb..38486b28a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java @@ -13,12 +13,12 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Locale; @@ -66,9 +66,9 @@ public class BiomeLocateCommand implements CommandTemplate { new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 20e1df6dd..fd06ade5f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -17,7 +17,6 @@ import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import java.util.HashMap; @@ -41,7 +40,7 @@ public class SpawnCommand implements CommandTemplate { Position dummy = new Position(0, 0); String check = new CheckFunction(main, new NumericConstant(0, dummy), new NumericConstant(0, dummy), new NumericConstant(0, dummy), dummy).apply(new TerraImplementationArguments(new StructureBuffer( - new Vector3Impl(x, y, z) + new Vector3(x, y, z) ), Rotation.NONE, new FastRandom(), player.world(), 0), new HashMap<>()); sender.sendMessage("Found: " + check); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java index da1d094d1..b89db1ddc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java @@ -13,11 +13,11 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.commands.structure.argument.StructureArgumentParser; import com.dfsek.terra.commands.structure.completer.StructureCompleter; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.population.items.TerraStructure; import java.util.Locale; @@ -64,9 +64,9 @@ public class StructureLocateCommand implements CommandTemplate { new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3Impl(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3Impl(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 2d1f7e9b9..3cd000874 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -1,11 +1,11 @@ package com.dfsek.terra.config; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -40,17 +40,10 @@ import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.Repla import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.SmoothMutatorTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; 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.config.loaders.palette.slant.SlantHolderLoader; -import com.dfsek.terra.noise.samplers.ImageSampler; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; 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.OreConfig; @@ -79,11 +72,6 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(TreeLayer.class, new TreeLayerLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(OreHolder.class, new OreHolderLoader()) - .registerLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) - .registerLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) - .registerLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) - .registerLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) - .registerLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) .registerLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) .registerLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .registerLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) @@ -97,14 +85,11 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(SourceSeeded.class, new SourceBuilderLoader()) .registerLoader(StageSeeded.class, new StageBuilderLoader()) .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) - .registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)) .registerLoader(ImageBiomeProvider.Align.class, (t, object, cf) -> ImageBiomeProvider.Align.valueOf((String) object)) .registerLoader(ExpanderStage.Type.class, (t, object, cf) -> ExpanderStage.Type.valueOf((String) object)) .registerLoader(MutatorStage.Type.class, (t, object, cf) -> MutatorStage.Type.valueOf((String) object)) - .registerLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) - .registerLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)) .registerLoader(TerraFlora.Search.class, (t, o, l) -> TerraFlora.Search.valueOf(o.toString())); if(main != null) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 994c15125..3b5b4ffe4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -11,7 +11,6 @@ import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.noise.samplers.ExpressionSampler; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.generation.WorldGenerator; import java.util.LinkedHashMap; @@ -48,7 +47,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { try { noise = new ExpressionSampler(template.getNoiseEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); - elevation = template.getElevationEquation() == null ? new ConstantSampler(0) : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); + elevation = template.getElevationEquation() == null ? NoiseSampler.zero() : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); carving = new ExpressionSampler(template.getCarvingEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); } catch(ParseException e) { throw new RuntimeException(e); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index b2213c862..20c094196 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -17,7 +17,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate> loaders = new HashMap<>(); + private final Map>> objectLoaders = new HashMap<>(); + private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Scope varScope = new Scope(); @@ -205,6 +209,18 @@ public class ConfigPackImpl implements ConfigPack { private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } + @Override + public ConfigPackImpl applyLoader(Type type, TypeLoader loader) { + loaders.put(type, loader); + return this; + } + + @SuppressWarnings("unchecked") + @Override + public ConfigPackImpl applyLoader(Type type, TemplateProvider> loader) { + objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + return this; + } protected Map, ImmutablePair, CheckedRegistry>> getRegistryMap() { return registryMap; @@ -282,6 +298,7 @@ public class ConfigPackImpl implements ConfigPack { } + @SuppressWarnings("unchecked") @Override public void register(TypeRegistry registry) { registry @@ -289,9 +306,9 @@ public class ConfigPackImpl implements ConfigPack { .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)) .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) - .registerLoader(ImageSamplerTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))) - .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class))); + .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))); + loaders.forEach(registry::registerLoader); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index d3da8aaf9..d1b767d04 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -7,8 +7,6 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import java.lang.reflect.Field; -import java.lang.reflect.Type; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index bdcd343c0..705026c69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -25,7 +25,6 @@ import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; @@ -248,7 +247,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf biomeNoise = new NoiseSeeded() { @Override public NoiseSampler apply(Long seed) { - return new ConstantSampler(0); + return NoiseSampler.zero(); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java index 46fb45c4f..e0d90a6e1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java @@ -1,62 +1,10 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.util.seeded.NoiseProvider; -import com.dfsek.terra.config.loaders.config.sampler.templates.DomainWarpTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.KernelTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.CellularNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.ConstantNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.ExpressionFunctionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.GaborNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.SimpleNoiseTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.BrownianMotionTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.PingPongTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.RidgedFractalTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate; -import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate; -import com.dfsek.terra.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.noise.samplers.noise.value.ValueSampler; import com.dfsek.terra.registry.OpenRegistryImpl; public class NoiseRegistry extends OpenRegistryImpl { public NoiseRegistry() { - add("LINEAR", LinearNormalizerTemplate::new); - add("NORMAL", NormalNormalizerTemplate::new); - add("CLAMP", ClampNormalizerTemplate::new); - add("EXPRESSION", ExpressionFunctionTemplate::new); - add("IMAGE", ImageSamplerTemplate::new); - - add("DOMAINWARP", DomainWarpTemplate::new); - - add("FBM", BrownianMotionTemplate::new); - add("PINGPONG", PingPongTemplate::new); - add("RIDGED", RidgedFractalTemplate::new); - - add("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - add("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - add("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - add("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - add("GABOR", GaborNoiseTemplate::new); - - - add("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - add("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - - add("CELLULAR", CellularNoiseTemplate::new); - - add("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - add("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - - add("CONSTANT", ConstantNoiseTemplate::new); - - add("KERNEL", KernelTemplate::new); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java index ffaae22b7..23272f48e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java @@ -144,7 +144,7 @@ public class Vector2Impl implements Vector2 { @Override public Vector3 extrude(double y) { - return new Vector3Impl(this.x, y, this.z); + return new Vector3(this.x, y, this.z); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java deleted file mode 100644 index 117a19eac..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector3Impl.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.dfsek.terra.vector; - -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -/** - * 3D Mutable Vector - */ -public class Vector3Impl implements Vector3 { - private double x; - private double y; - private double z; - - public Vector3Impl(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public double getZ() { - return z; - } - - @Override - public Vector3 setZ(double z) { - this.z = z; - return this; - } - - @Override - public double getX() { - return x; - } - - @Override - public Vector3 setX(double x) { - this.x = x; - return this; - } - - @Override - public double getY() { - return y; - } - - @Override - public Vector3 setY(double y) { - this.y = y; - return this; - } - - @Override - public int getBlockX() { - return FastMath.floorToInt(x); - } - - @Override - public int getBlockY() { - return FastMath.floorToInt(y); - } - - @Override - public int getBlockZ() { - return FastMath.floorToInt(z); - } - - @Override - public Vector3 multiply(double m) { - x *= m; - y *= m; - z *= m; - return this; - } - - @Override - public Vector3 add(double x, double y, double z) { - this.x += x; - this.y += y; - this.z += z; - return this; - } - - @Override - public Vector3 add(Vector3 other) { - this.x += other.getX(); - this.y += other.getY(); - this.z += other.getZ(); - return this; - } - - @Override - public Vector3 add(Vector2 other) { - this.x += other.getX(); - this.z += other.getZ(); - return this; - } - - @Override - public double lengthSquared() { - return x * x + y * y + z * z; - } - - @Override - public Vector3Impl clone() { - try { - return (Vector3Impl) super.clone(); - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } - - @Override - public double length() { - return FastMath.sqrt(lengthSquared()); - } - - @Override - public double inverseLength() { - return FastMath.invSqrtQuick(lengthSquared()); - } - - @Override - public boolean isNormalized() { - return MathUtil.equals(this.lengthSquared(), 1); - } - - @Override - @NotNull - public Vector3 rotateAroundX(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double y = angleCos * getY() - angleSin * getZ(); - double z = angleSin * getY() + angleCos * getZ(); - return setY(y).setZ(z); - } - - @Override - @NotNull - public Vector3 rotateAroundY(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double x = angleCos * getX() + angleSin * getZ(); - double z = -angleSin * getX() + angleCos * getZ(); - return setX(x).setZ(z); - } - - @Override - @NotNull - public Vector3 rotateAroundZ(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); - - double x = angleCos * getX() - angleSin * getY(); - double y = angleSin * getX() + angleCos * getY(); - return setX(x).setY(y); - } - - @Override - public double distance(@NotNull Vector3 o) { - return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); - } - - @Override - public double distanceSquared(@NotNull Vector3 o) { - return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); - } - - @Override - @NotNull - public Vector3 rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { - return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.clone().normalize(), angle); - } - - @Override - @NotNull - public Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { - double x = getX(), y = getY(), z = getZ(); - double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); - - double cosTheta = Math.cos(angle); - double sinTheta = Math.sin(angle); - double dotProduct = this.dot(axis); - - double xPrime = x2 * dotProduct * (1d - cosTheta) - + x * cosTheta - + (-z2 * y + y2 * z) * sinTheta; - double yPrime = y2 * dotProduct * (1d - cosTheta) - + y * cosTheta - + (z2 * x - x2 * z) * sinTheta; - double zPrime = z2 * dotProduct * (1d - cosTheta) - + z * cosTheta - + (-y2 * x + x2 * y) * sinTheta; - - return setX(xPrime).setY(yPrime).setZ(zPrime); - } - - @Override - public double dot(@NotNull Vector3 other) { - return x * other.getX() + y * other.getY() + z * other.getZ(); - } - - @Override - public Vector3 normalize() { - return this.multiply(this.inverseLength()); - } - - @Override - public Vector3 subtract(int x, int y, int z) { - this.x -= x; - this.y -= y; - this.z -= z; - return this; - } - - @Override - public Vector3 subtract(Vector3 end) { - x -= end.getX(); - y -= end.getY(); - z -= end.getZ(); - return this; - } - - /** - * Returns a hash code for this vector - * - * @return hash code - */ - @Override - public int hashCode() { - int hash = 7; - - hash = 79 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32)); - hash = 79 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32)); - hash = 79 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32)); - return hash; - } - - /** - * Checks to see if two objects are equal. - *

- * Only two Vectors can ever return true. This method uses a fuzzy match - * to account for floating point errors. The epsilon can be retrieved - * with epsilon. - */ - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Vector3)) return false; - Vector3 other = (Vector3) obj; - return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); - } - - @Override - public String toString() { - return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; - } - -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index fe850b40f..1bd6e9e33 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -24,7 +24,6 @@ import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; @@ -108,20 +107,20 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); if(paletteLevel == 0 && c.doSlabs() && y < 255) { - prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3Impl(x, y + 1, z), c.getSlabPalettes(), + prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3(x, y + 1, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; } else { if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3Impl(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); + prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); } justSet = false; paletteLevel = 0; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java index a0893afea..257dbbd32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java @@ -5,7 +5,6 @@ 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.vector.Vector3Impl; import net.jafama.FastMath; import java.util.HashMap; @@ -68,7 +67,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); + return noiseGetter.apply(generator, new Vector3(x, y, z)); } /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java index f87022f14..b7a94d51e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java @@ -5,7 +5,6 @@ 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.vector.Vector3Impl; import net.jafama.FastMath; import java.util.HashMap; @@ -83,7 +82,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3Impl(x, y, z)); + return noiseGetter.apply(generator, new Vector3(x, y, z)); } private static int reRange(int value, int high) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 55815917b..1aee7e43e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -11,7 +12,6 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.vector.Vector3Impl; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -44,7 +44,7 @@ public class OrePopulator implements TerraBlockPopulator { try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { int amount = orePair.getRight().getAmount().get(random); for(int i = 0; i < amount; i++) { - Vector3Impl location = new Vector3Impl(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); + Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); orePair.getLeft().generate(location, chunk, random); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 0e3bd8b69..6dcc68948 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -12,7 +12,6 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.ArrayList; @@ -59,7 +58,7 @@ public class TerraFlora implements Flora { @Override public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { int size = floraPalette.getSize(); - Vector3 current = new Vector3Impl(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); + Vector3 current = new Vector3(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); List blocks = new ArrayList<>(); int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index b5430ef58..a4bf774ce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.vector.Vector3Impl; import java.util.Map; import java.util.Random; @@ -26,7 +26,7 @@ public abstract class Ore { this.materials = materials; } - public abstract void generate(Vector3Impl origin, Chunk c, Random r); + public abstract void generate(Vector3 origin, Chunk c, Random r); public BlockState getMaterial(BlockType replace) { return materials.getOrDefault(replace, material); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 343b2e16a..9ef13c3f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.vector.Vector3Impl; import net.jafama.FastMath; import java.util.Map; @@ -22,7 +22,7 @@ public class VanillaOre extends Ore { } @Override - public void generate(Vector3Impl location, Chunk chunk, Random random) { + public void generate(Vector3 location, Chunk chunk, Random random) { double size = sizeRange.get(random); int centerX = location.getBlockX(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index b4c5458f1..be5f9d809 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; public class BukkitPlayer implements Player { @@ -22,7 +21,7 @@ public class BukkitPlayer implements Player { @Override public Vector3 position() { org.bukkit.Location bukkit = delegate.getLocation(); - return new Vector3Impl(bukkit.getX(), bukkit.getY(), bukkit.getZ()); + return new Vector3(bukkit.getX(), bukkit.getY(), bukkit.getZ()); } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 2e9e56904..5aed5e708 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -54,7 +53,7 @@ public class CommonListener implements Listener { block.setType(Material.AIR); Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies())); org.bukkit.Location location = e.getLocation(); - if(!tree.plant(new Vector3Impl(location.getX(), location.getY(), location.getZ()), BukkitAdapter.adapt(e.getWorld()), new FastRandom())) + if(!tree.plant(new Vector3(location.getX(), location.getY(), location.getZ()), BukkitAdapter.adapt(e.getWorld()), new FastRandom())) block.setBlockData(data); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 0fd3dfd60..3cc786e3e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -22,7 +22,6 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; -import com.dfsek.terra.vector.Vector3Impl; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; @@ -185,7 +184,7 @@ public final class BukkitAdapter { } public static Vector3 adapt(Location location) { - return new Vector3Impl(location.getX(), location.getY(), location.getZ()); + return new Vector3(location.getX(), location.getY(), location.getZ()); } public static Vector adapt(Vector3 vector3) { @@ -193,7 +192,7 @@ public final class BukkitAdapter { } public static Vector3 adapt(Vector vector) { - return new Vector3Impl(vector.getX(), vector.getY(), vector.getZ()); + return new Vector3(vector.getX(), vector.getY(), vector.getZ()); } public static CommandSender adapt(org.bukkit.command.CommandSender sender) { 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 515f2398d..20e6d064f 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 @@ -1,8 +1,11 @@ package com.dfsek.terra.fabric; +import com.dfsek.tectonic.abstraction.TemplateProvider; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; @@ -77,8 +80,13 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Supplier; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @@ -88,6 +96,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private static TerraFabricPlugin instance; private final Map> worldMap = new HashMap<>(); + private final Map> loaders = new HashMap<>(); + private final Map>> objectLoaders = new HashMap<>(); + public Map> getWorldMap() { return worldMap; } @@ -231,6 +242,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return debugLogger; } + @SuppressWarnings("unchecked") @Override public void register(TypeRegistry registry) { genericLoaders.register(registry); @@ -242,6 +254,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(identifier == null) throw new LoadException("Invalid identifier: " + o); return identifier; }); + loaders.forEach(registry::registerLoader); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } @Override @@ -290,6 +304,19 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return profiler; } + @Override + public TerraFabricPlugin applyLoader(Type type, TypeLoader loader) { + loaders.put(type, loader); + return this; + } + + @SuppressWarnings("unchecked") + @Override + public TerraFabricPlugin applyLoader(Type type, TemplateProvider> loader) { + objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + return this; + } + @Addon("Terra-Fabric") @Author("Terra") @Version("1.0.0") diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index c64720750..71a134203 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.block.state.properties.enums.WallHeight; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.vector.Vector3Impl; import net.minecraft.block.BlockState; import net.minecraft.block.enums.BlockHalf; import net.minecraft.block.enums.WallShape; @@ -21,7 +20,7 @@ public final class FabricAdapter { } public static Vector3 adapt(BlockPos pos) { - return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ()); + return new Vector3(pos.getX(), pos.getY(), pos.getZ()); } public static FabricBlockState adapt(BlockState state) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 1434d77ef..366af238e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.util; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector3Impl; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.math.BlockVector3; @@ -20,8 +19,8 @@ public final class WorldEditUtil { .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world())); BlockVector3 min = selection.getMinimumPoint(); BlockVector3 max = selection.getMaximumPoint(); - Vector3 l1 = new Vector3Impl(min.getBlockX(), min.getBlockY(), min.getBlockZ()); - Vector3 l2 = new Vector3Impl(max.getBlockX(), max.getBlockY(), max.getBlockZ()); + Vector3 l1 = new Vector3(min.getBlockX(), min.getBlockY(), min.getBlockZ()); + Vector3 l2 = new Vector3(max.getBlockX(), max.getBlockY(), max.getBlockZ()); return Pair.of(l1, l2); } catch(IncompleteRegionException e) { throw new IllegalStateException("No selection has been made", e); From 445bf3d0532362d82b96e451ea043262939cc407 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 30 Jun 2021 10:47:51 -0700 Subject: [PATCH 0083/1529] refactor Vector2 --- .../noise/samplers/noise/CellularSampler.java | 4 +- .../com/dfsek/terra/api/vector/Vector2.java | 134 ++++++++++++--- .../functions/AbstractBlockFunction.java | 3 +- .../script/functions/BiomeFunction.java | 3 +- .../script/functions/CheckBlockFunction.java | 3 +- .../script/functions/CheckFunction.java | 3 +- .../script/functions/EntityFunction.java | 3 +- .../script/functions/GetMarkFunction.java | 3 +- .../script/functions/LootFunction.java | 3 +- .../script/functions/PullFunction.java | 3 +- .../script/functions/SetMarkFunction.java | 3 +- .../script/functions/StateFunction.java | 3 +- .../script/functions/StructureFunction.java | 3 +- .../biome/pipeline/BiomePipelineImpl.java | 4 +- .../biome/provider/StandardBiomeProvider.java | 3 +- .../com/dfsek/terra/vector/Vector2Impl.java | 154 ------------------ .../world/population/FloraPopulator.java | 3 +- .../terra/world/population/TreePopulator.java | 4 +- 18 files changed, 133 insertions(+), 206 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index e4741d2d4..ea447dfb4 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -4,8 +4,6 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.vector.Vector2Impl; -import com.dfsek.terra.vector.Vector3Impl; /** * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. @@ -231,7 +229,7 @@ public class CellularSampler extends NoiseFunction { int xPrimed = (xr - 1) * PRIME_X; int yPrimedBase = (yr - 1) * PRIME_Y; - Vector2 center = new Vector2Impl(x, y); + Vector2 center = new Vector2(x, y); switch(distanceFunction) { default: diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java index 6af588f05..c7a10706b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -1,28 +1,61 @@ package com.dfsek.terra.api.vector; +import com.dfsek.terra.api.util.MathUtil; +import net.jafama.FastMath; + /** * oh yeah */ -public interface Vector2 extends Cloneable { +public class Vector2 implements Cloneable { + private double x; + private double z; + + /** + * Create a vector with a given X and Z component + * + * @param x X component + * @param z Z component + */ + public Vector2(double x, double z) { + this.x = x; + this.z = z; + } + /** * Get X component * * @return X component */ - double getX(); + public double getX() { + return x; + } - Vector2 clone(); + public Vector2 clone() { + try { + return (Vector2) super.clone(); + } catch(CloneNotSupportedException e) { + throw new Error(e); + } + } - Vector2 setX(double x); + public Vector2 setX(double x) { + this.x = x; + return this; + } /** * Get Z component * * @return Z component */ - double getZ(); + public double getZ() { + return z; + } - Vector2 setZ(double z); + public Vector2 setZ(double z) { + this.z = z; + return this; + } /** * Multiply X and Z components by a value. @@ -30,7 +63,11 @@ public interface Vector2 extends Cloneable { * @param m Value to multiply * @return Mutated vector, for chaining. */ - Vector2 multiply(double m); + public Vector2 multiply(double m) { + x *= m; + z *= m; + return this; + } /** * Add this vector to another. @@ -38,7 +75,11 @@ public interface Vector2 extends Cloneable { * @param other Vector to add * @return Mutated vector, for chaining. */ - Vector2 add(Vector2 other); + public Vector2 add(Vector2 other) { + x += other.getX(); + z += other.getZ(); + return this; + } /** * Subtract a vector from this vector, @@ -46,14 +87,21 @@ public interface Vector2 extends Cloneable { * @param other Vector to subtract * @return Mutated vector, for chaining. */ - Vector2 subtract(Vector2 other); + public Vector2 subtract(Vector2 other) { + x -= other.getX(); + z -= other.getZ(); + return this; + } /** * Normalize this vector to length 1 * * @return Mutated vector, for chaining. */ - Vector2 normalize(); + public Vector2 normalize() { + divide(length()); + return this; + } /** * Divide X and Z components by a value. @@ -61,21 +109,31 @@ public interface Vector2 extends Cloneable { * @param d Divisor * @return Mutated vector, for chaining. */ - Vector2 divide(double d); + public Vector2 divide(double d) { + x /= d; + z /= d; + return this; + } /** * Get the length of this Vector * * @return length */ - double length(); + public double length() { + return FastMath.sqrt(lengthSquared()); + } + /** * Get the squared length of this Vector * * @return squared length */ - double lengthSquared(); + public double lengthSquared() { + return x * x + z * z; + } + /** * Get the distance from this vector to another. @@ -83,7 +141,10 @@ public interface Vector2 extends Cloneable { * @param other Another vector * @return Distance between vectors */ - double distance(Vector2 other); + public double distance(Vector2 other) { + return FastMath.sqrt(distanceSquared(other)); + } + /** * Get the squared distance between 2 vectors. @@ -91,13 +152,48 @@ public interface Vector2 extends Cloneable { * @param other Another vector * @return Squared distance */ - double distanceSquared(Vector2 other); + public double distanceSquared(Vector2 other) { + double dx = other.getX() - x; + double dz = other.getZ() - z; + return dx * dx + dz * dz; + } - Vector2 add(double x, double z); - int getBlockX(); + public Vector3 extrude(double y) { + return new Vector3(this.x, y, this.z); + } - int getBlockZ(); - Vector3 extrude(double y); + @Override + public int hashCode() { + int hash = 17; + hash = 31 * hash + Double.hashCode(x); + hash = 31 * hash + Double.hashCode(z); + return hash; + } + + public boolean equals(Object obj) { + if(!(obj instanceof Vector2)) return false; + Vector2 other = (Vector2) obj; + return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z); + } + + public Vector2 add(double x, double z) { + this.x += x; + this.z += z; + return this; + } + + public int getBlockX() { + return FastMath.floorToInt(x); + } + + public int getBlockZ() { + return FastMath.floorToInt(z); + } + + @Override + public String toString() { + return "(" + x + ", " + z + ")"; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java index bb52791e1..beb89ecbe 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java @@ -12,7 +12,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -35,7 +34,7 @@ public abstract class AbstractBlockFunction implements Function { } void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index 07ddc7bb3..b87db6b39 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -11,7 +11,6 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -35,7 +34,7 @@ public class BiomeFunction implements Function { public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 89709e6ee..942b8c580 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -30,7 +29,7 @@ public class CheckBlockFunction implements Function { public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index 212623bcc..81e9fc6e3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -16,7 +16,6 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -42,7 +41,7 @@ public class CheckFunction implements Function { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java index 683d8fdde..acc1305af 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java @@ -14,7 +14,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import java.util.Map; @@ -38,7 +37,7 @@ public class EntityFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java index 764127093..d058765a3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -28,7 +27,7 @@ public class GetMarkFunction implements Function { @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index 677cfb080..e78284d96 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -14,7 +14,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -41,7 +40,7 @@ public class LootFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java index 4a7998038..bfe835414 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java @@ -14,7 +14,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -37,7 +36,7 @@ public class PullFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); BlockState rot = data.clone(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java index a97212e93..3a61beec4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -30,7 +29,7 @@ public class SetMarkFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java index 40b52f675..37b644e9e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java @@ -11,7 +11,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.Map; @@ -34,7 +33,7 @@ public class StateFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java index 2b96c1fc5..6f455772f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java @@ -14,7 +14,6 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.vector.Vector2Impl; import net.jafama.FastMath; import java.util.List; @@ -51,7 +50,7 @@ public class StructureFunction implements Function { if(arguments.getRecursions() > main.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - Vector2 xz = new Vector2Impl(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java index ff46cfef6..a33c5e70b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java @@ -2,10 +2,10 @@ package com.dfsek.terra.api.world.biome.pipeline; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; -import com.dfsek.terra.vector.Vector2Impl; import java.util.List; import java.util.stream.Collectors; @@ -31,7 +31,7 @@ public class BiomePipelineImpl { * @return BiomeHolder containing biomes. */ public BiomeHolder getBiomes(int x, int z) { - BiomeHolder holder = new BiomeHolderImpl(init, new Vector2Impl(x * (init - 1), z * (init - 1))); + BiomeHolder holder = new BiomeHolderImpl(init, new Vector2(x * (init - 1), z * (init - 1))); holder.fill(source); for(Stage stage : stages) holder = stage.apply(holder); return holder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java index ee1578732..221ec6910 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; -import com.dfsek.terra.vector.Vector2Impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -52,6 +51,6 @@ public class StandardBiomeProvider implements BiomeProvider { int fdX = FastMath.floorDiv(x, pipeline.getSize()); int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.getUnchecked(new Vector2Impl(fdX, fdZ)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); + return holderCache.getUnchecked(new Vector2(fdX, fdZ)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java b/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java deleted file mode 100644 index 23272f48e..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/vector/Vector2Impl.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.dfsek.terra.vector; - -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; - -/** - * oh yeah - */ -public class Vector2Impl implements Vector2 { - private double x; - private double z; - - /** - * Create a vector with a given X and Z component - * - * @param x X component - * @param z Z component - */ - public Vector2Impl(double x, double z) { - this.x = x; - this.z = z; - } - - @Override - public double getX() { - return x; - } - - @Override - public Vector2 setX(double x) { - this.x = x; - return this; - } - - @Override - public double getZ() { - return z; - } - - @Override - public Vector2 setZ(double z) { - this.z = z; - return this; - } - - @Override - public Vector2 multiply(double m) { - x *= m; - z *= m; - return this; - } - - @Override - public Vector2 add(Vector2 other) { - x += other.getX(); - z += other.getZ(); - return this; - } - - @Override - public Vector2 subtract(Vector2 other) { - x -= other.getX(); - z -= other.getZ(); - return this; - } - - @Override - public Vector2 normalize() { - divide(length()); - return this; - } - - @Override - public Vector2 divide(double d) { - x /= d; - z /= d; - return this; - } - - @Override - public double length() { - return FastMath.sqrt(lengthSquared()); - } - - @Override - public double lengthSquared() { - return x * x + z * z; - } - - @Override - public double distance(Vector2 other) { - return FastMath.sqrt(distanceSquared(other)); - } - - @Override - public double distanceSquared(Vector2 other) { - double dx = other.getX() - x; - double dz = other.getZ() - z; - return dx * dx + dz * dz; - } - - @Override - public int hashCode() { - int hash = 17; - hash = 31 * hash + Double.hashCode(x); - hash = 31 * hash + Double.hashCode(z); - return hash; - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Vector2Impl)) return false; - Vector2Impl other = (Vector2Impl) obj; - return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z); - } - - @Override - public Vector2 clone() { - try { - return (Vector2) super.clone(); - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } - - @Override - public Vector2 add(double x, double z) { - this.x += x; - this.z += z; - return this; - } - - @Override - public int getBlockX() { - return FastMath.floorToInt(x); - } - - @Override - public int getBlockZ() { - return FastMath.floorToInt(z); - } - - @Override - public Vector3 extrude(double y) { - return new Vector3(this.x, y, this.z); - } - - @Override - public String toString() { - return "(" + x + ", " + z + ")"; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index 6019f410a..53635cedc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -10,7 +10,6 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; @@ -42,7 +41,7 @@ public class FloraPopulator implements TerraBlockPopulator { for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); - Vector2 l = new Vector2Impl(x, z); + Vector2 l = new Vector2(x, z); layers.put(l, biome.getConfig().getFlora()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index 5b80a14e8..6edb0f308 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -3,13 +3,13 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -43,7 +43,7 @@ public class TreePopulator implements TerraBlockPopulator { UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); for(TreeLayer layer : biome.getConfig().getTrees()) { if(layer.getDensity() >= random.nextDouble() * 100) { - layer.place(chunk, new Vector2Impl(offset(random, x), offset(random, z))); + layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); } } } From f4873f7569c6b8ca392beaa20bfd33dd9a17f247 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 30 Jun 2021 10:48:51 -0700 Subject: [PATCH 0084/1529] noise addon compiles now --- .../terra/addons/noise/samplers/ExpressionSampler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java index 38f126c8e..a50d1fd9a 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java @@ -4,12 +4,12 @@ import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; +import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; +import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import java.util.Map; From 8a000137a298e7eeb176d325be2117129afe9642 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 30 Jun 2021 12:30:44 -0700 Subject: [PATCH 0085/1529] more addon modules --- common/addons/biome/config/build.gradle.kts | 59 +++++++++++++++++++ .../biome/provider/image/build.gradle.kts | 59 +++++++++++++++++++ .../biome/provider/pipeline/build.gradle.kts | 59 +++++++++++++++++++ .../biome/provider/single/build.gradle.kts | 59 +++++++++++++++++++ common/addons/carver/build.gradle.kts | 59 +++++++++++++++++++ common/addons/flora/build.gradle.kts | 59 +++++++++++++++++++ common/addons/palette/build.gradle.kts | 59 +++++++++++++++++++ settings.gradle.kts | 11 ++++ 8 files changed, 424 insertions(+) create mode 100644 common/addons/biome/config/build.gradle.kts create mode 100644 common/addons/biome/provider/image/build.gradle.kts create mode 100644 common/addons/biome/provider/pipeline/build.gradle.kts create mode 100644 common/addons/biome/provider/single/build.gradle.kts create mode 100644 common/addons/carver/build.gradle.kts create mode 100644 common/addons/flora/build.gradle.kts create mode 100644 common/addons/palette/build.gradle.kts diff --git a/common/addons/biome/config/build.gradle.kts b/common/addons/biome/config/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/biome/config/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/biome/provider/image/build.gradle.kts b/common/addons/biome/provider/image/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/biome/provider/image/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/biome/provider/pipeline/build.gradle.kts b/common/addons/biome/provider/pipeline/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/biome/provider/pipeline/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/biome/provider/single/build.gradle.kts b/common/addons/biome/provider/single/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/biome/provider/single/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/carver/build.gradle.kts b/common/addons/carver/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/carver/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/flora/build.gradle.kts b/common/addons/flora/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/flora/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/palette/build.gradle.kts b/common/addons/palette/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/palette/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 711183be2..a79a75c09 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,8 +14,19 @@ include("common:implementation") include("common:loader:config") include("common:loader:addon") + include("common:addons:noise") +include("common:addons:biome:config") +include("common:addons:biome:provider:pipeline") +include("common:addons:biome:provider:image") +include("common:addons:biome:provider:single") + +include("common:addons:carver") +include("common:addons:flora") +include("common:addons:palette") + + include("platforms:bukkit") include("platforms:fabric") From 215a1e0e86728450ad5bb56924b9a4c045ec595b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 30 Jun 2021 21:29:19 -0700 Subject: [PATCH 0086/1529] more addonification progress --- common/addons/biome/config/build.gradle.kts | 1 + .../com/dfsek/terra/api/config/ConfigPack.java | 5 +++-- .../terra/api/registry/meta/RegistryHolder.java | 10 ++++++++++ .../dfsek/terra/config/pack/ConfigPackImpl.java | 15 +++++++-------- 4 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java diff --git a/common/addons/biome/config/build.gradle.kts b/common/addons/biome/config/build.gradle.kts index d6f23e57a..4b0339e03 100644 --- a/common/addons/biome/config/build.gradle.kts +++ b/common/addons/biome/config/build.gradle.kts @@ -14,6 +14,7 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:addons:noise")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.4") 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 0c4691c98..f3fbf4f88 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.addon.TerraAddon; @@ -10,14 +11,14 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.Map; import java.util.Set; -public interface ConfigPack extends LoaderRegistrar, LoaderHolder { +public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { CheckedRegistry getRegistry(Class clazz); BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); WorldConfig toWorldConfig(TerraWorld world); - CheckedRegistry> getConfigTypeRegistry(); + void registerConfigType(ConfigType type, int priority); Set addons(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java new file mode 100644 index 000000000..dcad668f1 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.registry.meta; + +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; + +public interface RegistryHolder { + Registry getRegistry(Class clazz); + + CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException; +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index d3001134b..52929642c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -292,6 +292,11 @@ public class ConfigPackImpl implements ConfigPack { return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); } + @Override + public CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { + return null; + } + @SuppressWarnings("unchecked") protected OpenRegistry getOpenRegistry(Class clazz) { return (OpenRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getLeft(); @@ -323,14 +328,8 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public CheckedRegistry> getConfigTypeRegistry() { - return new CheckedRegistryImpl<>(configTypeRegistry) { - @Override - @SuppressWarnings("deprecation") - public void addUnchecked(String identifier, ConfigType value) { - if(contains(identifier)) throw new UnsupportedOperationException("Cannot override values in ConfigTypeRegistry!"); - } - }; + public void registerConfigType(ConfigType type, int priority) { + } @Override From 62520af8e7be8abe09a15869063d31873645dc80 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 07:44:30 -0700 Subject: [PATCH 0087/1529] move more things to new modules --- .../terra/addons/biome/BiomeFactory.java | 19 +++++ .../terra/addons/biome}/BiomeTemplate.java | 76 ++++--------------- .../terra/addons}/biome/UserDefinedBiome.java | 5 +- .../biome}/UserDefinedBiomeBuilder.java | 21 ++--- .../terra/addons/biome}/WorldGenerator.java | 6 +- .../addons/biome}/holder/PaletteHolder.java | 2 +- .../biome}/holder/PaletteHolderBuilder.java | 2 +- .../biome}/holder/PaletteLayerHolder.java | 2 +- .../addons/biome}/slant/SlantHolder.java | 4 +- .../biome/image}/ImageBiomeProvider.java | 2 +- .../biome/image}/ImageProviderTemplate.java | 5 +- .../biome/pipeline/BiomeHolderImpl.java | 8 +- .../biome/pipeline/BiomePipelineImpl.java | 9 ++- .../pipeline}/StandardBiomeProvider.java | 2 +- .../biome/pipeline/api}/BiomeExpander.java | 2 +- .../biome/pipeline/api}/BiomeHolder.java | 3 +- .../biome/pipeline/api}/BiomeMutator.java | 2 +- .../addons/biome/pipeline/api}/Stage.java | 2 +- .../config}/BiomePipelineTemplate.java | 4 +- .../pipeline/config}/stage/StageTemplate.java | 4 +- .../stage/expander/ExpanderStageTemplate.java | 13 ++++ .../mutator/BorderListMutatorTemplate.java | 8 +- .../stage/mutator/BorderMutatorTemplate.java | 8 +- .../stage/mutator/MutatorStageTemplate.java | 15 ++++ .../mutator/ReplaceListMutatorTemplate.java | 8 +- .../stage/mutator/ReplaceMutatorTemplate.java | 8 +- .../stage/mutator/SmoothMutatorTemplate.java | 11 +++ .../pipeline/expand/FractalExpander.java | 4 +- .../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/RandomSource.java | 2 +- .../biome/pipeline/stages/ExpanderStage.java | 8 +- .../biome/pipeline/stages/MutatorStage.java | 8 +- .../biome/single}/SingleBiomeProvider.java | 2 +- .../single}/SingleBiomeProviderTemplate.java | 5 +- .../terra/addons/carver}/CarverCache.java | 2 +- .../terra/addons/carver}/CarverFactory.java | 5 +- .../terra/addons/carver}/CarverPalette.java | 2 +- .../terra/addons/carver}/CarverTemplate.java | 6 +- .../terra/addons/carver}/CavePopulator.java | 3 +- .../addons/carver}/UserDefinedCarver.java | 3 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 5 +- .../api/config/AbstractableTemplate.java | 7 ++ .../terra/api/config}/ConfigFactory.java | 2 +- .../api/structure/ConfiguredStructure.java | 12 +++ .../terra/api/structure/StructureSpawn.java | 15 ++++ .../terra/api/util/seeded}/BiomeBuilder.java | 6 +- .../terra/api/util/seeded/NoiseSeeded.java | 14 ++++ .../com/dfsek/terra/api/math/GridSpawn.java | 11 +-- .../world/locate/AsyncStructureFinder.java | 8 +- .../commands/biome/BiomeInfoCommand.java | 3 +- .../argument/StructureArgumentParser.java | 5 +- .../dfsek/terra/config/GenericLoaders.java | 16 ++-- .../config/builder/GeneratorBuilder.java | 0 .../terra/config/factories/BiomeFactory.java | 20 ----- .../terra/config/factories/FloraFactory.java | 1 + .../terra/config/factories/OreFactory.java | 1 + .../config/factories/PaletteFactory.java | 1 + .../config/factories/StructureFactory.java | 6 +- .../terra/config/factories/TreeFactory.java | 1 + .../loaders/config/GridSpawnLoader.java | 5 +- .../config/biome/StageBuilderLoader.java | 16 ++-- .../provider/BiomeProviderTemplate.java | 12 +-- .../templates/source/NoiseSourceTemplate.java | 4 +- .../stage/expander/ExpanderStageTemplate.java | 13 ---- .../stage/mutator/MutatorStageTemplate.java | 15 ---- .../stage/mutator/SmoothMutatorTemplate.java | 11 --- .../terra/config/pack/ConfigPackImpl.java | 5 +- .../terra/config/pack/WorldConfigImpl.java | 5 +- .../templates/AbstractableTemplate.java | 7 -- .../terra/config/templates/FloraTemplate.java | 3 +- .../terra/config/templates/OreTemplate.java | 3 +- .../config/templates/PaletteTemplate.java | 3 +- .../config/templates/StructureTemplate.java | 9 ++- .../terra/config/templates/TreeTemplate.java | 3 +- .../terra/registry/config/BiomeRegistry.java | 2 +- .../registry/config/ConfigTypeRegistry.java | 6 +- .../world/population/StructurePopulator.java | 3 +- .../population/items/TerraStructure.java | 14 ++-- .../terra/bukkit/listeners/PaperListener.java | 3 +- .../bukkit/listeners/SpigotListener.java | 3 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 6 +- .../config/PostLoadCompatibilityOptions.java | 2 +- .../FabricChunkGeneratorWrapper.java | 3 +- .../dfsek/terra/fabric/util/FabricUtil.java | 2 +- 88 files changed, 300 insertions(+), 313 deletions(-) create mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/BiomeTemplate.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/config/src/main/java/com/dfsek/terra/addons}/biome/UserDefinedBiome.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra/config/builder => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/UserDefinedBiomeBuilder.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/world/generation => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/WorldGenerator.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/palette => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/holder/PaletteHolder.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/palette => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/holder/PaletteHolderBuilder.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/palette => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/holder/PaletteLayerHolder.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/palette => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/slant/SlantHolder.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/provider => addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image}/ImageBiomeProvider.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider => addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image}/ImageProviderTemplate.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/BiomeHolderImpl.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/BiomePipelineImpl.java (88%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/provider => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline}/StandardBiomeProvider.java (97%) rename common/{api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api}/BiomeExpander.java (72%) rename common/{api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api}/BiomeHolder.java (70%) rename common/{api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api}/BiomeMutator.java (90%) rename common/{api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api}/Stage.java (61%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/BiomePipelineTemplate.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/stage/StageTemplate.java (78%) create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/stage/mutator/BorderListMutatorTemplate.java (79%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/stage/mutator/BorderMutatorTemplate.java (66%) create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/stage/mutator/ReplaceListMutatorTemplate.java (78%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/stage/mutator/ReplaceMutatorTemplate.java (64%) create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/expand/FractalExpander.java (79%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/mutator/BorderListMutator.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/mutator/BorderMutator.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/mutator/ReplaceListMutator.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/mutator/ReplaceMutator.java (87%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/mutator/SmoothMutator.java (88%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/source/RandomSource.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/stages/ExpanderStage.java (60%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons}/biome/pipeline/stages/MutatorStage.java (63%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/biome/provider => addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single}/SingleBiomeProvider.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider => addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single}/SingleBiomeProviderTemplate.java (68%) rename common/{implementation/src/main/java/com/dfsek/terra/carving => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/CarverCache.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/CarverFactory.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/carving => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/CarverPalette.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/CarverTemplate.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/CavePopulator.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/carving => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/UserDefinedCarver.java (98%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => api/src/main/java/com/dfsek/terra/api/config}/ConfigFactory.java (86%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java rename common/{implementation/src/main/java/com/dfsek/terra/config/builder => api/src/main/java/com/dfsek/terra/api/util/seeded}/BiomeBuilder.java (60%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java new file mode 100644 index 000000000..952ffc7d8 --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.biome; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; + +public class BiomeFactory implements ConfigFactory { + private final ConfigPack pack; + + public BiomeFactory(ConfigPack pack) { + this.pack = pack; + } + + @Override + public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) { + return new UserDefinedBiomeBuilder(template, pack); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 705026c69..e4a08b528 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; @@ -8,39 +8,36 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.terra.addons.biome.holder.PaletteHolder; +import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.math.paralithic.BlankFunction; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.PaletteImpl; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; -import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @SuppressWarnings({"FieldMayBeFinal", "unused"}) -public class BiomeTemplate extends AbstractableTemplate implements ValidatedConfigTemplate { - private final ConfigPackImpl pack; +public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTemplate { + private final ConfigPack pack; @Value("id") private String id; @@ -54,15 +51,10 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Default private Map variables = new HashMap<>(); - @Value("functions") - @Default - @Abstractable - private LinkedHashMap functions = new LinkedHashMap<>(); - @Value("beta.carving.equation") @Abstractable @Default - private String carvingEquation = "0"; + private NoiseSeeded carvingEquation = NoiseSeeded.zero(2); @Value("palette") @Abstractable @@ -80,7 +72,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("biome-noise") @Default @Abstractable - private NoiseSeeded biomeNoise; + private NoiseSeeded biomeNoise = NoiseSeeded.zero(2); @Value("blend.distance") @Abstractable @@ -97,19 +89,14 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Default private int blendStep = 4; - @Value("erode") - @Abstractable - @Default - private String erode = null; - @Value("structures") @Abstractable @Default - private List structures = new GlueList<>(); + private List structures = new ArrayList<>(); - @Value("noise-equation") + @Value("noise") @Abstractable - private String noiseEquation; + private NoiseSeeded noiseEquation; @Value("ores") @Abstractable @@ -123,7 +110,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("ocean.palette") @Abstractable - @Default private Palette oceanPalette; @Value("elevation.equation") @@ -206,10 +192,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return carvers; } - public Map getFunctions() { - return functions; - } - public double getBlendWeight() { return blendWeight; } @@ -242,20 +224,8 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return doSlabs; } - public BiomeTemplate(ConfigPackImpl pack, TerraPlugin main) { + public BiomeTemplate(ConfigPack pack, TerraPlugin main) { this.pack = pack; - biomeNoise = new NoiseSeeded() { - @Override - public NoiseSampler apply(Long seed) { - return NoiseSampler.zero(); - } - - @Override - public int getDimensions() { - return 2; - } - }; - oceanPalette = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:water")); } public Map getSlabPalettes() { @@ -306,15 +276,11 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return vanilla; } - public String getErode() { - return erode; - } - - public List getStructures() { + public List getStructures() { return structures; } - public String getNoiseEquation() { + public NoiseSeeded getNoiseEquation() { return noiseEquation; } @@ -349,16 +315,6 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions - Map testFunctions = new LinkedHashMap<>(pack.getTemplate().getFunctions()); - testFunctions.putAll(functions); - for(Map.Entry entry : testFunctions.entrySet()) { - try { - tester.registerFunction(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), tester, testScope)); - } catch(ParseException e) { - throw new ValidationException("Invalid function: ", e); - } - } - try { tester.parse(noiseEquation, testScope); } catch(ParseException e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index 12b63a405..ec568c676 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -1,7 +1,10 @@ -package com.dfsek.terra.api.world.biome; +package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.generation.WorldGenerator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index 3b5b4ffe4..4c585e300 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -1,9 +1,11 @@ -package com.dfsek.terra.config.builder; +package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; @@ -19,11 +21,11 @@ import java.util.concurrent.ConcurrentHashMap; public class UserDefinedBiomeBuilder implements BiomeBuilder { private final BiomeTemplate template; - private final ConfigPackImpl pack; + private final ConfigPack pack; private final Map biomeMap = new ConcurrentHashMap<>(); - public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPackImpl pack) { + public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPack pack) { this.template = template; this.pack = pack; } @@ -41,14 +43,12 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { template.getVariables().forEach(varScope::create); Map noiseBuilderMap = pack.getTemplate().getNoiseBuilderMap(); - Map functionTemplateMap = new LinkedHashMap<>(pack.getTemplate().getFunctions()); - functionTemplateMap.putAll(template.getFunctions()); try { - noise = new ExpressionSampler(template.getNoiseEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); - elevation = template.getElevationEquation() == null ? NoiseSampler.zero() : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); - carving = new ExpressionSampler(template.getCarvingEquation(), varScope, seed, noiseBuilderMap, functionTemplateMap); + noise = new ExpressionSampler(template.getNoiseEquation(), varScope, seed, noiseBuilderMap); + elevation = template.getElevationEquation() == null ? NoiseSampler.zero() : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap); + carving = new ExpressionSampler(template.getCarvingEquation(), varScope, seed, noiseBuilderMap); } catch(ParseException e) { throw new RuntimeException(e); } @@ -65,9 +65,4 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { public ProbabilityCollection getVanillaBiomes() { return template.getVanilla(); } - - @Override - public BiomeTemplate getTemplate() { - return template; - } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java index e6ec7c402..7240c24d1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/WorldGenerator.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.world.generation; +package com.dfsek.terra.addons.biome; +import com.dfsek.terra.addons.biome.holder.PaletteHolder; +import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; -import com.dfsek.terra.api.world.palette.slant.SlantHolder; public class WorldGenerator implements Generator { @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java index 64231d6d3..7b0a76b01 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.palette.holder; +package com.dfsek.terra.addons.biome.holder; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java index b00c74e77..c98622318 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.palette.holder; +package com.dfsek.terra.addons.biome.holder; import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java index a5b698b1b..4c7d068df 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.palette.holder; +package com.dfsek.terra.addons.biome.holder; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java index 8adec8761..f893b76e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/slant/SlantHolder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.world.palette.slant; +package com.dfsek.terra.addons.biome.slant; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; +import com.dfsek.terra.addons.biome.holder.PaletteHolder; import java.util.TreeMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java rename to common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index f5e56e978..cde1bebd9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java +++ b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.provider; +package com.dfsek.terra.addons.biome.image; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java rename to common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index 0b957b2c6..878e74bb7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/ImageProviderTemplate.java +++ b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -1,10 +1,9 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.provider; +package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import java.awt.image.BufferedImage; import java.util.stream.Collectors; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java index 28a099807..7c2ba34ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolderImpl.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.world.biome.pipeline; +package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class BiomeHolderImpl implements BiomeHolder { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index a33c5e70b..ae9203a22 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -1,12 +1,13 @@ -package com.dfsek.terra.api.world.biome.pipeline; +package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.seeded.StageSeeded; import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -43,7 +44,7 @@ public class BiomePipelineImpl { public static final class BiomePipelineBuilder { private final int init; - List stages = new GlueList<>(); + List stages = new ArrayList<>(); private int expand; public BiomePipelineBuilder(int init) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java index 221ec6910..aae21832e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.provider; +package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java similarity index 72% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java index 6a4297f27..3a00706ab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeExpander.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.generation.pipeline; +package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java similarity index 70% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java index 2e3887747..8c9d9711a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeHolder.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -1,6 +1,7 @@ -package com.dfsek.terra.api.world.biome.generation.pipeline; +package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public interface BiomeHolder { BiomeHolder expand(BiomeExpander expander); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java similarity index 90% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java index d474ddb08..abb8d2258 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.generation.pipeline; +package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java similarity index 61% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java index 5d5c44aa4..64d069c11 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/Stage.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.generation.pipeline; +package com.dfsek.terra.addons.biome.pipeline.api; public interface Stage { boolean isExpansion(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 31a5f704c..0667e1914 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomePipelineTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.provider; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index d588e736f..4c4eb9d09 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.stage; +package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; 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.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java new file mode 100644 index 000000000..a99eed4cd --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; + +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; + +public class ExpanderStageTemplate extends StageTemplate { + @Override + public Stage apply(Long seed) { + return new ExpanderStage(new FractalExpander(noise.apply(seed))); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java similarity index 79% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index d2f0445ae..7e3393dee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderListMutator; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 1aed5dee0..651fff705 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; @SuppressWarnings("unused") public class BorderMutatorTemplate extends MutatorStageTemplate { diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java new file mode 100644 index 000000000..3ddd46923 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; + +public abstract class MutatorStageTemplate extends StageTemplate { + public abstract BiomeMutator build(long seed); + + @Override + public Stage apply(Long seed) { + return new MutatorStage(build(seed)); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 7758c70ec..7b8bced8d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceListMutator; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 52fe113d1..a1ea49704 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends MutatorStageTemplate { diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java new file mode 100644 index 000000000..722d0ca03 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; + +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; + +public class SmoothMutatorTemplate extends MutatorStageTemplate { + @Override + public BiomeMutator build(long seed) { + return new SmoothMutator(noise.apply(seed)); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java similarity index 79% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java index 8677cb37d..394c7cc87 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.expand; +package com.dfsek.terra.addons.biome.pipeline.expand; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; public class FractalExpander implements BiomeExpander { private final NoiseSampler sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java index 410b9cf85..dbba58b25 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java index 48b56c877..442f4627f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; public class BorderMutator implements BiomeMutator { private final String border; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java index 912abf252..6cb8405bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java index c7ef22630..55db194d8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java index 529efdfd4..be88ddf41 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.world.biome.pipeline.mutator; +package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Objects; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java index 85e7776c9..7127dc09f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.pipeline.source; +package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java similarity index 60% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java index 8d195be5e..d73726634 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.world.biome.pipeline.stages; +package com.dfsek.terra.addons.biome.pipeline.stages; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeExpander; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; public class ExpanderStage implements Stage { private final BiomeExpander expander; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java index 083e865f7..fc6a18003 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.world.biome.pipeline.stages; +package com.dfsek.terra.addons.biome.pipeline.stages; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; -import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; public class MutatorStage implements Stage { private final BiomeMutator mutator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java rename to common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 3de31fb34..136a4555c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java +++ b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.provider; +package com.dfsek.terra.addons.biome.single; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java rename to common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 7538dba0b..e66ce857a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/SingleBiomeProviderTemplate.java +++ b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -1,9 +1,8 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.provider; +package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.provider.SingleBiomeProvider; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; public class SingleBiomeProviderTemplate extends BiomeProviderTemplate { @Value("biome") diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 4ea8dce4e..662c3491b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.carving; +package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.FastRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java index 9a66fe2ff..a57ecbba5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java @@ -1,12 +1,11 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.carver; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.CarverTemplate; import java.util.Arrays; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index aadfeb2f2..8cffecd1e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.carving; +package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index 0c3b53475..bfe68724c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -1,19 +1,19 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.carver; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.carving.CarverPalette; import java.util.HashMap; import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class CarverTemplate extends AbstractableTemplate { +public class CarverTemplate implements AbstractableTemplate { @Value("id") private String id; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index fe767eb7e..69f954529 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/CavePopulator.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population; +package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; @@ -34,7 +34,6 @@ public class CavePopulator implements TerraBlockPopulator, Chunkified { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); WorldHandle handle = main.getWorldHandle(); - BlockState AIR = handle.createBlockData("minecraft:air"); try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); if(!tw.isSafe()) return; diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index ddc2199fc..5cdab774f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.carving; +package com.dfsek.terra.addons.carver; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; @@ -19,7 +19,6 @@ import com.dfsek.terra.api.world.carving.Carver; import com.dfsek.terra.api.world.carving.Worm; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.config.templates.CarverTemplate; import net.jafama.FastMath; import java.util.List; diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index e861d5814..848626b39 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -37,8 +37,6 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; - @Addon("noise") @Author("Terra") @Version("1.0.0") @@ -56,8 +54,7 @@ public class NoiseAddon extends TerraAddon { .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) - .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)) - ; + .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)); } @SuppressWarnings("deprecation") diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java new file mode 100644 index 000000000..ae0986ab8 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.config; + +import com.dfsek.tectonic.config.ConfigTemplate; + +public interface AbstractableTemplate extends ConfigTemplate { + String getID(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java rename to common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java index cf676a8d6..33baf21d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/ConfigFactory.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java new file mode 100644 index 000000000..d03d2c90d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.api.structure; + +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; + +public interface ConfiguredStructure { + ProbabilityCollection getStructure(); + + Range getSpawnStart(); + + StructureSpawn getSpawn(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java b/common/api/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java new file mode 100644 index 000000000..3270bd0a7 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.api.structure; + +import com.dfsek.terra.api.vector.Vector3; + +public interface StructureSpawn { + /** + * Get nearest spawn point + * + * @param x X coordinate + * @param z Z coordinate + * @param seed Seed for RNG + * @return Vector representing nearest spawnpoint + */ + Vector3 getNearestSpawn(int x, int z, long seed); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java similarity index 60% rename from common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java index 369ce1f68..143af4bb2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java @@ -1,13 +1,9 @@ -package com.dfsek.terra.config.builder; +package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.config.templates.BiomeTemplate; public interface BiomeBuilder extends SeededBuilder { ProbabilityCollection getVanillaBiomes(); - - BiomeTemplate getTemplate(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java index 23fedb47a..56fb983f9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java @@ -7,4 +7,18 @@ public interface NoiseSeeded extends SeededBuilder { NoiseSampler apply(Long seed); int getDimensions(); + + static NoiseSeeded zero(int dimensions) { + return new NoiseSeeded() { + @Override + public NoiseSampler apply(Long seed) { + return NoiseSampler.zero(); + } + + @Override + public int getDimensions() { + return dimensions; + } + }; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java index bb8b8d148..110330c2c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java @@ -11,7 +11,7 @@ import java.util.Random; /** * Class to procedurally determine the spawn point of an object based on a grid with padding between cells. */ -public class GridSpawn { +public class GridSpawn implements com.dfsek.terra.api.structure.StructureSpawn { private final int separation; private final int width; private final int salt; @@ -22,14 +22,7 @@ public class GridSpawn { this.salt = salt; } - /** - * Get nearest spawn point - * - * @param x X coordinate - * @param z Z coordinate - * @param seed Seed for RNG - * @return Vector representing nearest spawnpoint - */ + @Override public Vector3 getNearestSpawn(int x, int z, long seed) { int structureChunkX = x / (width + 2 * separation); int structureChunkZ = z / (width + 2 * separation); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index 770808a7d..325c9d681 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; @@ -8,15 +9,14 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Random; import java.util.function.Consumer; -public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { +public class AsyncStructureFinder extends AsyncFeatureFinder { + public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, world, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } @@ -27,7 +27,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { } @Override - public boolean isValid(int x, int z, TerraStructure target) { + public boolean isValid(int x, int z, ConfiguredStructure target) { Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java index 307cebccc..205376de8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; @@ -42,7 +43,7 @@ public class BiomeInfoCommand implements CommandTemplate { bio.getExtended().forEach(id -> sender.sendMessage(" - " + id)); } - List structureConfigs = bio.getStructures(); + List structureConfigs = bio.getStructures(); if(structureConfigs.size() == 0) { sender.sendMessage("No Structures"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java index 1216f6e05..84fb271f8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java @@ -5,14 +5,15 @@ import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.world.population.items.TerraStructure; -public class StructureArgumentParser implements ArgumentParser { +public class StructureArgumentParser implements ArgumentParser { @Inject private TerraPlugin main; @Override - public TerraStructure parse(CommandSender sender, String arg) { + public ConfiguredStructure parse(CommandSender sender, String arg) { return main.getWorld(((Player) sender).world()).getConfig().getRegistry(TerraStructure.class).get(arg); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 3cd000874..d676ccc70 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -13,8 +13,8 @@ import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; 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; @@ -33,12 +33,12 @@ import com.dfsek.terra.config.loaders.config.biome.BiomeProviderBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.SourceBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.StageBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.templates.source.NoiseSourceTemplate; -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; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.loaders.palette.CarverPaletteLoader; import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java deleted file mode 100644 index 267ec8bf4..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.config.factories; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.config.builder.UserDefinedBiomeBuilder; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.BiomeTemplate; - -public class BiomeFactory implements ConfigFactory { - private final ConfigPackImpl pack; - - public BiomeFactory(ConfigPackImpl pack) { - this.pack = pack; - } - - @Override - public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) { - return new UserDefinedBiomeBuilder(template, pack); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 4e4860122..62460a8ef 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.PaletteImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java index f5ba312dd..38ab2f742 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java @@ -2,6 +2,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.world.population.items.ores.Ore; import com.dfsek.terra.world.population.items.ores.VanillaOre; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java index 1e97f368e..78101ee76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java index 0fa25315d..d4043aff8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java @@ -1,12 +1,14 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.world.population.items.TerraStructure; -public class StructureFactory implements ConfigFactory { +public class StructureFactory implements ConfigFactory { @Override - public TerraStructure build(StructureTemplate config, TerraPlugin main) { + public ConfiguredStructure build(StructureTemplate config, TerraPlugin main) { return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn(), config); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java b/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java index f03c86d16..d14bc62a8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.factories; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.world.population.items.tree.TerraTree; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java index 493d0b0eb..a990459ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java @@ -3,14 +3,15 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.structure.StructureSpawn; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") -public class GridSpawnLoader implements TypeLoader { +public class GridSpawnLoader implements TypeLoader { @Override - public GridSpawn load(Type type, Object o, ConfigLoader configLoader) { + public StructureSpawn load(Type type, Object o, ConfigLoader configLoader) { Map map = (Map) o; return new GridSpawn(map.get("width"), map.get("padding"), map.getOrDefault("salt", 0)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java index 58c464fde..7eec745bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java @@ -4,14 +4,14 @@ 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.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; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index 20c094196..ae8b69314 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -14,17 +14,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate getStructures() { + public Set getStructures() { return new HashSet<>(getRegistry(TerraStructure.class).entries()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 8512efb2e..e8bc0fe7a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -4,11 +4,12 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.generation.math.SamplerCacheImpl; @@ -119,7 +120,7 @@ public class WorldConfigImpl implements WorldConfig { return getTemplate().isDisableSaplings(); } - public Set getStructures() { + public Set getStructures() { return new HashSet<>(getRegistry(TerraStructure.class).entries()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java deleted file mode 100644 index e243fc3ad..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.config.templates; - -import com.dfsek.tectonic.config.ConfigTemplate; - -public abstract class AbstractableTemplate implements ConfigTemplate { - public abstract String getID(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java index 8e1564e4a..be5358206 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java @@ -3,6 +3,7 @@ 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.config.AbstractableTemplate; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.world.population.items.flora.TerraFlora; @@ -10,7 +11,7 @@ import com.dfsek.terra.world.population.items.flora.TerraFlora; import java.util.List; @SuppressWarnings({"FieldMayBeFinal", "unused"}) -public class FloraTemplate extends AbstractableTemplate { +public class FloraTemplate implements AbstractableTemplate { @Value("id") private String id; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index e91f73357..a6c38265f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; @@ -12,7 +13,7 @@ import java.util.HashMap; import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class OreTemplate extends AbstractableTemplate { +public class OreTemplate implements AbstractableTemplate { @Value("id") private String id; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java index b92cbc12a..59ca3c46e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java @@ -3,6 +3,7 @@ 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.config.AbstractableTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; @@ -11,7 +12,7 @@ import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import java.util.List; @SuppressWarnings({"FieldMayBeFinal", "unused"}) -public class PaletteTemplate extends AbstractableTemplate { +public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Abstractable @Default diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 198723453..7cd31340b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -4,8 +4,9 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; @@ -13,7 +14,7 @@ import com.dfsek.terra.api.util.Range; import java.util.List; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class StructureTemplate extends AbstractableTemplate implements ConfigTemplate { +public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { @Value("id") private String id; @@ -27,7 +28,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem @Value("spawn") @Abstractable - private GridSpawn spawn; + private StructureSpawn spawn; @Value("features") @Abstractable @@ -50,7 +51,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem return features; } - public GridSpawn getSpawn() { + public StructureSpawn getSpawn() { return spawn; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 66837b818..fb3c1f4a9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -3,12 +3,13 @@ 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.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; @SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class TreeTemplate extends AbstractableTemplate { +public class TreeTemplate implements AbstractableTemplate { @Value("scripts") @Abstractable private ProbabilityCollection structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java index fb1bdd999..67205999d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java +++ b/common/implementation/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.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.registry.OpenRegistryImpl; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index cf88dba51..a75f03eae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -3,24 +3,24 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.factories.BiomeFactory; import com.dfsek.terra.config.factories.CarverFactory; -import com.dfsek.terra.config.factories.ConfigFactory; import com.dfsek.terra.config.factories.FloraFactory; import com.dfsek.terra.config.factories.OreFactory; import com.dfsek.terra.config.factories.PaletteFactory; import com.dfsek.terra.config.factories.StructureFactory; import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.config.templates.FloraTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index 11b9ddb95..e4dc0ef30 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -3,6 +3,7 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; @@ -39,7 +40,7 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); WorldConfig config = tw.getConfig(); - for(TerraStructure conf : config.getRegistry(TerraStructure.class).entries()) { + for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index 361e3710d..65993165c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -1,18 +1,19 @@ package com.dfsek.terra.world.population.items; -import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.config.templates.StructureTemplate; -public class TerraStructure { +public class TerraStructure implements ConfiguredStructure { private final ProbabilityCollection structure; private final Range spawnStart; - private final GridSpawn spawn; + private final StructureSpawn spawn; private final StructureTemplate template; - public TerraStructure(ProbabilityCollection structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn, StructureTemplate template) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; @@ -23,15 +24,18 @@ public class TerraStructure { return template; } + @Override public ProbabilityCollection getStructure() { return structure; } + @Override public Range getSpawnStart() { return spawnStart; } - public GridSpawn getSpawn() { + @Override + public StructureSpawn getSpawn() { return spawn; } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 51e887b24..826a0172d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; @@ -22,7 +23,7 @@ public class PaperListener implements Listener { String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld())); - TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); + ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); if(config != null) { AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin().toVector()), tw.getWorld(), 0, 500, location -> { if(location != null) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 174836681..20aacc383 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; @@ -37,7 +38,7 @@ public class SpigotListener implements Listener { if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); EnderSignal signal = (EnderSignal) entity; - TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get("STRONGHOLD")); + ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get("STRONGHOLD")); if(config != null) { main.getDebugLogger().info("Overriding Ender Signal..."); AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation().toVector()), tw.getWorld(), 0, 500, location -> { 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 20e6d064f..088174c47 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 @@ -39,7 +39,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; @@ -81,12 +81,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Supplier; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java index ae812bed5..aa1ff2262 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java @@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import net.minecraft.util.Identifier; import java.util.HashMap; 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 d90b3a901..2004f0221 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 @@ -1,6 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -115,7 +116,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener if(!pack.disableStructures()) { String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getId(feature)).toString(); TerraWorld terraWorld = TerraFabricPlugin.getInstance().getWorld((World) world); - TerraStructure located = pack.getRegistry(TerraStructure.class).get(pack.getLocatable().get(name)); + ConfiguredStructure located = pack.getRegistry(TerraStructure.class).get(pack.getLocatable().get(name)); if(located != null) { CompletableFuture result = new CompletableFuture<>(); AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, FabricAdapter.adapt(center), terraWorld.getWorld(), 0, 500, location -> { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index c85ab12a1..33ddc77f9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.config.builder.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; From 6755054c97182154a54bd2edc39c4c9a0daee7fb Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 09:36:24 -0700 Subject: [PATCH 0088/1529] refactor flora stuff --- .../java/com/dfsek/terra/addons/biome/BiomeTemplate.java | 2 +- .../java/com/dfsek/terra/addons/flora}/FloraFactory.java | 5 ++--- .../java/com/dfsek/terra/addons/flora}/FloraLayerLoader.java | 4 ++-- .../java/com/dfsek/terra/addons/flora}/FloraPopulator.java | 4 ++-- .../java/com/dfsek/terra/addons/flora}/FloraTemplate.java | 4 ++-- .../java/com/dfsek/terra/addons/flora}/flora/FloraLayer.java | 2 +- .../java/com/dfsek/terra/addons/flora}/flora/TerraFlora.java | 2 +- .../src/main/java/com/dfsek/terra/config/GenericLoaders.java | 4 ++-- 8 files changed, 13 insertions(+), 14 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/FloraFactory.java (86%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/FloraLayerLoader.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/FloraPopulator.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/FloraTemplate.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/flora/FloraLayer.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/flora/src/main/java/com/dfsek/terra/addons/flora}/flora/TerraFlora.java (99%) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index e4a08b528..5c41b42b3 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -23,7 +23,7 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.world.population.items.flora.FloraLayer; +import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index 62460a8ef..def4be7be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; @@ -6,9 +6,8 @@ import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.config.templates.FloraTemplate; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.world.population.items.flora.TerraFlora; +import com.dfsek.terra.addons.flora.flora.TerraFlora; public class FloraFactory implements ConfigFactory { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java index 0bf8dd5f7..768c7675b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config; +package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.world.population.items.flora.FloraLayer; +import com.dfsek.terra.addons.flora.flora.FloraLayer; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index 53635cedc..31ec4890a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population; +package com.dfsek.terra.addons.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.world.population.items.flora.FloraLayer; +import com.dfsek.terra.addons.flora.flora.FloraLayer; import org.jetbrains.annotations.NotNull; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index be5358206..c55550c51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; @@ -6,7 +6,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.world.population.items.flora.TerraFlora; +import com.dfsek.terra.addons.flora.flora.TerraFlora; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java index 942809705..69ab3462c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.flora; +package com.dfsek.terra.addons.flora.flora; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java similarity index 99% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java rename to common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 6dcc68948..17730e452 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.flora; +package com.dfsek.terra.addons.flora.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index d676ccc70..73bf11e4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -44,8 +44,8 @@ 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.config.loaders.palette.slant.SlantHolderLoader; -import com.dfsek.terra.world.population.items.flora.FloraLayer; -import com.dfsek.terra.world.population.items.flora.TerraFlora; +import com.dfsek.terra.addons.flora.flora.FloraLayer; +import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.world.population.items.ores.OreConfig; import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; From 8ff022cbc8fe018764142519a87ebbe536a19db7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 09:50:15 -0700 Subject: [PATCH 0089/1529] palette refactors --- .../com/dfsek/terra/addons/palette}/PaletteTemplate.java | 2 +- .../addons/palette}/palette/CarverPaletteLoader.java | 2 +- .../dfsek/terra/addons/palette}/palette/NoisePalette.java | 2 +- .../addons/palette}/palette/PaletteHolderLoader.java | 2 +- .../dfsek/terra/addons/palette}/palette/PaletteImpl.java | 5 +++-- .../terra/addons/palette}/palette/PaletteLayerLoader.java | 2 +- .../addons/palette}/palette/slant/SlantHolderLoader.java | 2 +- .../main/java/com/dfsek/terra/config/GenericLoaders.java | 8 ++++---- 8 files changed, 13 insertions(+), 12 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/PaletteTemplate.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/CarverPaletteLoader.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/NoisePalette.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/PaletteHolderLoader.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/PaletteImpl.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/PaletteLayerLoader.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/palette/slant/SlantHolderLoader.java (95%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index 59ca3c46e..f549bbc14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.palette; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java index b8b010fd0..c55c5f7fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.palette; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java index 400553c2b..94922fd6b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/NoisePalette.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.palette; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java index 0f2ef2861..bb646301b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.palette; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 61369df5e..dfce7793c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/PaletteImpl.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.palette; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; @@ -6,6 +6,7 @@ import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.generator.Palette; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -14,7 +15,7 @@ import java.util.Random; * Used to get a section of blocks, based on the depth at which they are found. */ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator.Palette { - private final List pallet = new GlueList<>(); + private final List pallet = new ArrayList<>(); /** * Constructs a blank palette. diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 8f1758220..b387f7879 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.palette; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java index d85246129..6dae778f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/slant/SlantHolderLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.palette.slant; +package com.dfsek.terra.addons.palette.palette.slant; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 73bf11e4e..1fa41a90a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -40,10 +40,10 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMut import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -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.config.loaders.palette.slant.SlantHolderLoader; +import com.dfsek.terra.addons.palette.palette.CarverPaletteLoader; +import com.dfsek.terra.addons.palette.palette.PaletteHolderLoader; +import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; +import com.dfsek.terra.addons.palette.palette.slant.SlantHolderLoader; import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.world.population.items.ores.OreConfig; From 7834509390773a7c32dbe43b13584e257783ad3e Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 09:50:34 -0700 Subject: [PATCH 0090/1529] more modules --- common/addons/ore/build.gradle.kts | 59 ++++++++++++++++++++++++ common/addons/structure/build.gradle.kts | 59 ++++++++++++++++++++++++ common/addons/tree/build.gradle.kts | 59 ++++++++++++++++++++++++ settings.gradle.kts | 3 ++ 4 files changed, 180 insertions(+) create mode 100644 common/addons/ore/build.gradle.kts create mode 100644 common/addons/structure/build.gradle.kts create mode 100644 common/addons/tree/build.gradle.kts diff --git a/common/addons/ore/build.gradle.kts b/common/addons/ore/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/ore/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/structure/build.gradle.kts b/common/addons/structure/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/structure/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/common/addons/tree/build.gradle.kts b/common/addons/tree/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/tree/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index a79a75c09..fd19690a9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -25,6 +25,9 @@ include("common:addons:biome:provider:single") include("common:addons:carver") include("common:addons:flora") include("common:addons:palette") +include("common:addons:tree") +include("common:addons:structure") +include("common:addons:ore") From bff7e4498403f2b507e6c274a66ea01377484f02 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 09:58:12 -0700 Subject: [PATCH 0091/1529] refactor ores --- .../java/com/dfsek/terra/addons/biome/BiomeTemplate.java | 2 +- .../main/java/com/dfsek/terra/addons/ore}/OreFactory.java | 7 +++---- .../java/com/dfsek/terra/addons/ore}/OrePopulator.java | 2 +- .../main/java/com/dfsek/terra/addons/ore}/OreTemplate.java | 2 +- .../main/java/com/dfsek/terra/addons/ore}/ores/Ore.java | 2 +- .../java/com/dfsek/terra/addons/ore}/ores/OreConfig.java | 2 +- .../java/com/dfsek/terra/addons/ore}/ores/OreHolder.java | 2 +- .../java/com/dfsek/terra/addons/ore}/ores/VanillaOre.java | 2 +- .../main/java/com/dfsek/terra/config/GenericLoaders.java | 4 ++-- .../dfsek/terra/config/loaders/config/OreConfigLoader.java | 2 +- .../dfsek/terra/config/loaders/config/OreHolderLoader.java | 6 +++--- .../dfsek/terra/registry/config/ConfigTypeRegistry.java | 2 +- 12 files changed, 17 insertions(+), 18 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/OreFactory.java (68%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/OrePopulator.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/OreTemplate.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/ores/Ore.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/ores/OreConfig.java (87%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/ores/OreHolder.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/ore/src/main/java/com/dfsek/terra/addons/ore}/ores/VanillaOre.java (98%) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 5c41b42b3..ffde9a9a6 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -24,7 +24,7 @@ import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.addons.flora.flora.FloraLayer; -import com.dfsek.terra.world.population.items.ores.OreHolder; +import com.dfsek.terra.addons.ore.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java index 38ab2f742..2a90b9a8b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/OreFactory.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java @@ -1,11 +1,10 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.ore; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.config.templates.OreTemplate; -import com.dfsek.terra.world.population.items.ores.Ore; -import com.dfsek.terra.world.population.items.ores.VanillaOre; +import com.dfsek.terra.addons.ore.ores.Ore; +import com.dfsek.terra.addons.ore.ores.VanillaOre; public class OreFactory implements ConfigFactory { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 1aee7e43e..2ed3b6195 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population; +package com.dfsek.terra.addons.ore; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index a6c38265f..30ac4b1a3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.ore; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index a4bf774ce..8e0ccb892 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.ores; +package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java index 8b9286dd6..4238c3d5d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreConfig.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.ores; +package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.util.Range; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java index 43e461895..625299af1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/OreHolder.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.ores; +package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java rename to common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 9ef13c3f0..1dbfa2df4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.ores; +package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 1fa41a90a..09a0fc624 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -46,8 +46,8 @@ import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; import com.dfsek.terra.addons.palette.palette.slant.SlantHolderLoader; import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.addons.flora.flora.TerraFlora; -import com.dfsek.terra.world.population.items.ores.OreConfig; -import com.dfsek.terra.world.population.items.ores.OreHolder; +import com.dfsek.terra.addons.ore.ores.OreConfig; +import com.dfsek.terra.addons.ore.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java index 52167ced2..62df379f1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.world.population.items.ores.OreConfig; +import com.dfsek.terra.addons.ore.ores.OreConfig; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java index 08f682171..d7640bd5f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java @@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.world.population.items.ores.Ore; -import com.dfsek.terra.world.population.items.ores.OreConfig; -import com.dfsek.terra.world.population.items.ores.OreHolder; +import com.dfsek.terra.addons.ore.ores.Ore; +import com.dfsek.terra.addons.ore.ores.OreConfig; +import com.dfsek.terra.addons.ore.ores.OreHolder; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index a75f03eae..488ba91d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -30,7 +30,7 @@ import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.world.population.items.ores.Ore; +import com.dfsek.terra.addons.ore.ores.Ore; import java.util.LinkedHashMap; import java.util.function.BiConsumer; From 46c61130204ef8a8947f7b582be40338a5140a86 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 10:05:26 -0700 Subject: [PATCH 0092/1529] refactor trees --- .../java/com/dfsek/terra/addons/biome/BiomeTemplate.java | 2 +- .../main/java/com/dfsek/terra/addons/tree}/TreeFactory.java | 5 ++--- .../java/com/dfsek/terra/addons/tree}/TreePopulator.java | 4 ++-- .../main/java/com/dfsek/terra/addons/tree}/TreeTemplate.java | 2 +- .../java/com/dfsek/terra/addons/tree}/tree/TerraTree.java | 2 +- .../java/com/dfsek/terra/addons/tree}/tree/TreeLayer.java | 2 +- .../src/main/java/com/dfsek/terra/config/GenericLoaders.java | 2 +- .../dfsek/terra/config/loaders/config/TreeLayerLoader.java | 2 +- 8 files changed, 10 insertions(+), 11 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/TreeFactory.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/TreePopulator.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/TreeTemplate.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/tree/TerraTree.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/tree/TreeLayer.java (96%) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index ffde9a9a6..5f506517a 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -25,7 +25,7 @@ import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.addons.ore.ores.OreHolder; -import com.dfsek.terra.world.population.items.tree.TreeLayer; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.ArrayList; import java.util.Collections; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java index d14bc62a8..eff88f97c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java @@ -1,10 +1,9 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.tree; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.config.templates.TreeTemplate; -import com.dfsek.terra.world.population.items.tree.TerraTree; +import com.dfsek.terra.addons.tree.tree.TerraTree; public class TreeFactory implements ConfigFactory { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index 6edb0f308..1e0893e03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population; +package com.dfsek.terra.addons.tree; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.world.population.items.tree.TreeLayer; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java index fb3c1f4a9..b15f2b2ea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.tree; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java index 50c367c85..bb7497dc4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.tree; +package com.dfsek.terra.addons.tree.tree; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java index 5b0d88625..5029a365f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items.tree; +package com.dfsek.terra.addons.tree.tree; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.PopulationUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 09a0fc624..dc27ca205 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -48,7 +48,7 @@ import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.addons.ore.ores.OreConfig; import com.dfsek.terra.addons.ore.ores.OreHolder; -import com.dfsek.terra.world.population.items.tree.TreeLayer; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 293b879f2..8d93e33af 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.world.population.items.tree.TreeLayer; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.lang.reflect.Type; import java.util.Map; From 5c66dd4f17774bdf88e2351af040e9aced598df1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 10:17:31 -0700 Subject: [PATCH 0093/1529] refactor structures --- .../terra/addons/carver}/carving/Carver.java | 2 +- .../terra/addons/carver}/carving/Worm.java | 2 +- .../terra/addons/palette}/PaletteFactory.java | 2 +- .../addons/structure}/StructureFactory.java | 3 +- .../addons/structure}/StructurePopulator.java | 3 +- .../addons/structure}/TerraStructure.java | 2 +- .../structure}/structures/loot/Entry.java | 10 +-- .../structures/loot/LootTableImpl.java | 2 +- .../structure}/structures/loot/Pool.java | 2 +- .../loot/functions/AmountFunction.java | 2 +- .../loot/functions/DamageFunction.java | 2 +- .../loot/functions/EnchantFunction.java | 2 +- .../loot/functions/LootFunction.java | 2 +- .../structure}/structures/parser/Parser.java | 84 +++++++++---------- .../structures/parser/ParserUtil.java | 8 +- .../parser/exceptions/ParseException.java | 4 +- .../structures/parser/lang/Block.java | 6 +- .../parser/lang/ImplementationArguments.java | 2 +- .../structures/parser/lang/Item.java | 12 +++ .../structures/parser/lang/Keyword.java | 4 + .../structures/parser/lang/Returnable.java | 2 +- .../structures/parser/lang/Statement.java | 4 + .../lang/constants/BooleanConstant.java | 4 +- .../lang/constants/ConstantExpression.java | 10 +-- .../lang/constants/NumericConstant.java | 4 +- .../parser/lang/constants/StringConstant.java | 4 +- .../parser/lang/functions/Function.java | 10 +-- .../lang/functions/FunctionBuilder.java | 15 ++++ .../lang/functions/def/FunctionBlock.java | 12 +-- .../lang/keywords/flow/BreakKeyword.java | 12 +-- .../lang/keywords/flow/ContinueKeyword.java | 12 +-- .../lang/keywords/flow/FailKeyword.java | 12 +-- .../lang/keywords/flow/ReturnKeyword.java | 12 +-- .../lang/keywords/looplike/ForKeyword.java | 16 ++-- .../lang/keywords/looplike/IfKeyword.java | 14 ++-- .../lang/keywords/looplike/WhileKeyword.java | 14 ++-- .../lang/operations/BinaryOperation.java | 10 +-- .../lang/operations/BooleanAndOperation.java | 6 +- .../lang/operations/BooleanNotOperation.java | 6 +- .../lang/operations/BooleanOrOperation.java | 6 +- .../operations/ConcatenationOperation.java | 6 +- .../lang/operations/DivisionOperation.java | 6 +- .../lang/operations/ModuloOperation.java | 6 +- .../operations/MultiplicationOperation.java | 6 +- .../lang/operations/NegationOperation.java | 6 +- .../operations/NumberAdditionOperation.java | 6 +- .../lang/operations/SubtractionOperation.java | 6 +- .../lang/operations/UnaryOperation.java | 10 +-- .../statements/EqualsStatement.java | 8 +- .../GreaterOrEqualsThanStatement.java | 8 +- .../statements/GreaterThanStatement.java | 8 +- .../statements/LessThanOrEqualsStatement.java | 8 +- .../statements/LessThanStatement.java | 8 +- .../statements/NotEqualsStatement.java | 8 +- .../parser/lang/variables/Assignment.java | 10 +-- .../lang/variables/BooleanVariable.java | 6 +- .../parser/lang/variables/Declaration.java | 10 +-- .../parser/lang/variables/Getter.java | 8 +- .../parser/lang/variables/NumberVariable.java | 6 +- .../parser/lang/variables/StringVariable.java | 6 +- .../parser/lang/variables/Variable.java | 14 ++++ .../structures/script/StructureScript.java | 52 ++++++------ .../script/TerraImplementationArguments.java | 4 +- .../builders/BinaryNumberFunctionBuilder.java | 14 ++-- .../script/builders/BiomeFunctionBuilder.java | 10 +-- .../script/builders/BlockFunctionBuilder.java | 18 ++-- .../builders/CheckBlockFunctionBuilder.java | 10 +-- .../script/builders/CheckFunctionBuilder.java | 12 +-- .../builders/EntityFunctionBuilder.java | 12 +-- .../builders/GetMarkFunctionBuilder.java | 10 +-- .../script/builders/LootFunctionBuilder.java | 12 +-- .../script/builders/PullFunctionBuilder.java | 12 +-- .../builders/RandomFunctionBuilder.java | 12 +-- .../builders/RecursionsFunctionBuilder.java | 26 ++++++ .../builders/SetMarkFunctionBuilder.java | 12 +-- .../script/builders/StateFunctionBuilder.java | 12 +-- .../builders/StructureFunctionBuilder.java | 12 +-- .../builders/UnaryBooleanFunctionBuilder.java | 16 ++-- .../builders/UnaryNumberFunctionBuilder.java | 14 ++-- .../builders/UnaryStringFunctionBuilder.java | 14 ++-- .../builders/ZeroArgFunctionBuilder.java | 16 ++-- .../functions/AbstractBlockFunction.java | 16 ++-- .../script/functions/BiomeFunction.java | 14 ++-- .../script/functions/BlockFunction.java | 16 ++-- .../script/functions/CheckBlockFunction.java | 14 ++-- .../script/functions/CheckFunction.java | 14 ++-- .../functions/DynamicBlockFunction.java | 12 +-- .../script/functions/EntityFunction.java | 20 ++--- .../script/functions/GetMarkFunction.java | 14 ++-- .../script/functions/LootFunction.java | 18 ++-- .../script/functions/PullFunction.java | 20 ++--- .../script/functions/RandomFunction.java | 14 ++-- .../script/functions/RecursionsFunction.java | 12 +-- .../script/functions/SetMarkFunction.java | 14 ++-- .../script/functions/StateFunction.java | 16 ++-- .../script/functions/StructureFunction.java | 16 ++-- .../structures/structure/buffer/Cell.java | 2 +- .../structure/buffer/DirectBuffer.java | 2 +- .../structure/buffer/IntermediateBuffer.java | 2 +- .../structure/buffer/StructureBuffer.java | 2 +- .../structure/buffer/items/BufferedBlock.java | 2 +- .../buffer/items/BufferedEntity.java | 2 +- .../buffer/items/BufferedLootApplication.java | 4 +- .../buffer/items/BufferedPulledBlock.java | 2 +- .../items/BufferedStateManipulator.java | 2 +- .../structure}/structures/tokenizer/Char.java | 2 +- .../structures/tokenizer/Lookahead.java | 2 +- .../structures/tokenizer/Position.java | 2 +- .../structures/tokenizer/Token.java | 2 +- .../structures/tokenizer/Tokenizer.java | 10 +-- .../tokenizer/exceptions/EOFException.java | 4 +- .../tokenizer/exceptions/FormatException.java | 4 +- .../exceptions/TokenizerException.java | 6 +- .../api/structures/parser/lang/Item.java | 12 --- .../api/structures/parser/lang/Keyword.java | 4 - .../api/structures/parser/lang/Statement.java | 4 - .../lang/functions/FunctionBuilder.java | 15 ---- .../parser/lang/variables/Variable.java | 14 ---- .../builders/RecursionsFunctionBuilder.java | 26 ------ .../commands/structure/SpawnCommand.java | 10 +-- .../argument/ScriptArgumentParser.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 8 +- .../test/java/structure/LookaheadTest.java | 2 +- .../src/test/java/structure/ParserTest.java | 18 ++-- 125 files changed, 599 insertions(+), 601 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/carving/Carver.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world => addons/carver/src/main/java/com/dfsek/terra/addons/carver}/carving/Worm.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/PaletteFactory.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/config/factories => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/StructureFactory.java (83%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/StructurePopulator.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world/population/items => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/TerraStructure.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/Entry.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/LootTableImpl.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/Pool.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/functions/AmountFunction.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/functions/DamageFunction.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/functions/EnchantFunction.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/loot/functions/LootFunction.java (87%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/Parser.java (85%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/ParserUtil.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/exceptions/ParseException.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/Block.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/ImplementationArguments.java (63%) create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/Returnable.java (86%) create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/constants/BooleanConstant.java (64%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/constants/ConstantExpression.java (60%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/constants/NumericConstant.java (64%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/constants/StringConstant.java (64%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/functions/Function.java (55%) create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/functions/def/FunctionBlock.java (72%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/flow/BreakKeyword.java (56%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/flow/ContinueKeyword.java (57%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/flow/FailKeyword.java (56%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/flow/ReturnKeyword.java (56%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/looplike/ForKeyword.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/looplike/IfKeyword.java (78%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/keywords/looplike/WhileKeyword.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/BinaryOperation.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/BooleanAndOperation.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/BooleanNotOperation.java (62%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/BooleanOrOperation.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/ConcatenationOperation.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/DivisionOperation.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/ModuloOperation.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/MultiplicationOperation.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/NegationOperation.java (62%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/NumberAdditionOperation.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/SubtractionOperation.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/UnaryOperation.java (61%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/EqualsStatement.java (68%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java (59%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/GreaterThanStatement.java (58%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java (58%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/LessThanStatement.java (58%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/operations/statements/NotEqualsStatement.java (57%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/Assignment.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/BooleanVariable.java (73%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/Declaration.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/Getter.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/NumberVariable.java (73%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/parser/lang/variables/StringVariable.java (73%) create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/StructureScript.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/TerraImplementationArguments.java (89%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/BinaryNumberFunctionBuilder.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/BiomeFunctionBuilder.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/BlockFunctionBuilder.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/CheckBlockFunctionBuilder.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/CheckFunctionBuilder.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/EntityFunctionBuilder.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/GetMarkFunctionBuilder.java (67%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/LootFunctionBuilder.java (74%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/PullFunctionBuilder.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/RandomFunctionBuilder.java (55%) create mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/SetMarkFunctionBuilder.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/StateFunctionBuilder.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/StructureFunctionBuilder.java (76%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/UnaryBooleanFunctionBuilder.java (68%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/UnaryNumberFunctionBuilder.java (70%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/UnaryStringFunctionBuilder.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/builders/ZeroArgFunctionBuilder.java (66%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/AbstractBlockFunction.java (74%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/BiomeFunction.java (74%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/BlockFunction.java (65%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/CheckBlockFunction.java (73%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/CheckFunction.java (83%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/DynamicBlockFunction.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/EntityFunction.java (68%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/GetMarkFunction.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/LootFunction.java (74%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/PullFunction.java (69%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/RandomFunction.java (59%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/RecursionsFunction.java (56%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/SetMarkFunction.java (73%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/StateFunction.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/script/functions/StructureFunction.java (82%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/Cell.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/DirectBuffer.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/IntermediateBuffer.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/StructureBuffer.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/items/BufferedBlock.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/items/BufferedEntity.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/items/BufferedLootApplication.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/items/BufferedPulledBlock.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/structure/buffer/items/BufferedStateManipulator.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/Char.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/Lookahead.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/Position.java (81%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/Token.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/Tokenizer.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/exceptions/EOFException.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/exceptions/FormatException.java (71%) rename common/{implementation/src/main/java/com/dfsek/terra/api => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/structures/tokenizer/exceptions/TokenizerException.java (62%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java index e62560d54..3759ff174 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Carver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.carving; +package com.dfsek.terra.addons.carver.carving; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java rename to common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java index a41366e2d..00d1fc0f2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/carving/Worm.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.carving; +package com.dfsek.terra.addons.carver.carving; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 78101ee76..7a77911d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.palette; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index d4043aff8..0cf9ba6ce 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -1,10 +1,9 @@ -package com.dfsek.terra.config.factories; +package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.config.templates.StructureTemplate; -import com.dfsek.terra.world.population.items.TerraStructure; public class StructureFactory implements ConfigFactory { @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index e4dc0ef30..850a570b7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population; +package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; @@ -15,7 +15,6 @@ import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 65993165c..9d846ab06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.population.items; +package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index 8de921647..adfbea08b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.loot; +package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.structures.loot.functions.AmountFunction; -import com.dfsek.terra.api.structures.loot.functions.DamageFunction; -import com.dfsek.terra.api.structures.loot.functions.EnchantFunction; -import com.dfsek.terra.api.structures.loot.functions.LootFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java index 706896cf7..5b20dcab0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/LootTableImpl.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot; +package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.Inventory; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index 309b7d554..fbfb3075f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot; +package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java index 4e29905bd..8b2780dbc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/AmountFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot.functions; +package com.dfsek.terra.addons.structure.structures.loot.functions; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java index 0d9230b32..2643cc7f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/DamageFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot.functions; +package com.dfsek.terra.addons.structure.structures.loot.functions; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Damageable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index 6facfe662..e59bb84e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot.functions; +package com.dfsek.terra.addons.structure.structures.loot.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java similarity index 87% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java index 477290a74..5d0f1e97b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/functions/LootFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.loot.functions; +package com.dfsek.terra.addons.structure.structures.loot.functions; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java similarity index 85% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java index 14d88016c..643159c2d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/Parser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java @@ -1,46 +1,46 @@ -package com.dfsek.terra.api.structures.parser; +package com.dfsek.terra.addons.structure.structures.parser; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.Item; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; -import com.dfsek.terra.api.structures.parser.lang.constants.StringConstant; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.keywords.flow.BreakKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.flow.ContinueKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.flow.FailKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.flow.ReturnKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.looplike.ForKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.looplike.IfKeyword; -import com.dfsek.terra.api.structures.parser.lang.keywords.looplike.WhileKeyword; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.BooleanAndOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.BooleanNotOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.BooleanOrOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.ConcatenationOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.DivisionOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.ModuloOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.MultiplicationOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.NegationOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.NumberAdditionOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.SubtractionOperation; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.EqualsStatement; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.GreaterOrEqualsThanStatement; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.GreaterThanStatement; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.LessThanOrEqualsStatement; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.LessThanStatement; -import com.dfsek.terra.api.structures.parser.lang.operations.statements.NotEqualsStatement; -import com.dfsek.terra.api.structures.parser.lang.variables.Assignment; -import com.dfsek.terra.api.structures.parser.lang.variables.Declaration; -import com.dfsek.terra.api.structures.parser.lang.variables.Getter; -import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.api.structures.tokenizer.Token; -import com.dfsek.terra.api.structures.tokenizer.Tokenizer; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.Item; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.BooleanConstant; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.NumericConstant; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.StringConstant; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.BreakKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.ContinueKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.FailKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.ReturnKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.ForKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.IfKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.WhileKeyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanAndOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanNotOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanOrOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.ConcatenationOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.DivisionOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.ModuloOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.MultiplicationOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.NegationOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.NumberAdditionOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.SubtractionOperation; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.EqualsStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.GreaterOrEqualsThanStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.GreaterThanStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.LessThanOrEqualsStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.LessThanStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.NotEqualsStatement; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Assignment; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Declaration; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Getter; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Token; +import com.dfsek.terra.addons.structure.structures.tokenizer.Tokenizer; import com.dfsek.terra.api.util.GlueList; import java.util.Collections; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java index 724ac9099..2a5c00bf0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/ParserUtil.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser; +package com.dfsek.terra.addons.structure.structures.parser; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Token; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Token; import java.util.Arrays; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java index 03bd8d5e4..730e77582 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/exceptions/ParseException.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.parser.exceptions; +package com.dfsek.terra.addons.structure.structures.parser.exceptions; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class ParseException extends Exception { private static final long serialVersionUID = 6744390543046766386L; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java index b3d47b2fb..15e6bfcae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Block.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang; +package com.dfsek.terra.addons.structure.structures.parser.lang; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.HashMap; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java similarity index 63% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java index cd71207a2..7a4f0181b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/ImplementationArguments.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.parser.lang; +package com.dfsek.terra.addons.structure.structures.parser.lang; /** * Arguments passed to {@link Item}s by the implementation diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java new file mode 100644 index 000000000..87d13262f --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.structure.structures.parser.lang; + +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; + +import java.util.Map; + +public interface Item { + T apply(ImplementationArguments implementationArguments, Map> variableMap); + + Position getPosition(); +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java new file mode 100644 index 000000000..8633e2ff4 --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.addons.structure.structures.parser.lang; + +public interface Keyword extends Returnable { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java similarity index 86% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java index 3d02ae4cb..aff5dcb88 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Returnable.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.parser.lang; +package com.dfsek.terra.addons.structure.structures.parser.lang; public interface Returnable extends Item { ReturnType returnType(); diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java new file mode 100644 index 000000000..50b0ae529 --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.addons.structure.structures.parser.lang; + +public interface Statement extends Item { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java index 7d57f561f..d4910c6ae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/BooleanConstant.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.parser.lang.constants; +package com.dfsek.terra.addons.structure.structures.parser.lang.constants; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class BooleanConstant extends ConstantExpression { public BooleanConstant(Boolean constant, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java similarity index 60% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java index b1439fdf2..57c4fb1d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/ConstantExpression.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.constants; +package com.dfsek.terra.addons.structure.structures.parser.lang.constants; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java index caf68836e..31103b510 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.parser.lang.constants; +package com.dfsek.terra.addons.structure.structures.parser.lang.constants; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class NumericConstant extends ConstantExpression { public NumericConstant(Number constant, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java similarity index 64% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java index 19a93353f..3fd056343 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/constants/StringConstant.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.parser.lang.constants; +package com.dfsek.terra.addons.structure.structures.parser.lang.constants; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class StringConstant extends ConstantExpression { public StringConstant(String constant, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java index c22d9fae9..b164570f3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/Function.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.functions; +package com.dfsek.terra.addons.structure.structures.parser.lang.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java new file mode 100644 index 000000000..76df27d3f --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.structure.structures.parser.lang.functions; + +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; + +import java.util.List; + +public interface FunctionBuilder> { + T build(List> argumentList, Position position) throws ParseException; + + int argNumber(); + + Returnable.ReturnType getArgument(int position); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java similarity index 72% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java index 26e5fa4f5..41fd4816d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/def/FunctionBlock.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.parser.lang.functions.def; +package com.dfsek.terra.addons.structure.structures.parser.lang.functions.def; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Item; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Item; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.HashMap; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java index aa2cc751e..2437964a0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/BreakKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java similarity index 57% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java index b994c477f..ac1060e9d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ContinueKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java index 1340e21ef..f26e49707 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/FailKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java index 20fc0b211..4582c0ff6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/flow/ReturnKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java index 8416eb3fc..efd6c2ddf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/ForKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Item; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Item; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java index 1e639acfa..bbf22bab3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import org.jetbrains.annotations.Nullable; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java index 4eeb18107..29d7e023b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/keywords/looplike/WhileKeyword.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Keyword; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java index 684ff8ec4..f0c4e3bec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BinaryOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java index 3bca80717..e2efc46f4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanAndOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class BooleanAndOperation extends BinaryOperation { public BooleanAndOperation(Returnable left, Returnable right, Position start) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java similarity index 62% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java index ebf59abd2..ba7c9b8a4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanNotOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class BooleanNotOperation extends UnaryOperation { public BooleanNotOperation(Returnable input, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java index 513c35be5..a34669683 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class BooleanOrOperation extends BinaryOperation { public BooleanOrOperation(Returnable left, Returnable right, Position start) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java index b0eea6f50..461f4db91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ConcatenationOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class ConcatenationOperation extends BinaryOperation { public ConcatenationOperation(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java index 3054f8981..536b31f7b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/DivisionOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class DivisionOperation extends BinaryOperation { public DivisionOperation(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java index 44ef9a7d1..e2044f0c7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/ModuloOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class ModuloOperation extends BinaryOperation { public ModuloOperation(Returnable left, Returnable right, Position start) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java index b6269a6c7..66dfd7666 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class MultiplicationOperation extends BinaryOperation { public MultiplicationOperation(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java similarity index 62% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java index cf4b01de7..27fb99671 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NegationOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class NegationOperation extends UnaryOperation { public NegationOperation(Returnable input, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java index 969d13b5e..ee9863445 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class NumberAdditionOperation extends BinaryOperation { public NumberAdditionOperation(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java index d2bc82203..457e26282 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class SubtractionOperation extends BinaryOperation { public SubtractionOperation(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java similarity index 61% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java index d561527e0..07a7c4548 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/UnaryOperation.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.operations; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java index b7dface16..2bc0a330c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/EqualsStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import net.jafama.FastMath; public class EqualsStatement extends BinaryOperation { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java similarity index 59% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java index 36b1ab446..3574450fc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class GreaterOrEqualsThanStatement extends BinaryOperation { public GreaterOrEqualsThanStatement(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java similarity index 58% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java index c9a12357b..2849b618e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/GreaterThanStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class GreaterThanStatement extends BinaryOperation { public GreaterThanStatement(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java similarity index 58% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java index 6904acb62..4951da6c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class LessThanOrEqualsStatement extends BinaryOperation { public LessThanOrEqualsStatement(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java similarity index 58% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java index 03fff20c1..02556e4e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/LessThanStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class LessThanStatement extends BinaryOperation { public LessThanStatement(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java similarity index 57% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java index e0e57783c..a34867443 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/operations/statements/NotEqualsStatement.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class NotEqualsStatement extends BinaryOperation { public NotEqualsStatement(Returnable left, Returnable right, Position position) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java index 91fc43c86..f2794376d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Assignment.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Item; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Item; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java index ad0ed5400..1f609b468 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/BooleanVariable.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class BooleanVariable implements Variable { private final Position position; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java index f919f13bb..9d18098d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Declaration.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Item; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Item; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java index 19f07ed73..e6cbc40bd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Getter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java index 6f7355cb4..ba26ebace 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/NumberVariable.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class NumberVariable implements Variable { private final Position position; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java index a2b48e73e..ae9ac660a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/StringVariable.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class StringVariable implements Variable { private final Position position; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java new file mode 100644 index 000000000..b97785091 --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java @@ -0,0 +1,14 @@ +package com.dfsek.terra.addons.structure.structures.parser.lang.variables; + +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; + +public interface Variable { + T getValue(); + + void setValue(T value); + + Returnable.ReturnType getType(); + + Position getPosition(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java index 9d2a301a1..9e3d4aeb0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.script; +package com.dfsek.terra.addons.structure.structures.script; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; @@ -7,31 +7,31 @@ import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structures.parser.Parser; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.BinaryNumberFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.BiomeFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.BlockFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.CheckBlockFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.CheckFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.EntityFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.GetMarkFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.LootFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.PullFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.RandomFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.RecursionsFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.SetMarkFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.StateFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.StructureFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.UnaryBooleanFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.UnaryNumberFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.UnaryStringFunctionBuilder; -import com.dfsek.terra.api.structures.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; -import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; +import com.dfsek.terra.addons.structure.structures.parser.Parser; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.BinaryNumberFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.BiomeFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.BlockFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.CheckBlockFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.CheckFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.EntityFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.GetMarkFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.LootFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.PullFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.RandomFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.RecursionsFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.SetMarkFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.StateFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.StructureFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.UnaryBooleanFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.UnaryNumberFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.UnaryStringFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.builders.ZeroArgFunctionBuilder; +import com.dfsek.terra.addons.structure.structures.structure.buffer.DirectBuffer; +import com.dfsek.terra.addons.structure.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java similarity index 89% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java index 49b03f90b..a60b2c12f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/TerraImplementationArguments.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.api.structures.script; +package com.dfsek.terra.addons.structure.structures.script; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.world.World; import java.util.Random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java index 780527ab8..ab4e02696 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java index 7c15c70b4..b9a58e1b0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.BiomeFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.BiomeFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java index 0f05d2636..17144882d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.AbstractBlockFunction; -import com.dfsek.terra.api.structures.script.functions.BlockFunction; -import com.dfsek.terra.api.structures.script.functions.DynamicBlockFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.BooleanConstant; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.AbstractBlockFunction; +import com.dfsek.terra.addons.structure.structures.script.functions.BlockFunction; +import com.dfsek.terra.addons.structure.structures.script.functions.DynamicBlockFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java index 98eeb2665..11cf97a28 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.CheckBlockFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.CheckBlockFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java index bd2bd6497..afc9d58f4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.CheckFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.CheckFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java index dd66a3d84..c13ca5a61 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.EntityFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.EntityFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java similarity index 67% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java index e93fbdc2b..b7c249da8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.GetMarkFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.GetMarkFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java similarity index 74% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java index 110c32e5a..d3c233180 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.structures.script.functions.LootFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.script.functions.LootFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java index 9b55da244..3f93abd51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.PullFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.PullFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java similarity index 55% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java index ec84d5c36..268604ad7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RandomFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.RandomFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.RandomFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java new file mode 100644 index 000000000..d871773f2 --- /dev/null +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.addons.structure.structures.script.builders; + +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.RecursionsFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; + +import java.util.List; + +public class RecursionsFunctionBuilder implements FunctionBuilder { + @Override + public RecursionsFunction build(List> argumentList, Position position) throws ParseException { + return new RecursionsFunction(position); + } + + @Override + public int argNumber() { + return 0; + } + + @Override + public Returnable.ReturnType getArgument(int position) { + return null; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java index 76fc5ec39..8f74ff9a7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.SetMarkFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.SetMarkFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java index 56c9ab2e3..ff789fc11 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.StateFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.StateFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java similarity index 76% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java index b84e89662..b86507c4d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.StructureFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.functions.StructureFunction; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.stream.Collectors; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java index add26248e..67c5ae1b3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java similarity index 70% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java index 80b705498..45187c29f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java index 30932b352..d81fb8a11 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java similarity index 66% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java index 0bc7beff1..baabd312d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.script.builders; +package com.dfsek.terra.addons.structure.structures.script.builders; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java similarity index 74% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java index beb89ecbe..441a857a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/AbstractBlockFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -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.buffer.items.BufferedBlock; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedBlock; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java similarity index 74% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java index b87db6b39..f9137b298 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java similarity index 65% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java index ff6b597c8..502d10f00 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java index 942b8c580..4e54d7765 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java index 81e9fc6e3..58302d170 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java index debb79d9f..b0312bd72 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/DynamicBlockFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.HashMap; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java index acc1305af..8b71b9a38 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -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.buffer.items.BufferedEntity; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedEntity; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java index d058765a3..7543f35a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java similarity index 74% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java index e78284d96..3a5bfd605 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedLootApplication; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java similarity index 69% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java index bfe835414..e16be8597 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -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.buffer.items.BufferedPulledBlock; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedPulledBlock; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java similarity index 59% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java index a3ae8c46c..1418a9b3c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RandomFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java similarity index 56% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java index e06684671..b2656d746 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/RecursionsFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java similarity index 73% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java index 3a61beec4..d250423a2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java index 37b644e9e..f6d3c7d6e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -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.buffer.items.BufferedStateManipulator; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedStateManipulator; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java index 6f455772f..9e91a79a7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.api.structures.script.functions; +package com.dfsek.terra.addons.structure.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -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.buffer.IntermediateBuffer; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.structure.buffer.IntermediateBuffer; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java index ea9c2be99..559011c43 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer; +package com.dfsek.terra.addons.structure.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java index 47ca2c541..88413aef8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/DirectBuffer.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer; +package com.dfsek.terra.addons.structure.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java index 45cdbdc15..f2076bbc8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer; +package com.dfsek.terra.addons.structure.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java index f308cfaa9..94e7d4360 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer; +package com.dfsek.terra.addons.structure.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java index a965497cb..c837aecd9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.addons.structure.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java index d92ca38d0..08f54be7f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.addons.structure.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.Entity; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java index 4e85a9416..d006f691a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.addons.structure.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; @@ -6,7 +6,7 @@ import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java index 4ed8de632..e3125a0f3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.addons.structure.structures.structure.buffer.items; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java index 637885ff7..91cc8ec54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.structure.buffer.items; +package com.dfsek.terra.addons.structure.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java index 5b655cd31..3b69c94fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Char.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.tokenizer; +package com.dfsek.terra.addons.structure.structures.tokenizer; public class Char { private final char character; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java index cfbec6d6b..3135c8a8e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Lookahead.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.tokenizer; +package com.dfsek.terra.addons.structure.structures.tokenizer; import com.dfsek.terra.api.util.GlueList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java similarity index 81% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java index 17d319edb..481d83244 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Position.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.tokenizer; +package com.dfsek.terra.addons.structure.structures.tokenizer; public class Position { private final int line; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java index b74a206f7..4b09bad46 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Token.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.structures.tokenizer; +package com.dfsek.terra.addons.structure.structures.tokenizer; public class Token { private final String content; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java index 4f21273ee..e1ff7440f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/Tokenizer.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.api.structures.tokenizer; +package com.dfsek.terra.addons.structure.structures.tokenizer; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.tokenizer.exceptions.EOFException; -import com.dfsek.terra.api.structures.tokenizer.exceptions.FormatException; -import com.dfsek.terra.api.structures.tokenizer.exceptions.TokenizerException; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.EOFException; +import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.FormatException; +import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.TokenizerException; import com.google.common.collect.Sets; import java.io.StringReader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java index 1d615f601..343f4424e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/EOFException.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class EOFException extends TokenizerException { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java similarity index 71% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java index 3ca38e126..e9af70b91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/FormatException.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.api.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public class FormatException extends TokenizerException { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java similarity index 62% rename from common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java index 15990bdfa..c078ede64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/tokenizer/exceptions/TokenizerException.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; public abstract class TokenizerException extends ParseException { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java deleted file mode 100644 index bd45e904e..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Item.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dfsek.terra.api.structures.parser.lang; - -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; - -import java.util.Map; - -public interface Item { - T apply(ImplementationArguments implementationArguments, Map> variableMap); - - Position getPosition(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java deleted file mode 100644 index be0a9f085..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Keyword.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.api.structures.parser.lang; - -public interface Keyword extends Returnable { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java deleted file mode 100644 index f268f4592..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/Statement.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.api.structures.parser.lang; - -public interface Statement extends Item { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java deleted file mode 100644 index 7d1cbe4ba..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/functions/FunctionBuilder.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.api.structures.parser.lang.functions; - -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; - -import java.util.List; - -public interface FunctionBuilder> { - T build(List> argumentList, Position position) throws ParseException; - - int argNumber(); - - Returnable.ReturnType getArgument(int position); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java deleted file mode 100644 index 4db60a3bf..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/parser/lang/variables/Variable.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.api.structures.parser.lang.variables; - -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.tokenizer.Position; - -public interface Variable { - T getValue(); - - void setValue(T value); - - Returnable.ReturnType getType(); - - Position getPosition(); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java deleted file mode 100644 index 5fc66977d..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/builders/RecursionsFunctionBuilder.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.api.structures.script.builders; - -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.functions.RecursionsFunction; -import com.dfsek.terra.api.structures.tokenizer.Position; - -import java.util.List; - -public class RecursionsFunctionBuilder implements FunctionBuilder { - @Override - public RecursionsFunction build(List> argumentList, Position position) throws ParseException { - return new RecursionsFunction(position); - } - - @Override - public int argNumber() { - return 0; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return null; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index fd06ade5f..e4b43abe2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -10,11 +10,11 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.structures.parser.lang.constants.NumericConstant; -import com.dfsek.terra.api.structures.script.TerraImplementationArguments; -import com.dfsek.terra.api.structures.script.functions.CheckFunction; -import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.lang.constants.NumericConstant; +import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.structure.structures.script.functions.CheckFunction; +import com.dfsek.terra.addons.structure.structures.structure.buffer.StructureBuffer; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java index 86f871183..2e97e2a3a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; public class ScriptArgumentParser implements ArgumentParser { @Inject diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java index c7380b92c..b14760722 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; import java.util.List; import java.util.stream.Collectors; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 44c549afc..6746ad28b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -23,9 +23,9 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structures.loot.LootTableImpl; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.script.StructureScript; +import com.dfsek.terra.addons.structure.structures.loot.LootTableImpl; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.world.TerraWorld; @@ -238,7 +238,7 @@ public class ConfigPackImpl implements ConfigPack { try(InputStream stream = entry.getValue()) { Structure structure = new StructureScript(stream, main, getRegistry(Structure.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); getOpenRegistry(Structure.class).add(structure.getId(), structure); - } catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) { + } catch(com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException | IOException e) { throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); } } diff --git a/common/implementation/src/test/java/structure/LookaheadTest.java b/common/implementation/src/test/java/structure/LookaheadTest.java index fd1e10724..4fabd2f6f 100644 --- a/common/implementation/src/test/java/structure/LookaheadTest.java +++ b/common/implementation/src/test/java/structure/LookaheadTest.java @@ -1,6 +1,6 @@ package structure; -import com.dfsek.terra.api.structures.tokenizer.Lookahead; +import com.dfsek.terra.addons.structure.structures.tokenizer.Lookahead; import org.junit.jupiter.api.Test; import java.io.StringReader; diff --git a/common/implementation/src/test/java/structure/ParserTest.java b/common/implementation/src/test/java/structure/ParserTest.java index fd1ff30c1..c1402eafc 100644 --- a/common/implementation/src/test/java/structure/ParserTest.java +++ b/common/implementation/src/test/java/structure/ParserTest.java @@ -1,14 +1,14 @@ package structure; -import com.dfsek.terra.api.structures.parser.Parser; -import com.dfsek.terra.api.structures.parser.exceptions.ParseException; -import com.dfsek.terra.api.structures.parser.lang.Block; -import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structures.parser.lang.Returnable; -import com.dfsek.terra.api.structures.parser.lang.functions.Function; -import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.api.structures.parser.lang.variables.Variable; -import com.dfsek.terra.api.structures.tokenizer.Position; +import com.dfsek.terra.addons.structure.structures.parser.Parser; +import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; +import com.dfsek.terra.addons.structure.structures.parser.lang.Block; +import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; +import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; +import com.dfsek.terra.addons.structure.structures.tokenizer.Position; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; From e9dc7d3db653f5bd495ef5da5e8ba75e40b39176 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 2 Jul 2021 10:49:17 -0700 Subject: [PATCH 0094/1529] fix some refactor errors --- .../config/stage}/StageBuilderLoader.java | 2 +- .../addons/palette}/PaletteRegistry.java | 2 +- .../command}/AsyncStructureFinder.java | 2 +- .../command}/structure/SpawnCommand.java | 2 +- .../command}/structure/StructureCommand.java | 2 +- .../structure/StructureExportCommand.java | 2 +- .../structure/StructureLoadCommand.java | 8 +- .../structure/StructureLocateCommand.java | 6 +- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 2 +- .../completer/RotationCompleter.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../completer/StructureCompleter.java | 2 +- .../terra/api/command/CommandManager.java | 0 .../terra/api/command/CommandTemplate.java | 0 .../api/command/annotation/Argument.java | 0 .../terra/api/command/annotation/Command.java | 0 .../api/command/annotation/Subcommand.java | 0 .../terra/api/command/annotation/Switch.java | 0 .../annotation/inject/ArgumentTarget.java | 0 .../annotation/inject/SwitchTarget.java | 0 .../command/annotation/type/DebugCommand.java | 0 .../annotation/type/PlayerCommand.java | 0 .../command/annotation/type/WorldCommand.java | 0 .../terra/api/command/arg/ArgumentParser.java | 0 .../api/command/arg/DoubleArgumentParser.java | 0 .../command/arg/IntegerArgumentParser.java | 0 .../api/command/arg/StringArgumentParser.java | 0 .../command/exception/CommandException.java | 0 .../command/exception/ExecutionException.java | 0 .../exception/InvalidArgumentsException.java | 0 .../exception/MalformedCommandException.java | 0 .../exception/SwitchFormatException.java | 0 .../api/command/tab/NothingCompleter.java | 0 .../terra/api/command/tab/TabCompleter.java | 0 .../com/dfsek/terra/commands/CommandUtil.java | 3 +- .../command => commands}/ExecutionState.java | 2 +- .../TerraCommandManager.java | 4 +- .../dfsek/terra/config/GenericLoaders.java | 51 +------- .../terra/config/pack/ConfigPackImpl.java | 44 +------ .../terra/config/pack/ConfigPackTemplate.java | 10 -- .../terra/config/pack/WorldConfigImpl.java | 10 +- .../registry/config/ConfigTypeRegistry.java | 28 ---- .../com/dfsek/terra/world/TerraWorldImpl.java | 4 +- .../generators/DefaultChunkGenerator2D.java | 121 ------------------ .../generators/DefaultChunkGenerator3D.java | 73 +---------- .../interpolation/ElevationInterpolator.java | 5 +- .../src/test/java/command/CommandTest.java | 2 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- 50 files changed, 38 insertions(+), 359 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage}/StageBuilderLoader.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/registry/config => addons/palette/src/main/java/com/dfsek/terra/addons/palette}/PaletteRegistry.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/locate => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/AsyncStructureFinder.java (97%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/SpawnCommand.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/StructureCommand.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/StructureExportCommand.java (98%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/StructureLoadCommand.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/StructureLocateCommand.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/argument/ScriptArgumentParser.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/argument/StructureArgumentParser.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/completer/RotationCompleter.java (83%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/completer/ScriptCompleter.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/structure/src/main/java/com/dfsek/terra/addons/structure/command}/structure/completer/StructureCompleter.java (90%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/CommandManager.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/Command.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java (100%) rename common/implementation/src/main/java/com/dfsek/terra/{api/command => commands}/ExecutionState.java (95%) rename common/implementation/src/main/java/com/dfsek/terra/{api/command => commands}/TerraCommandManager.java (98%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java index 7eec745bc..337a7ee7d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.biome; +package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java index 2971c5c59..67c52e131 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.registry.config; +package com.dfsek.terra.addons.palette; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index 325c9d681..e0648356e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.locate; +package com.dfsek.terra.addons.structure.command; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.ConfiguredStructure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/SpawnCommand.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/SpawnCommand.java index e4b43abe2..5d980266d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/SpawnCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure; +package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java index fa44f2e08..cd84be60c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure; +package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java index 3448fe3d1..e0e658449 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure; +package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index e8de3b413..c215db421 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLoadCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure; +package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; @@ -17,9 +17,9 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.commands.structure.argument.ScriptArgumentParser; -import com.dfsek.terra.commands.structure.completer.RotationCompleter; -import com.dfsek.terra.commands.structure.completer.ScriptCompleter; +import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; +import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; import java.util.concurrent.ThreadLocalRandom; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index b89db1ddc..ae1441575 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureLocateCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure; +package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; @@ -15,8 +15,8 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.commands.structure.argument.StructureArgumentParser; -import com.dfsek.terra.commands.structure.completer.StructureCompleter; +import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.world.population.items.TerraStructure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index 2e97e2a3a..ff66a9043 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/ScriptArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure.argument; +package com.dfsek.terra.addons.structure.command.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 84fb271f8..95ab9562e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/argument/StructureArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure.argument; +package com.dfsek.terra.addons.structure.command.structure.argument; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java index 3adf7e09b..92ce61184 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/RotationCompleter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure.completer; +package com.dfsek.terra.addons.structure.command.structure.completer; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java index b14760722..04116b97b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/ScriptCompleter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure.completer; +package com.dfsek.terra.addons.structure.command.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index 7d5d963e9..bc1627675 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/completer/StructureCompleter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.structure.completer; +package com.dfsek.terra.addons.structure.command.structure.completer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java b/common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/CommandManager.java rename to common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java b/common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java rename to common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Command.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Command.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java rename to common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java rename to common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java rename to common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java rename to common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java rename to common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java rename to common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java rename to common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java rename to common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java rename to common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java rename to common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java b/common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java rename to common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java b/common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java rename to common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java index 3d2e3423a..98fc37a80 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java @@ -4,11 +4,10 @@ import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.commands.biome.BiomeCommand; import com.dfsek.terra.commands.profiler.ProfileCommand; -import com.dfsek.terra.commands.structure.StructureCommand; +import com.dfsek.terra.addons.structure.command.structure.StructureCommand; public final class CommandUtil { public static void registerAll(CommandManager manager) throws MalformedCommandException { - manager.register("structure", StructureCommand.class); manager.register("profile", ProfileCommand.class); manager.register("reload", ReloadCommand.class); manager.register("addons", AddonsCommand.class); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java index 9c55b7a55..c429068fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/ExecutionState.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.command; +package com.dfsek.terra.commands; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java rename to common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 76370a7c3..3b08b8a27 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/command/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -1,6 +1,8 @@ -package com.dfsek.terra.api.command; +package com.dfsek.terra.commands; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.command.CommandManager; +import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index dc27ca205..b39606347 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; @@ -13,42 +12,14 @@ import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -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.api.world.palette.slant.SlantHolder; -import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; import com.dfsek.terra.config.loaders.RangeLoader; -import com.dfsek.terra.config.loaders.config.FloraLayerLoader; -import com.dfsek.terra.config.loaders.config.GridSpawnLoader; -import com.dfsek.terra.config.loaders.config.OreConfigLoader; -import com.dfsek.terra.config.loaders.config.OreHolderLoader; -import com.dfsek.terra.config.loaders.config.TreeLayerLoader; import com.dfsek.terra.config.loaders.config.biome.BiomeProviderBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.SourceBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.StageBuilderLoader; import com.dfsek.terra.config.loaders.config.biome.templates.source.NoiseSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.addons.palette.palette.CarverPaletteLoader; -import com.dfsek.terra.addons.palette.palette.PaletteHolderLoader; -import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; -import com.dfsek.terra.addons.palette.palette.slant.SlantHolderLoader; -import com.dfsek.terra.addons.flora.flora.FloraLayer; -import com.dfsek.terra.addons.flora.flora.TerraFlora; -import com.dfsek.terra.addons.ore.ores.OreConfig; -import com.dfsek.terra.addons.ore.ores.OreHolder; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.LinkedHashMap; @@ -63,34 +34,14 @@ public class GenericLoaders implements LoaderRegistrar { public void register(TypeRegistry registry) { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) - .registerLoader(GridSpawn.class, new GridSpawnLoader()) - .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) - .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) - .registerLoader(SlantHolder.class, new SlantHolderLoader()) - .registerLoader(FloraLayer.class, new FloraLayerLoader()) - .registerLoader(OreConfig.class, new OreConfigLoader()) - .registerLoader(TreeLayer.class, new TreeLayerLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) - .registerLoader(OreHolder.class, new OreHolderLoader()) - .registerLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) - .registerLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) - .registerLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) - .registerLoader(ReplaceListMutatorTemplate.class, ReplaceListMutatorTemplate::new) - .registerLoader(BorderMutatorTemplate.class, BorderMutatorTemplate::new) - .registerLoader(BorderListMutatorTemplate.class, BorderListMutatorTemplate::new) .registerLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) - .registerLoader(FunctionTemplate.class, FunctionTemplate::new) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) - .registerLoader(CarverPalette.class, new CarverPaletteLoader()) .registerLoader(SourceSeeded.class, new SourceBuilderLoader()) .registerLoader(StageSeeded.class, new StageBuilderLoader()) .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) - .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)) - .registerLoader(ImageBiomeProvider.Align.class, (t, object, cf) -> ImageBiomeProvider.Align.valueOf((String) object)) - .registerLoader(ExpanderStage.Type.class, (t, object, cf) -> ExpanderStage.Type.valueOf((String) object)) - .registerLoader(MutatorStage.Type.class, (t, object, cf) -> MutatorStage.Type.valueOf((String) object)) - .registerLoader(TerraFlora.Search.class, (t, o, l) -> TerraFlora.Search.valueOf(o.toString())); + .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)); if(main != null) { registry.registerLoader(TerraAddon.class, main.getAddons()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 6746ad28b..1b5b76fee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -19,55 +19,41 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.addons.structure.structures.loot.LootTableImpl; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.StructureScript; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.Loader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.BiomePipelineTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProviderTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; import com.dfsek.terra.world.TerraWorldImpl; -import com.dfsek.terra.world.population.items.TerraStructure; -import org.apache.commons.io.IOUtils; -import org.json.simple.parser.ParseException; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; + /** * Represents a Terra configuration pack. */ @@ -196,7 +182,6 @@ public class ConfigPackImpl implements ConfigPack { }; putPair(map, NoiseProvider.class, new NoiseRegistry()); - putPair(map, FunctionBuilder.class, new OpenRegistryImpl<>()); putPair(map, LootTable.class, new OpenRegistryImpl<>()); putPair(map, Structure.class, new OpenRegistryImpl<>()); @@ -233,25 +218,6 @@ public class ConfigPackImpl implements ConfigPack { varScope.create(var.getKey(), var.getValue()); } - loader.open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try(InputStream stream = entry.getValue()) { - Structure structure = new StructureScript(stream, main, getRegistry(Structure.class), getRegistry(LootTable.class), (Registry>) (Object) getRegistry(FunctionBuilder.class)); - getOpenRegistry(Structure.class).add(structure.getId(), structure); - } catch(com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException | IOException e) { - throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); - } - } - }).close().open("structures/loot", ".json").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); - } catch(ParseException | IOException | NullPointerException e) { - throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); - } - } - }).close(); - List configurations = new ArrayList<>(); loader.open("", ".yml").thenEntries(entries -> entries.forEach(stream -> configurations.add(new Configuration(stream.getValue(), stream.getKey())))); @@ -275,9 +241,6 @@ public class ConfigPackImpl implements ConfigPack { } - public Set getStructures() { - return new HashSet<>(getRegistry(TerraStructure.class).entries()); - } public ConfigPackTemplate getTemplate() { return template; @@ -309,10 +272,7 @@ public class ConfigPackImpl implements ConfigPack { public void register(TypeRegistry registry) { registry .registerLoader(ConfigType.class, configTypeRegistry) - .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)) - .registerLoader(SingleBiomeProviderTemplate.class, SingleBiomeProviderTemplate::new) - .registerLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .registerLoader(ImageProviderTemplate.class, () -> new ImageProviderTemplate(getRegistry(BiomeBuilder.class))); + .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)); loaders.forEach(registry::registerLoader); objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index d1b767d04..de34e4213 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -5,11 +5,9 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -33,10 +31,6 @@ public class ConfigPackTemplate implements ConfigTemplate { @Default private boolean betaCarvers = false; - @Value("functions") - @Default - private LinkedHashMap functions = new LinkedHashMap<>(); - @Value("structures.locatable") @Default private Map locatable = new HashMap<>(); @@ -113,10 +107,6 @@ public class ConfigPackTemplate implements ConfigTemplate { return disableTrees; } - public LinkedHashMap getFunctions() { - return functions; - } - public String getVersion() { return version; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index e8bc0fe7a..5754ea379 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -4,21 +4,17 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.generation.math.SamplerCacheImpl; -import com.dfsek.terra.world.population.items.TerraStructure; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; public class WorldConfigImpl implements WorldConfig { private final SamplerCache samplerCache; @@ -120,10 +116,6 @@ public class WorldConfigImpl implements WorldConfig { return getTemplate().isDisableSaplings(); } - public Set getStructures() { - return new HashSet<>(getRegistry(TerraStructure.class).entries()); - } - public ConfigPackTemplate getTemplate() { return pack.getTemplate(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 488ba91d0..58e32a83e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -8,29 +8,8 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.factories.BiomeFactory; -import com.dfsek.terra.config.factories.CarverFactory; -import com.dfsek.terra.config.factories.FloraFactory; -import com.dfsek.terra.config.factories.OreFactory; -import com.dfsek.terra.config.factories.PaletteFactory; -import com.dfsek.terra.config.factories.StructureFactory; -import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.config.templates.CarverTemplate; -import com.dfsek.terra.config.templates.FloraTemplate; -import com.dfsek.terra.config.templates.OreTemplate; -import com.dfsek.terra.config.templates.PaletteTemplate; -import com.dfsek.terra.config.templates.StructureTemplate; -import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.addons.ore.ores.Ore; import java.util.LinkedHashMap; import java.util.function.BiConsumer; @@ -42,13 +21,6 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; - add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); - add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OpenRegistryImpl::new)); - add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, OpenRegistryImpl::new)); - add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, OpenRegistryImpl::new)); - add("STRUCTURE", new ConfigBuilder<>(new StructureFactory(), StructureTemplate::new, TerraStructure.class, OpenRegistryImpl::new)); - add("TREE", new ConfigBuilder<>(new TreeFactory(), TreeTemplate::new, Tree.class, OpenRegistryImpl::new)); - add("BIOME", new ConfigBuilder<>(new BiomeFactory(pack), () -> new BiomeTemplate(pack, main), BiomeBuilder.class, BiomeRegistry::new)); add("PACK", new PackBuilder()); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index feb2eb753..a0e8269d6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; @@ -57,7 +57,7 @@ public class TerraWorldImpl implements TerraWorld { @Override public BlockState getUngeneratedBlock(int x, int y, int z) { - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(x, z); + TerraBiome biome = provider.getBiome(x, z); Palette palette = biome.getGenerator(world).getPalette(y); Sampler sampler = config.getSamplerCache().get(x, z); int fdX = FastMath.floorMod(x, 16); diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java deleted file mode 100644 index fe497790d..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.dfsek.terra.world.generation.generators; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; -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.world.BiomeGrid; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -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.SamplerCache; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.Carver; -import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.world.generation.math.samplers.Sampler2D; -import com.dfsek.terra.world.population.CavePopulator; -import com.dfsek.terra.world.population.OrePopulator; -import com.dfsek.terra.world.population.StructurePopulator; -import com.dfsek.terra.world.population.TreePopulator; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class DefaultChunkGenerator2D implements TerraChunkGenerator { - private final ConfigPackImpl configPack; - private final TerraPlugin main; - - private final Carver carver; - private final List blockPopulators = new ArrayList<>(); - - private final SamplerCache cache; - - public DefaultChunkGenerator2D(ConfigPackImpl c, TerraPlugin main, SamplerCache cache) { - this.configPack = c; - this.main = main; - blockPopulators.add(new CavePopulator(main)); - blockPopulators.add(new StructurePopulator(main)); - blockPopulators.add(new OrePopulator(main)); - blockPopulators.add(new TreePopulator(main)); - blockPopulators.add(new TreePopulator(main)); - carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); - this.cache = cache; - } - - @Override - public ConfigPackImpl getConfigPack() { - return configPack; - } - - @Override - public TerraPlugin getMain() { - return main; - } - - @Override - @SuppressWarnings({"try"}) - public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { - TerraWorld tw = main.getWorld(world); - BiomeProvider grid = tw.getBiomeProvider(); - try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_2d")) { - if(!tw.isSafe()) return chunk; - int xOrig = (chunkX << 4); - int zOrig = (chunkZ << 4); - - Sampler sampler = cache.getChunk(chunkX, chunkZ); - - for(int x = 0; x < 16; x++) { - for(int z = 0; z < 16; z++) { - int paletteLevel = 0; - int seaPaletteLevel = 0; - - int cx = xOrig + x; - int cz = zOrig + z; - - TerraBiome b = grid.getBiome(xOrig + x, zOrig + z); - BiomeTemplate c = ((UserDefinedBiome) b).getConfig(); - - Palette seaPalette = c.getOceanPalette(); - - int height = FastMath.min((int) sampler.sample(x, 0, z), world.getMaxHeight() - 1); - - for(int y = FastMath.max(height, c.getSeaLevel()); y >= 0; y--) { - BlockState data = y > height ? seaPalette.get(seaPaletteLevel++, cx, y, cz) : PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel++, cx, y, cz); - chunk.setBlock(x, y, z, data); - } - } - } - if(configPack.getTemplate().doBetaCarvers()) { - carver.carve(world, chunkX, chunkZ, chunk); - } - return chunk; - } - } - - @Override - public void generateBiomes(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome) { - DefaultChunkGenerator3D.biomes(world, chunkX, chunkZ, biome, main); - } - - @Override - public Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth) { - return new Sampler2D(chunkX, chunkZ, provider, world, elevationSmooth); - } - - @Override - public List getPopulators() { - return blockPopulators; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 1bd6e9e33..99062580c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -27,11 +27,6 @@ import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; -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; -import com.dfsek.terra.world.population.TreePopulator; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -42,7 +37,6 @@ import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - private final BlockType water; private final PaletteImpl.Singleton blank; private final List blockPopulators = new ArrayList<>(); @@ -52,14 +46,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { this.configPack = c; this.main = main; - blockPopulators.add(new CavePopulator(main)); - blockPopulators.add(new StructurePopulator(main)); - blockPopulators.add(new OrePopulator(main)); - blockPopulators.add(new TreePopulator(main)); - blockPopulators.add(new FloraPopulator(main)); - carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); - water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType(); blank = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:air")); } @@ -106,22 +93,15 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { justSet = true; data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); - if(paletteLevel == 0 && c.doSlabs() && y < 255) { - prepareBlockPartFloor(data, chunk.getBlock(x, y + 1, z), chunk, new Vector3(x, y + 1, z), c.getSlabPalettes(), - c.getStairPalettes(), c.getSlabThreshold(), sampler); - } + paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); - if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); - } + justSet = false; paletteLevel = 0; } else { - if(justSet && c.doSlabs()) { - prepareBlockPartCeiling(data, chunk.getBlock(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler); - } + justSet = false; paletteLevel = 0; } @@ -135,51 +115,6 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } - private void prepareBlockPartFloor(BlockState down, BlockState orig, ChunkData chunk, Vector3 block, Map slabs, - Map stairs, double thresh, Sampler sampler) { - if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) { - if(stairs != null) { - Palette stairPalette = stairs.get(down.getBlockType()); - if(stairPalette != null) { - BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); - if(stair.has(Properties.DIRECTION)) { - BlockState stairNew = stair.clone(); - if(placeStair(orig, chunk, block, thresh, sampler, stairNew)) return; // Successfully placed part. - } - } - } - BlockState slab = slabs.getOrDefault(down.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()) - .setIfPresent(Properties.WATERLOGGED, orig.getBlockType().equals(water)); - - if(orig.getBlockType().equals(water)) return; - chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); - } - } - - private void prepareBlockPartCeiling(BlockState up, BlockState orig, ChunkData chunk, Vector3 block, Map slabs, - Map stairs, double thresh, Sampler sampler) { - if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) { - if(stairs != null) { - Palette stairPalette = stairs.get(up.getBlockType()); - if(stairPalette != null) { - BlockState stair = stairPalette.get(0, block.getX(), block.getY(), block.getZ()).clone(); - stair.setIfPresent(Properties.HALF, Half.TOP); - if(stair.has(Properties.DIRECTION)) { - BlockState stairNew = stair.clone(); - if(placeStair(orig, chunk, block, thresh, sampler, stairNew)) return; // Successfully placed part. - } - } - } - BlockState slab = slabs.getOrDefault(up.getBlockType(), blank).get(0, block.getX(), block.getY(), block.getZ()).clone(); - slab.setIfPresent(Properties.HALF, Half.TOP); - - slab.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); - if(orig.getBlockType().equals(water)) return; - - chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), slab); - } - } - private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, BlockState stairNew) { if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { @@ -192,7 +127,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { stairNew.set(Properties.DIRECTION, Direction.EAST); } else stairNew = null; if(stairNew != null) { - stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().equals(water)); + stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); return true; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java index fc7c0b5c3..b65efe531 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java @@ -3,7 +3,6 @@ package com.dfsek.terra.world.generation.math.interpolation; 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.world.generation.WorldGenerator; public class ElevationInterpolator { private final double[][] values = new double[18][18]; @@ -12,12 +11,12 @@ public class ElevationInterpolator { int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; - WorldGenerator[][] gens = new WorldGenerator[18 + 2 * smooth][18 + 2 * smooth]; + Generator[][] gens = new Generator[18 + 2 * smooth][18 + 2 * smooth]; // Precompute generators. for(int x = -1 - smooth; x <= 16 + smooth; x++) { for(int z = -1 - smooth; z <= 16 + smooth; z++) { - gens[x + 1 + smooth][z + 1 + smooth] = (WorldGenerator) provider.getBiome(xOrigin + x, zOrigin + z).getGenerator(world); + gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z).getGenerator(world); } } diff --git a/common/implementation/src/test/java/command/CommandTest.java b/common/implementation/src/test/java/command/CommandTest.java index 3aa0ccf89..3b6665a6b 100644 --- a/common/implementation/src/test/java/command/CommandTest.java +++ b/common/implementation/src/test/java/command/CommandTest.java @@ -2,7 +2,7 @@ package command; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.TerraCommandManager; +import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; 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 4d01b8ed4..e953db16f 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,7 @@ 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.api.command.TerraCommandManager; +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; 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 088174c47..e1263cd5e 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 @@ -14,7 +14,7 @@ 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.api.command.TerraCommandManager; +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; From 54f4722297dfc20fb460947cda3ac6cb8e3912fd Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 4 Jul 2021 19:59:46 -0700 Subject: [PATCH 0095/1529] implementation compiles now --- .../addons/biome}/NoiseSourceTemplate.java | 2 +- .../terra/addons/biome}/OreConfigLoader.java | 2 +- .../terra/addons/biome}/OreHolderLoader.java | 2 +- .../terra/addons/biome}/SourceTemplate.java | 2 +- .../biome/command}/biome/BiomeCommand.java | 2 +- .../command}/biome/BiomeInfoCommand.java | 4 +- .../command}/biome/BiomeLocateCommand.java | 6 +- .../biome/arg/BiomeArgumentParser.java | 2 +- .../command}/biome/tab/BiomeTabCompleter.java | 2 +- .../pipeline/config}/SourceBuilderLoader.java | 2 +- .../test/java/structure/LookaheadTest.java | 0 .../src/test/java/structure/ParserTest.java | 0 .../terra/addons/tree}/TreeLayerLoader.java | 4 +- .../dfsek/terra/api/handle/WorldHandle.java | 2 + .../terra/api/world/biome/Generator.java | 8 +- .../api/world/biome/PaletteSettings.java | 7 + .../com/dfsek/terra/api/util/PaletteUtil.java | 10 +- .../com/dfsek/terra/commands/CommandUtil.java | 4 +- .../dfsek/terra/config/GenericLoaders.java | 12 - .../biome/BiomeProviderBuilderLoader.java | 35 --- .../provider/BiomeProviderTemplate.java | 2 - .../terra/config/pack/ConfigPackImpl.java | 4 +- .../com/dfsek/terra/world/TerraWorldImpl.java | 8 +- .../generators/DefaultChunkGenerator3D.java | 18 +- .../src/test/java/noise/NoiseTool.java | 206 ------------------ .../dfsek/terra/fabric/TerraFabricPlugin.java | 4 +- 26 files changed, 47 insertions(+), 303 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/NoiseSourceTemplate.java (90%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/OreConfigLoader.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/OreHolderLoader.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome}/SourceTemplate.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command}/biome/BiomeCommand.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command}/biome/BiomeInfoCommand.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command}/biome/BiomeLocateCommand.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command}/biome/arg/BiomeArgumentParser.java (91%) rename common/{implementation/src/main/java/com/dfsek/terra/commands => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command}/biome/tab/BiomeTabCompleter.java (92%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/SourceBuilderLoader.java (94%) rename common/{implementation => addons/structure}/src/test/java/structure/LookaheadTest.java (100%) rename common/{implementation => addons/structure}/src/test/java/structure/ParserTest.java (100%) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config => addons/tree/src/main/java/com/dfsek/terra/addons/tree}/TreeLayerLoader.java (96%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java delete mode 100644 common/implementation/src/test/java/noise/NoiseTool.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java index 49c1bf0d6..731eddb87 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.source; +package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java index 62df379f1..cee617f8b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreConfigLoader.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config; +package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java index d7640bd5f..b62155ae6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/OreHolderLoader.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config; +package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java index b6c14f2b8..48845fa09 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SourceTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.source; +package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.SourceSeeded; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index 1a68da9dd..4a2dd3d27 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.biome; +package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java index 205376de8..19631ef74 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.biome; +package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -8,8 +8,6 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; -import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.population.items.TerraStructure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java index 38486b28a..fd7d749ae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/BiomeLocateCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java @@ -1,5 +1,6 @@ -package com.dfsek.terra.commands.biome; +package com.dfsek.terra.addons.biome.command.biome; +import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -16,8 +17,7 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; -import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; -import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; +import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; import com.dfsek.terra.config.lang.LangUtil; import java.util.Locale; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java similarity index 91% rename from common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java index 23ec861e2..d15110df7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/arg/BiomeArgumentParser.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.biome.arg; +package com.dfsek.terra.addons.biome.command.biome.arg; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.arg.ArgumentParser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java index 7bc9e58b1..152925211 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/biome/tab/BiomeTabCompleter.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.commands.biome.tab; +package com.dfsek.terra.addons.biome.command.biome.tab; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java index b1fab8212..fffc5d46c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.biome; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/test/java/structure/LookaheadTest.java b/common/addons/structure/src/test/java/structure/LookaheadTest.java similarity index 100% rename from common/implementation/src/test/java/structure/LookaheadTest.java rename to common/addons/structure/src/test/java/structure/LookaheadTest.java diff --git a/common/implementation/src/test/java/structure/ParserTest.java b/common/addons/structure/src/test/java/structure/ParserTest.java similarity index 100% rename from common/implementation/src/test/java/structure/ParserTest.java rename to common/addons/structure/src/test/java/structure/ParserTest.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java rename to common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java index 8d93e33af..5ead643d3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java @@ -1,15 +1,15 @@ -package com.dfsek.terra.config.loaders.config; +package com.dfsek.terra.addons.tree; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 4bd71e014..0e0b2e06f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -12,6 +12,8 @@ import com.dfsek.terra.api.vector.Vector3; public interface WorldHandle { BlockState createBlockData(String data); + BlockState air(); + EntityType getEntity(String id); /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index ff446a90e..7358da114 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -29,13 +29,7 @@ public interface Generator { double getWeight(); - /** - * Gets the BlocPalette to generate the biome with. - * - * @return BlocPalette - The biome's palette. - */ - Palette getPalette(int y); - + PaletteSettings getPaletteSettings(); NoiseSampler getBiomeNoise(); double getElevationWeight(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java new file mode 100644 index 000000000..fdbf7f048 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.biome; + +import com.dfsek.terra.api.world.generator.Palette; + +public interface PaletteSettings { + Palette getPalette(int y); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java index b16ebafba..d55083238 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.util; +import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; -import com.dfsek.terra.api.world.palette.slant.SlantHolder; -import com.dfsek.terra.config.templates.BiomeTemplate; public final class PaletteUtil { - public static Palette getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { + public static Palette getPalette(int x, int y, int z, Generator c, Sampler sampler) { + /* SlantHolder slant = c.getSlant(); if(slant != null) { double slope = MathUtil.derivative(sampler, x, y, z); @@ -16,6 +16,8 @@ public final class PaletteUtil { } } - return c.getPalette().getPalette(y); + */ + + return c.getPaletteSettings().getPalette(y); } } \ No newline at end of file diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java index 98fc37a80..4db697c59 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java @@ -2,9 +2,7 @@ package com.dfsek.terra.commands; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; -import com.dfsek.terra.commands.biome.BiomeCommand; import com.dfsek.terra.commands.profiler.ProfileCommand; -import com.dfsek.terra.addons.structure.command.structure.StructureCommand; public final class CommandUtil { public static void registerAll(CommandManager manager) throws MalformedCommandException { @@ -14,6 +12,6 @@ public final class CommandUtil { manager.register("version", VersionCommand.class); manager.register("getblock", GetBlockCommand.class); manager.register("packs", PacksCommand.class); - manager.register("biome", BiomeCommand.class); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index b39606347..260c4e56a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -8,18 +8,11 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; import com.dfsek.terra.config.loaders.RangeLoader; -import com.dfsek.terra.config.loaders.config.biome.BiomeProviderBuilderLoader; -import com.dfsek.terra.config.loaders.config.biome.SourceBuilderLoader; -import com.dfsek.terra.config.loaders.config.biome.StageBuilderLoader; -import com.dfsek.terra.config.loaders.config.biome.templates.source.NoiseSourceTemplate; import java.util.LinkedHashMap; @@ -35,12 +28,7 @@ public class GenericLoaders implements LoaderRegistrar { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) - .registerLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) - .registerLoader(SourceSeeded.class, new SourceBuilderLoader()) - .registerLoader(StageSeeded.class, new StageBuilderLoader()) - .registerLoader(BiomeProvider.BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()) - .registerLoader(BiomeProvider.Type.class, (t, object, cf) -> BiomeProvider.Type.valueOf((String) object)) .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)); if(main != null) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java deleted file mode 100644 index 4c65f11fd..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java +++ /dev/null @@ -1,35 +0,0 @@ -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.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.BiomePipelineTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.ImageProviderTemplate; -import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiomeProviderTemplate; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class BiomeProviderBuilderLoader implements TypeLoader { - - public BiomeProviderBuilderLoader() { - } - - @Override - public BiomeProvider.BiomeProviderBuilder load(Type t, Object c, ConfigLoader loader) throws LoadException { // TODO: clean this up - Map map = (Map) c; - - switch(loader.loadClass(BiomeProvider.Type.class, map.get("type"))) { - case IMAGE: - return loader.loadClass(ImageProviderTemplate.class, map); - case PIPELINE: - return loader.loadClass(BiomePipelineTemplate.class, map); - case SINGLE: - return loader.loadClass(SingleBiomeProviderTemplate.class, map); - } - - throw new LoadException("No such biome provider type: " + map.get("type")); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index ae8b69314..015b19fba 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -3,10 +3,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.provider; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.noise.samplers.noise.ConstantSampler; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProvider.BiomeProviderBuilder { @Value("resolution") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 1b5b76fee..1c52dc68d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -256,9 +256,10 @@ public class ConfigPackImpl implements ConfigPack { return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); } + @SuppressWarnings("unchecked") @Override public CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { - return null; + return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); } @SuppressWarnings("unchecked") @@ -273,6 +274,7 @@ public class ConfigPackImpl implements ConfigPack { registry .registerLoader(ConfigType.class, configTypeRegistry) .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)); + registryMap.forEach((clazz, reg) -> registry.registerLoader(clazz, reg.getLeft())); loaders.forEach(registry::registerLoader); objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index a0e8269d6..c7c1e023f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -27,8 +27,8 @@ public class TerraWorldImpl implements TerraWorld { this.world = w; config = (WorldConfigImpl) c.toWorldConfig(this); this.provider = config.getProvider(); - air = main.getWorldHandle().createBlockData("minecraft:air"); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); + this.air = main.getWorldHandle().air(); safe = true; } @@ -58,7 +58,7 @@ public class TerraWorldImpl implements TerraWorld { @Override public BlockState getUngeneratedBlock(int x, int y, int z) { TerraBiome biome = provider.getBiome(x, z); - Palette palette = biome.getGenerator(world).getPalette(y); + Palette palette = biome.getGenerator(world).getPaletteSettings().getPalette(y); Sampler sampler = config.getSamplerCache().get(x, z); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); @@ -70,9 +70,9 @@ public class TerraWorldImpl implements TerraWorld { else level = 0; } return palette.get(level, x, y, z); - } else if(y <= biome.getConfig().getSeaLevel()) { + } /* else if(y <= biome.getConfig().getSeaLevel()) { return biome.getConfig().getOceanPalette().get(biome.getConfig().getSeaLevel() - y, x, y, z); - } else return air; + } */else return air; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java index 99062580c..bf5497052 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java @@ -14,16 +14,14 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; 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.api.world.palette.PaletteImpl; -import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.carving.NoiseCarver; import com.dfsek.terra.world.generation.math.samplers.Sampler3D; @@ -37,7 +35,6 @@ import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - private final PaletteImpl.Singleton blank; private final List blockPopulators = new ArrayList<>(); private final Carver carver; @@ -47,7 +44,6 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { this.main = main; carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); - blank = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:air")); } @Override @@ -81,26 +77,26 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { int cz = zOrig + z; TerraBiome b = grid.getBiome(cx, cz); - BiomeTemplate c = ((UserDefinedBiome) b).getConfig(); + Generator g = b.getGenerator(world); - int sea = c.getSeaLevel(); - Palette seaPalette = c.getOceanPalette(); + //int sea = c.getSeaLevel(); + //Palette seaPalette = c.getOceanPalette(); boolean justSet = false; BlockState data = null; for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { if(sampler.sample(x, y, z) > 0) { justSet = true; - data = PaletteUtil.getPalette(x, y, z, c, sampler).get(paletteLevel, cx, y, cz); + data = PaletteUtil.getPalette(x, y, z, g, sampler).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); paletteLevel++; - } else if(y <= sea) { + } /*else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); justSet = false; paletteLevel = 0; - } else { + } */else { justSet = false; paletteLevel = 0; diff --git a/common/implementation/src/test/java/noise/NoiseTool.java b/common/implementation/src/test/java/noise/NoiseTool.java deleted file mode 100644 index 063d044c7..000000000 --- a/common/implementation/src/test/java/noise/NoiseTool.java +++ /dev/null @@ -1,206 +0,0 @@ -package noise; - -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.config.GenericLoaders; -import com.dfsek.terra.config.fileloaders.FolderLoader; -import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; -import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; -import com.dfsek.terra.registry.config.NoiseRegistry; -import org.apache.commons.io.FileUtils; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.nio.file.Paths; -import java.util.concurrent.ThreadLocalRandom; -import java.util.concurrent.atomic.AtomicInteger; - -public class NoiseTool { - public static void main(String... args) throws ConfigException, IOException { - JFrame frame = new JFrame("Noise Viewer"); - - AtomicInteger seed = new AtomicInteger(2403); - JLabel label = new JLabel(new ImageIcon(load(seed.get(), false, false))); - frame.add(label); - frame.pack(); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - - - frame.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - if(e.getKeyChar() == 'r') { - try { - label.setIcon(new ImageIcon(load(seed.get(), false, false))); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - } else if(e.getKeyChar() == 's') { - try { - seed.set(ThreadLocalRandom.current().nextInt()); - label.setIcon(new ImageIcon(load(seed.get(), false, false))); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - } else if(e.getKeyChar() == 'd') { - try { - label.setIcon(new ImageIcon(load(seed.get(), true, false))); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - } else if(e.getKeyChar() == 'c') { - try { - label.setIcon(new ImageIcon(load(seed.get(), false, true))); - } catch(ConfigException | IOException configException) { - configException.printStackTrace(); - } - } - } - - @Override - public void keyPressed(KeyEvent e) { - } - - @Override - public void keyReleased(KeyEvent e) { - } - }); - - frame.setVisible(true); - } - - private static int normal(double in, double out, double min, double max) { - double range = max - min; - return (int) (((in - min) * out) / range); - } - - private static int buildRGBA(int in) { - return (255 << 24) - + (in << 16) - + (in << 8) - + in; - } - - private static BufferedImage load(int seed, boolean distribution, boolean chunk) throws ConfigException, IOException { - long s = System.nanoTime(); - - FolderLoader folderLoader = new FolderLoader(Paths.get("./")); - - ConfigLoader loader = new ConfigLoader(); - loader.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(new NoiseRegistry())) - .registerLoader(BufferedImage.class, new BufferedImageLoader(folderLoader)) - .registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()); - - new GenericLoaders(null).register(loader); - NoiseConfigTemplate template = new NoiseConfigTemplate(); - - File file = new File("./config.yml"); - - System.out.println(file.getAbsolutePath()); - - File colorFile = new File("./color.yml"); - - - System.out.println(file.getAbsolutePath()); - if(!file.exists()) { - file.getParentFile().mkdirs(); - FileUtils.copyInputStreamToFile(NoiseTool.class.getResourceAsStream("/config.yml"), file); - } - - - boolean colors = false; - ColorConfigTemplate color = new ColorConfigTemplate(); - if(colorFile.exists()) { - loader.load(color, new FileInputStream(colorFile)); - colors = color.enable(); - } - ProbabilityCollectionImpl colorCollection = color.getColors(); - - loader.load(template, new FileInputStream(file)); - System.out.println(template.getBuilder().getDimensions()); - NoiseSampler noise = template.getBuilder().apply((long) seed); - - - int size = 1024; - - BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); - - double[][] noiseVals = new double[size][size]; - int[][] rgbVals = new int[size][size]; - double max = Double.MIN_VALUE; - double min = Double.MAX_VALUE; - - int[] buckets = new int[1024]; - - for(int x = 0; x < noiseVals.length; x++) { - for(int z = 0; z < noiseVals[x].length; z++) { - double n = noise.getNoise(x, z); - noiseVals[x][z] = n; - max = Math.max(n, max); - min = Math.min(n, min); - if(colors) rgbVals[x][z] = colorCollection.get(noise, x, z); - } - } - - for(int x = 0; x < noiseVals.length; x++) { - for(int z = 0; z < noiseVals[x].length; z++) { - if(colors) image.setRGB(x, z, rgbVals[x][z] + (255 << 24)); - else image.setRGB(x, z, buildRGBA(normal(noiseVals[x][z], 255, min, max))); - buckets[normal(noiseVals[x][z], size - 1, min, max)]++; - } - } - - long time = System.nanoTime() - s; - - double ms = time / 1000000d; - - - if(chunk) { - for(int x = 0; x < image.getWidth(); x += 16) { - for(int y = 0; y < image.getHeight(); y++) image.setRGB(x, y, buildRGBA(0)); - } - for(int y = 0; y < image.getWidth(); y += 16) { - for(int x = 0; x < image.getHeight(); x++) image.setRGB(x, y, buildRGBA(0)); - } - } - - Graphics graphics = image.getGraphics(); - graphics.setColor(Color.WHITE); - graphics.fillRect(0, 0, 325, 90); - graphics.setColor(Color.BLACK); - graphics.setFont(new Font("Monospace", Font.BOLD, 20)); - graphics.drawString("min: " + min, 0, 20); - graphics.drawString("max: " + max, 0, 40); - graphics.drawString("seed: " + seed, 0, 60); - graphics.drawString("time: " + ms + "ms", 0, 80); - - if(distribution) { - graphics.setColor(Color.WHITE); - graphics.fillRect(0, size - (size / 4) - 1, size, (size / 4) - 1); - int highestBucket = Integer.MIN_VALUE; - for(int i : buckets) highestBucket = Math.max(highestBucket, i); - graphics.setColor(Color.BLACK); - graphics.drawString("" + highestBucket, 0, size - (size / 4) - 1 + 20); - - for(int x = 0; x < size; x++) { - for(int y = 0; y < ((double) buckets[x] / highestBucket) * ((double) size / 4); y++) { - image.setRGB(x, size - y - 1, buildRGBA(0)); - } - } - - } - - return image; - } -} 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 e1263cd5e..446ef3d02 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 @@ -14,7 +14,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; @@ -33,13 +32,14 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.logging.DebugLogger; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; 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.api.util.seeded.BiomeBuilder; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; From 2b2aa493b1c278c7fd13931b52cb8e866d2d23a0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 4 Jul 2021 21:34:59 -0700 Subject: [PATCH 0096/1529] compile Fabric --- .../fabric/generation/FabricChunkGeneratorWrapper.java | 9 ++------- .../dfsek/terra/fabric/generation/TerraBiomeSource.java | 4 ++-- .../com/dfsek/terra/fabric/handle/FabricWorldHandle.java | 7 +++++++ .../java/com/dfsek/terra/fabric/util/FabricUtil.java | 8 ++++---- 4 files changed, 15 insertions(+), 13 deletions(-) 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 2004f0221..ac8aa02b9 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 @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -9,13 +8,10 @@ import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; -import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; -import com.dfsek.terra.world.population.items.TerraStructure; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.block.BlockState; @@ -26,7 +22,6 @@ import net.minecraft.util.collection.Pool; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.registry.DynamicRegistryManager; -import net.minecraft.util.registry.Registry; import net.minecraft.world.ChunkRegion; import net.minecraft.world.HeightLimitView; import net.minecraft.world.Heightmap; @@ -45,9 +40,7 @@ import net.minecraft.world.gen.chunk.VerticalBlockSample; import net.minecraft.world.gen.feature.StructureFeature; import org.jetbrains.annotations.Nullable; -import java.util.Objects; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; public class FabricChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { @@ -113,6 +106,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Nullable @Override public BlockPos locateStructure(ServerWorld world, StructureFeature feature, BlockPos center, int radius, boolean skipExistingChunks) { + /* if(!pack.disableStructures()) { String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getId(feature)).toString(); TerraWorld terraWorld = TerraFabricPlugin.getInstance().getWorld((World) world); @@ -130,6 +124,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener } } } + */ return super.locateStructure(world, feature, center, radius, skipExistingChunks); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 7f38e22e6..3b43d6c96 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; @@ -53,7 +53,7 @@ public class TerraBiomeSource extends BiomeSource { @Override public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) { - UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(biomeX << 2, biomeZ << 2); + TerraBiome biome = grid.getBiome(biomeX << 2, biomeZ << 2); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index eed56dff1..08c64b28a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -11,6 +11,7 @@ import com.dfsek.terra.fabric.util.WorldEditUtil; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.command.argument.BlockArgumentParser; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -19,6 +20,7 @@ import java.util.Locale; public class FabricWorldHandle implements WorldHandle { + private static final com.dfsek.terra.api.block.state.BlockState AIR = FabricAdapter.adapt(Blocks.AIR.getDefaultState()); @Override public FabricBlockState createBlockData(String data) { BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true); @@ -31,6 +33,11 @@ public class FabricWorldHandle implements WorldHandle { } } + @Override + public com.dfsek.terra.api.block.state.BlockState air() { + return AIR; + } + @Override public EntityType getEntity(String id) { Identifier identifier = Identifier.tryParse(id); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 33ddc77f9..a97fe0e93 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; @@ -33,6 +32,7 @@ import net.minecraft.world.gen.feature.ConfiguredStructureFeature; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.function.Supplier; @@ -50,8 +50,8 @@ public final class FabricUtil { * @return The Minecraft delegate biome. */ public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { - BiomeTemplate template = biome.getTemplate(); - Map colors = template.getColors(); + // BiomeTemplate template = biome.getTemplate(); + Map colors = new HashMap<>(); // template.getColors(); TerraFabricPlugin.FabricAddon fabricAddon = TerraFabricPlugin.getInstance().getFabricAddon(); @@ -76,7 +76,7 @@ public final class FabricUtil { PreLoadCompatibilityOptions compatibilityOptions = pair.getLeft(); PostLoadCompatibilityOptions postLoadCompatibilityOptions = pair.getRight(); - TerraFabricPlugin.getInstance().getDebugLogger().info("Injecting Vanilla structures and features into Terra biome " + biome.getTemplate().getID()); + //TerraFabricPlugin.getInstance().getDebugLogger().info("Injecting Vanilla structures and features into Terra biome " + biome.getTemplate().getID()); Registry> configuredStructureFeatureRegistry = registryManager.get(Registry.CONFIGURED_STRUCTURE_FEATURE_KEY); for(Supplier> structureFeature : vanilla.getGenerationSettings().getStructureFeatures()) { From 19d482f24906255115c37f017ec96b080fea2990 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 4 Jul 2021 21:51:18 -0700 Subject: [PATCH 0097/1529] cleanup and config registering --- .../dfsek/terra/api/config/ConfigPack.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 22 ++++++++++++++----- .../registry/config/ConfigTypeRegistry.java | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) 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 f3fbf4f88..f0c09a41c 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 @@ -18,7 +18,7 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde WorldConfig toWorldConfig(TerraWorld world); - void registerConfigType(ConfigType type, int priority); + void registerConfigType(ConfigType type, String id, int priority); Set addons(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 1c52dc68d..d8f947c78 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -42,14 +42,17 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.Serial; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -77,9 +80,11 @@ public class ConfigPackImpl implements ConfigPack { private final ConfigTypeRegistry configTypeRegistry; private final Map, ImmutablePair, CheckedRegistry>> registryMap = newRegistryMap(); + private final TreeMap>>> configTypes = new TreeMap<>(); + public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { + this.configTypeRegistry = new ConfigTypeRegistry((id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); @@ -122,7 +127,7 @@ public class ConfigPackImpl implements ConfigPack { public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { + this.configTypeRegistry = new ConfigTypeRegistry((id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); @@ -168,9 +173,9 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } - @SuppressWarnings({"unchecked", "rawtypes"}) private Map, ImmutablePair, CheckedRegistry>> newRegistryMap() { Map, ImmutablePair, CheckedRegistry>> map = new HashMap, ImmutablePair, CheckedRegistry>>() { + @Serial private static final long serialVersionUID = 4015855819914064466L; @Override @@ -214,6 +219,8 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { + configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.add(pair.getLeft(), pair.getRight()))); + for(Map.Entry var : template.getVariables().entrySet()) { varScope.create(var.getKey(), var.getValue()); } @@ -291,8 +298,13 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public void registerConfigType(ConfigType type, int priority) { - + public void registerConfigType(ConfigType type, String id, int priority) { + Set contained = new HashSet<>(); + configTypes.forEach((p, configs) -> configs.forEach(pair -> { + if(contained.contains(pair.getLeft())) throw new IllegalArgumentException("Duplicate config ID: " + id); + contained.add(id); + })); + configTypes.computeIfAbsent(priority, p -> new ArrayList<>()).add(ImmutablePair.of(id, type)); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 58e32a83e..0f216b884 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -18,7 +18,7 @@ import java.util.function.Supplier; public class ConfigTypeRegistry extends OpenRegistryImpl> { private final BiConsumer> callback; - public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer> callback) { + public ConfigTypeRegistry(BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; add("PACK", new PackBuilder()); From 3364a75cec9cabe45f0449a7cb6b4fae3e7719ee Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 4 Jul 2021 23:11:08 -0700 Subject: [PATCH 0098/1529] build biome config addon --- .../terra/addons/biome/BiomeTemplate.java | 68 ++++++------------- .../terra/addons/biome}/BlankFunction.java | 2 +- .../terra/addons/biome/OreConfigLoader.java | 21 ------ .../terra/addons/biome/OreHolderLoader.java | 26 ------- .../addons/biome/PaletteSettingsImpl.java | 18 +++++ .../terra/addons/biome/UserDefinedBiome.java | 2 - .../addons/biome/UserDefinedBiomeBuilder.java | 31 +-------- .../terra/addons/biome/WorldGenerator.java | 17 ++--- .../command/biome}/AsyncBiomeFinder.java | 2 +- .../command/biome}/AsyncFeatureFinder.java | 2 +- .../biome/command/biome/BiomeCommand.java | 5 +- .../biome/command/biome/BiomeInfoCommand.java | 11 +-- .../command/biome/BiomeLocateCommand.java | 6 +- .../pipeline/config}/NoiseSourceTemplate.java | 2 +- .../pipeline/config}/SourceTemplate.java | 2 +- .../addons/carver/UserDefinedCarver.java | 4 +- 16 files changed, 63 insertions(+), 156 deletions(-) rename common/addons/{noise/src/main/java/com/dfsek/terra/addons/noise/paralithic => biome/config/src/main/java/com/dfsek/terra/addons/biome}/BlankFunction.java (90%) delete mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java delete mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java create mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java rename common/{implementation/src/main/java/com/dfsek/terra/api/world/locate => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome}/AsyncBiomeFinder.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/api/world/locate => addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome}/AsyncFeatureFinder.java (98%) rename common/addons/biome/{config/src/main/java/com/dfsek/terra/addons/biome => provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/NoiseSourceTemplate.java (92%) rename common/addons/biome/{config/src/main/java/com/dfsek/terra/addons/biome => provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/SourceTemplate.java (83%) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 5f506517a..fae27548a 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; @@ -14,18 +13,11 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.world.population.items.TerraStructure; -import com.dfsek.terra.addons.flora.flora.FloraLayer; -import com.dfsek.terra.addons.ore.ores.OreHolder; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.ArrayList; import java.util.Collections; @@ -54,7 +46,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("beta.carving.equation") @Abstractable @Default - private NoiseSeeded carvingEquation = NoiseSeeded.zero(2); + private NoiseSeeded carvingEquation = NoiseSeeded.zero(3); @Value("palette") @Abstractable @@ -98,10 +90,10 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Abstractable private NoiseSeeded noiseEquation; - @Value("ores") + /*@Value("ores") @Abstractable @Default - private OreHolder oreHolder = new OreHolder(); + private OreHolder oreHolder = new OreHolder();*/ @Value("ocean.level") @Abstractable @@ -115,22 +107,22 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("elevation.equation") @Default @Abstractable - private String elevationEquation = null; + private NoiseSeeded elevationEquation = NoiseSeeded.zero(2); @Value("elevation.weight") @Default @Abstractable private double elevationWeight = 1; - @Value("flora") + /*@Value("flora") @Abstractable @Default - private List flora = new GlueList<>(); + private List flora = new ArrayList<>(); @Value("trees") @Abstractable @Default - private List trees = new GlueList<>(); + private List trees = new ArrayList<>();*/ @Value("slabs.enable") @Abstractable @@ -166,10 +158,10 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Abstractable private Set tags = new HashSet<>(); - @Value("carving") + /*@Value("carving") @Abstractable @Default - private Map carvers = new HashMap<>(); + private Map carvers = new HashMap<>();*/ @Value("colors") @Abstractable @@ -188,10 +180,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return colors; } - public Map getCarvers() { - return carvers; - } - public double getBlendWeight() { return blendWeight; } @@ -216,10 +204,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return slabThreshold; } - public List getFlora() { - return flora; - } - public boolean doSlabs() { return doSlabs; } @@ -240,11 +224,11 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return biomeNoise; } - public String getElevationEquation() { + public NoiseSeeded getElevationEquation() { return elevationEquation; } - public String getCarvingEquation() { + public NoiseSeeded getCarvingEquation() { return carvingEquation; } @@ -268,10 +252,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return palette; } - public List getTrees() { - return trees; - } - public ProbabilityCollection getVanilla() { return vanilla; } @@ -284,10 +264,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return noiseEquation; } - public OreHolder getOreHolder() { - return oreHolder; - } - public double getElevationWeight() { return elevationWeight; } @@ -304,7 +280,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl public boolean validate() throws ValidationException { color |= 0xff000000; // Alpha adjustment Parser tester = new Parser(); - Scope testScope = new Scope().withParent(pack.getVarScope()); + Scope testScope = new Scope(); variables.forEach(testScope::create); @@ -313,24 +289,24 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl testScope.addInvocationVariable("z"); - pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions + //pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions try { - tester.parse(noiseEquation, testScope); - } catch(ParseException e) { - throw new ValidationException("Invalid noise equation: ", e); + noiseEquation.apply(0L); + } catch(Exception e) { + throw new ValidationException("Invalid noise sampler: ", e); } try { - tester.parse(carvingEquation, testScope); - } catch(ParseException e) { - throw new ValidationException("Invalid carving equation: ", e); + carvingEquation.apply(0L); + } catch(Exception e) { + throw new ValidationException("Invalid carving sampler: ", e); } try { - if(elevationEquation != null) tester.parse(elevationEquation, testScope); - } catch(ParseException e) { - throw new ValidationException("Invalid elevation equation: ", e); + elevationEquation.apply(0L); + } catch(Exception e) { + throw new ValidationException("Invalid elevation sampler: ", e); } return true; diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java similarity index 90% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java index 3165b58d7..20acac0df 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/BlankFunction.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.noise.paralithic; +package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java deleted file mode 100644 index cee617f8b..000000000 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreConfigLoader.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.addons.ore.ores.OreConfig; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class OreConfigLoader implements TypeLoader { - @Override - public OreConfig load(Type type, Object o, ConfigLoader configLoader) { - Map map = (Map) o; - Range amount = new ConstantRange(map.get("min"), map.get("max")); - Range height = new ConstantRange(map.get("min-height"), map.get("max-height")); - return new OreConfig(amount, height); - } -} diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java deleted file mode 100644 index b62155ae6..000000000 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/OreHolderLoader.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.ore.ores.Ore; -import com.dfsek.terra.addons.ore.ores.OreConfig; -import com.dfsek.terra.addons.ore.ores.OreHolder; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class OreHolderLoader implements TypeLoader { - @Override - public OreHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - OreHolder holder = new OreHolder(); - Map map = (Map) o; - - for(Map.Entry entry : map.entrySet()) { - holder.add(configLoader.loadClass(Ore.class, entry.getKey()), configLoader.loadClass(OreConfig.class, entry.getValue()), entry.getKey()); - } - - return holder; - } -} diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java new file mode 100644 index 000000000..500753950 --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.biome; + +import com.dfsek.terra.addons.biome.holder.PaletteHolder; +import com.dfsek.terra.api.world.biome.PaletteSettings; +import com.dfsek.terra.api.world.generator.Palette; + +public class PaletteSettingsImpl implements PaletteSettings { + private final PaletteHolder palette; + + public PaletteSettingsImpl(PaletteHolder palette) { + this.palette = palette; + } + + @Override + public Palette getPalette(int y) { + return palette.getPalette(y); + } +} diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index ec568c676..f001d6d6d 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -5,8 +5,6 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.generation.WorldGenerator; import java.util.Set; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index 4c585e300..c34788872 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -1,21 +1,10 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; -import com.dfsek.terra.config.pack.ConfigPackImpl; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.noise.samplers.ExpressionSampler; -import com.dfsek.terra.world.generation.WorldGenerator; -import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -35,25 +24,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { synchronized(biomeMap) { return biomeMap.computeIfAbsent(seed, s -> { - NoiseSampler noise; - NoiseSampler elevation; - NoiseSampler carving; - Scope varScope = new Scope().withParent(pack.getVarScope()); - - template.getVariables().forEach(varScope::create); - - Map noiseBuilderMap = pack.getTemplate().getNoiseBuilderMap(); - - - try { - noise = new ExpressionSampler(template.getNoiseEquation(), varScope, seed, noiseBuilderMap); - elevation = template.getElevationEquation() == null ? NoiseSampler.zero() : new ExpressionSampler(template.getElevationEquation(), varScope, seed, noiseBuilderMap); - carving = new ExpressionSampler(template.getCarvingEquation(), varScope, seed, noiseBuilderMap); - } catch(ParseException e) { - throw new RuntimeException(e); - } - - WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlant(), noise, elevation, carving, template.getBiomeNoise().apply(seed), template.getElevationWeight(), + WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlant(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java index 7240c24d1..16a9716eb 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java @@ -4,12 +4,10 @@ import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.biome.PaletteSettings; public class WorldGenerator implements Generator { - @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) - private final PaletteHolder palettes; - @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) + private final PaletteSettings paletteSettings; private final SlantHolder slantPalettes; private final NoiseSampler noise; @@ -23,7 +21,7 @@ public class WorldGenerator implements Generator { private final double blendWeight; public WorldGenerator(PaletteHolder palettes, SlantHolder slantPalettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { - this.palettes = palettes; + this.paletteSettings = new PaletteSettingsImpl(palettes); this.slantPalettes = slantPalettes; this.noise = noise; this.elevation = elevation; @@ -61,14 +59,9 @@ public class WorldGenerator implements Generator { return blendWeight; } - /** - * Gets the BlockPalette to generate the biome with. - * - * @return BlockPalette - The biome's palette. - */ @Override - public Palette getPalette(int y) { - return palettes.getPalette(y); + public PaletteSettings getPaletteSettings() { + return paletteSettings; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index 4bcb8bda6..4cf520db7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.locate; +package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java rename to common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java index 49de326f0..aa148595b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.locate; +package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index 4a2dd3d27..e4bbd74b5 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.biome.command.biome; +import com.dfsek.terra.addons.biome.UserDefinedBiome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; @@ -9,9 +10,7 @@ import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.lang.LangUtil; @Command( subcommands = { @@ -40,6 +39,6 @@ public class BiomeCommand implements CommandTemplate { BiomeProvider provider = main.getWorld(player.world()).getBiomeProvider(); UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position()); - LangUtil.send("command.biome.in", sender, biome.getID()); + sender.sendMessage("You are standing in " + biome.getID()); } } diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java index 19631ef74..e7ffbd11c 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.biome.command.biome; +import com.dfsek.terra.addons.biome.BiomeTemplate; +import com.dfsek.terra.addons.biome.UserDefinedBiome; +import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; +import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; @@ -7,9 +11,6 @@ import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.population.items.TerraStructure; import java.util.List; @@ -47,8 +48,8 @@ public class BiomeInfoCommand implements CommandTemplate { sender.sendMessage("No Structures"); } else { sender.sendMessage("-------Structures-------"); - for(TerraStructure c : structureConfigs) { - sender.sendMessage(" - " + c.getTemplate().getID()); + for(ConfiguredStructure c : structureConfigs) { + sender.sendMessage(" - " + c); } } } diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java index fd7d749ae..4f9f22ac4 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; +import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -16,9 +17,6 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; -import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; -import com.dfsek.terra.config.lang.LangUtil; import java.util.Locale; @@ -70,7 +68,7 @@ public class BiomeLocateCommand implements CommandTemplate { if(teleport) { main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } - } else LangUtil.send("command.biome.unable-to-locate", sender); + } else sender.sendMessage("Unable to locate biome \"" + biome.getID() + "\""); }, main), "Biome Location Thread").start(); } diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java similarity index 92% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 731eddb87..d525b8359 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/NoiseSourceTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.util.ProbabilityCollection; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java similarity index 83% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index 48845fa09..e3c9333c6 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/SourceTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.SourceSeeded; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 5cdab774f..8622b8c79 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -4,6 +4,8 @@ import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.terra.addons.carver.carving.Carver; +import com.dfsek.terra.addons.carver.carving.Worm; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; @@ -15,8 +17,6 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; 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.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import net.jafama.FastMath; From 25339ca4ef6007f817fc53cfbbfdd08073c2f1d1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:02:48 -0700 Subject: [PATCH 0099/1529] working biome config addon --- common/addons/biome/config/build.gradle.kts | 4 + .../terra/addons/biome/BiomeConfigAddon.java | 27 +++++++ .../terra/addons/biome/BiomeConfigType.java | 47 ++++++++++++ .../dfsek/terra/api/config/ConfigPack.java | 3 + .../dfsek/terra/api/config/ConfigType.java | 4 +- .../api/registry/meta/RegistryFactory.java | 26 +++++++ .../config/fileloaders/FolderLoader.java | 1 + .../terra/config/fileloaders/ZIPLoader.java | 1 + .../terra/config/pack/ConfigPackImpl.java | 24 +++++- .../terra/registry/RegistryFactoryImpl.java | 29 ++++++++ .../terra/registry/config/BiomeRegistry.java | 19 ----- .../registry/config/ConfigTypeRegistry.java | 73 +------------------ 12 files changed, 164 insertions(+), 94 deletions(-) create mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java create mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java diff --git a/common/addons/biome/config/build.gradle.kts b/common/addons/biome/config/build.gradle.kts index 4b0339e03..a55e7cdac 100644 --- a/common/addons/biome/config/build.gradle.kts +++ b/common/addons/biome/config/build.gradle.kts @@ -34,6 +34,10 @@ dependencies { "testImplementation"("com.google.guava:guava:30.0-jre") } +tasks.named("jar") { + archiveBaseName.set("Terra-biome") +} + publishing { publications { create("mavenJava") { diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java new file mode 100644 index 000000000..33157d194 --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.biome; + +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; + +@Addon("core-biome-config") +@Author("Terra") +@Version("1.0.0") +public class BiomeConfigAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); + } +} diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java new file mode 100644 index 000000000..3fd136382 --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -0,0 +1,47 @@ +package com.dfsek.terra.addons.biome; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; + +import java.lang.reflect.Type; +import java.util.function.Supplier; + +public class BiomeConfigType implements ConfigType { + private final ConfigPack pack; + private final BiomeFactory factory; + + public BiomeConfigType(ConfigPack pack) { + this.pack = pack; + this.factory = new BiomeFactory(pack); + } + + @Override + public BiomeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new BiomeTemplate(pack, main); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return BiomeBuilder.class; + } + + @Override + public Supplier> registrySupplier() { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + if(c.equals("SELF")) return null; + return registry.load(t, c, loader); + }); + } +} 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 f0c09a41c..7a7b45a8e 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; @@ -41,4 +42,6 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde boolean doBetaCarvers(); boolean vanillaFlora(); + + RegistryFactory getRegistryFactory(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 7e8ed0b39..46aa2de98 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -7,10 +7,10 @@ import com.dfsek.terra.api.registry.OpenRegistry; import java.util.function.Supplier; -public interface ConfigType { +public interface ConfigType { T getTemplate(ConfigPack pack, TerraPlugin main); - void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException; + ConfigFactory getFactory(); Class getTypeClass(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java new file mode 100644 index 000000000..bc041c4f5 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.api.registry.meta; + +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.registry.OpenRegistry; + +import java.util.function.Function; + +/** + * Helpers to avoid creating entire registry implementations for simple overrides. + */ +public interface RegistryFactory { + /** + * Create a generic OpenRegistry. + * @param Type of registry. + * @return New OpenRegistry + */ + OpenRegistry create(); + + /** + * Create an OpenRegistry with custom {@link TypeLoader} + * @param loader Function to create loader. + * @param Type of registry. + * @return New OpenRegistry. + */ + OpenRegistry create(Function, TypeLoader> loader); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java index f54708bff..f27728d92 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java @@ -32,6 +32,7 @@ public class FolderLoader extends Loader { paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(extension)).forEach(file -> { try { String rel = newPath.toPath().relativize(file).toString(); + if(rel.equals("pack.yml")) return; streams.put(rel, new FileInputStream(file.toFile())); } catch(FileNotFoundException e) { e.printStackTrace(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java index 8c94af81a..fd571baa9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java @@ -28,6 +28,7 @@ public class ZIPLoader extends Loader { Enumeration entries = file.entries(); while(entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); + if(entry.getName().equals("pack.yml")) continue; if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(extension)) { try { String rel = entry.getName().substring(directory.length()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index d8f947c78..8b34f9f89 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -13,12 +13,16 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; @@ -33,6 +37,7 @@ import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; +import com.dfsek.terra.registry.RegistryFactoryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; import com.dfsek.terra.world.TerraWorldImpl; @@ -63,6 +68,8 @@ import java.util.zip.ZipFile; public class ConfigPackImpl implements ConfigPack { private final ConfigPackTemplate template = new ConfigPackTemplate(); + private final RegistryFactory registryFactory = new RegistryFactoryImpl(); + private final Map> loaders = new HashMap<>(); private final Map>> objectLoaders = new HashMap<>(); @@ -84,7 +91,7 @@ public class ConfigPackImpl implements ConfigPack { public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry((id, configType) -> { + this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); @@ -127,7 +134,7 @@ public class ConfigPackImpl implements ConfigPack { public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry((id, configType) -> { + this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); @@ -238,8 +245,12 @@ public class ConfigPackImpl implements ConfigPack { } for(ConfigType configType : configTypeRegistry.entries()) { - for(ConfigTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { - ((ConfigType) configType).callback(this, main, config); + for(AbstractableTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { + try { + ((CheckedRegistry) getRegistry(configType.getTypeClass())).add(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); + } catch(DuplicateEntryException e) { + throw new LoadException("Duplicate registry entry: ", e); + } } } @@ -361,4 +372,9 @@ public class ConfigPackImpl implements ConfigPack { public boolean vanillaFlora() { return template.vanillaDecorations(); } + + @Override + public RegistryFactory getRegistryFactory() { + return registryFactory; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java new file mode 100644 index 000000000..d9c0d6e81 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.registry; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.meta.RegistryFactory; +import com.dfsek.terra.api.util.generic.Lazy; + +import java.lang.reflect.Type; +import java.util.function.Function; + +public class RegistryFactoryImpl implements RegistryFactory { + @Override + public OpenRegistry create() { + return new OpenRegistryImpl<>(); + } + + @Override + public OpenRegistry create(Function, TypeLoader> loader) { + return new OpenRegistryImpl<>() { + private final Lazy> loaderCache = Lazy.of(() -> loader.apply(this)); + @Override + public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + return loaderCache.value().load(type, o, configLoader); + } + }; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java deleted file mode 100644 index 67205999d..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.registry.OpenRegistryImpl; - -import java.lang.reflect.Type; - -public class BiomeRegistry extends OpenRegistryImpl { - @Override - public BiomeBuilder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - if(o.equals("SELF")) return null; - BiomeBuilder biome = get((String) o); - if(biome == null) - throw new LoadException("No such " + type.getTypeName() + " matching \"" + o + "\" was found in this registry."); - return biome; - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 0f216b884..03e75e1bd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -1,91 +1,26 @@ package com.dfsek.terra.registry.config; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import java.util.LinkedHashMap; import java.util.function.BiConsumer; -import java.util.function.Supplier; public class ConfigTypeRegistry extends OpenRegistryImpl> { private final BiConsumer> callback; - public ConfigTypeRegistry(BiConsumer> callback) { + private final TerraPlugin main; + public ConfigTypeRegistry(TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; - add("PACK", new PackBuilder()); + this.main = main; } @Override public boolean add(String identifier, Entry> value) { callback.accept(identifier, value.getValue()); + main.getDebugLogger().info("Registered config registry with ID " + identifier + " to class " + value.getValue().getTypeClass().getCanonicalName()); return super.add(identifier, value); } - - private static final class PackBuilder implements ConfigType { - - @Override - public ConfigTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new ConfigTemplate() { - }; - } - - @Override - public void callback(ConfigPack pack, TerraPlugin main, ConfigTemplate loadedConfig) { - - } - - @Override - public Class getTypeClass() { - return ConfigPack.class; - } - - @Override - public Supplier> registrySupplier() { - return OpenRegistryImpl::new; - } - } - - private static final class ConfigBuilder implements ConfigType { - private final ConfigFactory factory; - private final Supplier provider; - private final Class clazz; - private final Supplier> registrySupplier; - - private ConfigBuilder(ConfigFactory factory, Supplier provider, Class clazz, Supplier> registrySupplier) { - this.factory = factory; - this.provider = provider; - this.clazz = clazz; - this.registrySupplier = registrySupplier; - } - - @Override - public T getTemplate(ConfigPack pack, TerraPlugin main) { - return provider.get(); - } - - @SuppressWarnings("deprecation") - @Override - public void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException { - pack.getRegistry(clazz).addUnchecked(loadedConfig.getID(), factory.build(loadedConfig, main)); - } - - @Override - public Class getTypeClass() { - return clazz; - } - - @Override - public Supplier> registrySupplier() { - return registrySupplier; - } - } } From 3ea6724e6c7588c4f35603b855b1a7bacd1dbdff Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:13:23 -0700 Subject: [PATCH 0100/1529] build ore addon --- .../dfsek/terra/addons/ore/OrePopulator.java | 9 ++++----- .../dfsek/terra/addons/ore/OreTemplate.java | 2 +- .../com/dfsek/terra/addons/ore/ores/Ore.java | 2 +- .../terra/addons/ore/ores/OreHolder.java | 4 ++-- .../terra/addons/ore/ores/VanillaOre.java | 2 +- .../com/dfsek/terra/api/util/MaterialSet.java | 8 ++++++++ .../dfsek/terra/api/util/PopulationUtil.java | 8 ++++---- ...{MaterialSet.java => MaterialSetImpl.java} | 19 ++++++++++--------- .../dfsek/terra/config/GenericLoaders.java | 4 ++-- .../config/loaders/MaterialSetLoader.java | 8 ++++---- .../dfsek/terra/bukkit/world/BukkitTree.java | 18 +++++++++--------- .../ConfiguredFeatureMixin.java | 4 ++-- .../com/dfsek/terra/platform/RawTree.java | 6 +++--- 13 files changed, 51 insertions(+), 43 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java (68%) rename common/implementation/src/main/java/com/dfsek/terra/api/util/collections/{MaterialSet.java => MaterialSetImpl.java} (50%) diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 2ed3b6195..9cba3587d 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -2,16 +2,12 @@ package com.dfsek.terra.addons.ore; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.config.templates.BiomeTemplate; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -33,10 +29,11 @@ public class OrePopulator implements TerraBlockPopulator { if(!tw.isSafe()) return; for(int cx = -1; cx <= 1; cx++) { for(int cz = -1; cz <= 1; cz++) { - Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); + Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); int originX = ((chunk.getX() + cx) << 4); int originZ = ((chunk.getZ() + cz) << 4); TerraBiome b = tw.getBiomeProvider().getBiome(originX + 8, originZ + 8); + /* BiomeTemplate config = ((UserDefinedBiome) b).getConfig(); int finalCx = cx; int finalCz = cz; @@ -49,6 +46,8 @@ public class OrePopulator implements TerraBlockPopulator { } } }); + + */ } } } diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index 30ac4b1a3..2762333d8 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -6,8 +6,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index 8e0ccb892..3d688ecfc 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java index 625299af1..1509e1df3 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.ore.ores; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; +import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; @@ -10,7 +10,7 @@ import java.util.function.BiConsumer; * Holds ordered list of ores mapped to their configs. */ public class OreHolder { - private final List entries = new GlueList<>(); + private final List entries = new ArrayList<>(); public void forEach(BiConsumer> consumer) { entries.forEach(entry -> consumer.accept(entry.getId(), ImmutablePair.of(entry.getOre(), entry.getConfig()))); diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 1dbfa2df4..e520a181b 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -3,8 +3,8 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import net.jafama.FastMath; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java new file mode 100644 index 000000000..7e3e1438f --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.util; + +import com.dfsek.terra.api.block.BlockType; + +import java.util.Set; + +public interface MaterialSet extends Set { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java similarity index 68% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java index 6cf0320bb..8a293d1ee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java @@ -5,12 +5,12 @@ import com.dfsek.terra.api.world.Chunk; import java.util.Random; public final class PopulationUtil { - public static FastRandom getRandom(Chunk c) { + public static Random getRandom(Chunk c) { return getRandom(c, 0); } - public static FastRandom getRandom(Chunk c, long salt) { - return new FastRandom(getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); + public static Random getRandom(Chunk c, long salt) { + return new Random(getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); } /** @@ -22,7 +22,7 @@ public final class PopulationUtil { * @return long - The carver seed. */ public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) { - Random r = new FastRandom(seed); + Random r = new Random(seed); return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java similarity index 50% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java rename to common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java index 137b6c6a2..6f507153a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java @@ -2,33 +2,34 @@ package com.dfsek.terra.api.util.collections; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.MaterialSet; import java.util.Arrays; import java.util.HashSet; -public class MaterialSet extends HashSet { +public class MaterialSetImpl extends HashSet implements MaterialSet { private static final long serialVersionUID = 3056512763631017301L; - public static MaterialSet singleton(BlockType material) { - MaterialSet set = new MaterialSet(); + public static MaterialSetImpl singleton(BlockType material) { + MaterialSetImpl set = new MaterialSetImpl(); set.add(material); return set; } - public static MaterialSet get(BlockType... materials) { - MaterialSet set = new MaterialSet(); + public static MaterialSetImpl get(BlockType... materials) { + MaterialSetImpl set = new MaterialSetImpl(); set.addAll(Arrays.asList(materials)); return set; } - public static MaterialSet get(BlockState... materials) { - MaterialSet set = new MaterialSet(); + public static MaterialSetImpl get(BlockState... materials) { + MaterialSetImpl set = new MaterialSetImpl(); Arrays.stream(materials).forEach(set::add); return set; } - public static MaterialSet empty() { - return new MaterialSet(); + public static MaterialSetImpl empty() { + return new MaterialSetImpl(); } private void add(BlockState data) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 260c4e56a..f7e661ec4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collections.MaterialSetImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; @@ -27,7 +27,7 @@ public class GenericLoaders implements LoaderRegistrar { public void register(TypeRegistry registry) { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) - .registerLoader(MaterialSet.class, new MaterialSetLoader()) + .registerLoader(MaterialSetImpl.class, new MaterialSetLoader()) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index 5fa0125bc..71dc83709 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -4,17 +4,17 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collections.MaterialSetImpl; import java.lang.reflect.Type; import java.util.List; @SuppressWarnings("unchecked") -public class MaterialSetLoader implements TypeLoader { +public class MaterialSetLoader implements TypeLoader { @Override - public MaterialSet load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public MaterialSetImpl load(Type type, Object o, ConfigLoader configLoader) throws LoadException { List stringData = (List) o; - MaterialSet set = new MaterialSet(); + MaterialSetImpl set = new MaterialSetImpl(); for(String string : stringData) { try { 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 1ecb29409..872fe06db 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 @@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collections.MaterialSetImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -14,7 +14,7 @@ import java.util.Random; public class BukkitTree implements Tree { private final TreeType delegate; - private final MaterialSet spawnable; + private final MaterialSetImpl spawnable; private final TerraPlugin main; public BukkitTree(TreeType delegate, TerraPlugin main) { @@ -23,21 +23,21 @@ public class BukkitTree implements Tree { this.spawnable = getSpawnable(delegate); } - private MaterialSet getSpawnable(TreeType type) { + private MaterialSetImpl getSpawnable(TreeType type) { WorldHandle handle = main.getWorldHandle(); switch(type) { case CRIMSON_FUNGUS: - return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); + return MaterialSetImpl.get(handle.createBlockData("minecraft:crimson_nylium")); case WARPED_FUNGUS: - return MaterialSet.get(handle.createBlockData("minecraft:warped_nylium")); + return MaterialSetImpl.get(handle.createBlockData("minecraft:warped_nylium")); case BROWN_MUSHROOM: case RED_MUSHROOM: - return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), + return MaterialSetImpl.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:podzol")); case CHORUS_PLANT: - return MaterialSet.get(handle.createBlockData("minecraft:end_stone")); + return MaterialSetImpl.get(handle.createBlockData("minecraft:end_stone")); default: - return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), + return MaterialSetImpl.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), handle.createBlockData("minecraft:podzol")); } } @@ -51,7 +51,7 @@ public class BukkitTree implements Tree { } @Override - public MaterialSet getSpawnable() { + public MaterialSetImpl getSpawnable() { return spawnable; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index b758f09ed..add5ac231 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.mixin.implementations; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collections.MaterialSetImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -38,7 +38,7 @@ public abstract class ConfiguredFeatureMixin { } public Set terra$getSpawnable() { - return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), + return MaterialSetImpl.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index da9fb440f..fd587ddd5 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collections.MaterialSetImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -14,7 +14,7 @@ public class RawTree implements Tree { // TODO: implement } @Override - public MaterialSet getSpawnable() { - return MaterialSet.empty(); + public MaterialSetImpl getSpawnable() { + return MaterialSetImpl.empty(); } } From 1777dc1aca2c085e73179754c74d6a0824ccc71e Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:18:51 -0700 Subject: [PATCH 0101/1529] ore addon impl --- .../com/dfsek/terra/addons/ore/OreAddon.java | 28 +++++++++++++ .../dfsek/terra/addons/ore/OreConfigType.java | 39 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java create mode 100644 common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java new file mode 100644 index 000000000..58667776c --- /dev/null +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.ore; + +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; + + +@Addon("core-ore-config") +@Author("Terra") +@Version("1.0.0") +public class OreAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1); + } +} diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java new file mode 100644 index 000000000..a76f335bc --- /dev/null +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.ore; + +import com.dfsek.terra.addons.ore.ores.Ore; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; + +import java.util.function.Supplier; + +public class OreConfigType implements ConfigType { + private final OreFactory factory = new OreFactory(); + private final ConfigPack pack; + + public OreConfigType(ConfigPack pack) { + this.pack = pack; + } + + @Override + public OreTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new OreTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return Ore.class; + } + + @Override + public Supplier> registrySupplier() { + return pack.getRegistryFactory()::create; + } +} From 1ad08a599db44796f1e9ea2ad9674bd4a2f771bb Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:30:53 -0700 Subject: [PATCH 0102/1529] compile tree addon --- .../terra/addons/tree/TreeLayerLoader.java | 34 ------------------- .../terra/addons/tree/TreePopulator.java | 5 ++- .../dfsek/terra/addons/tree/TreeTemplate.java | 2 +- .../terra/addons/tree/tree/TerraTree.java | 2 +- .../terra/addons/tree/tree/TreeLayer.java | 32 ----------------- 5 files changed, 4 insertions(+), 71 deletions(-) delete mode 100644 common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java delete mode 100644 common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java deleted file mode 100644 index 5ead643d3..000000000 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeLayerLoader.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.dfsek.terra.addons.tree; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.tree.tree.TreeLayer; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.config.loaders.Types; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class TreeLayerLoader implements TypeLoader { - @Override - public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - Map map = (Map) o; - double density = ((Number) map.get("density")).doubleValue(); - Range range = configLoader.loadClass(Range.class, map.get("y")); - if(range == null) throw new LoadException("Tree range unspecified"); - ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); - - if(map.containsKey("distribution")) { - NoiseSeeded noise = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); - return new TreeLayer(density, range, items, noise.apply(2403L)); - } - - return new TreeLayer(density, range, items, new WhiteNoiseSampler(2403)); - } -} diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index 1e0893e03..977d9b91e 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -3,14 +3,11 @@ package com.dfsek.terra.addons.tree; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -40,12 +37,14 @@ public class TreePopulator implements TerraBlockPopulator { Random random = PopulationUtil.getRandom(chunk); for(int x = 0; x < 16; x += 2) { for(int z = 0; z < 16; z += 2) { + /* UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); for(TreeLayer layer : biome.getConfig().getTrees()) { if(layer.getDensity() >= random.nextDouble() * 100) { layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); } } + */ } } } diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java index b15f2b2ea..d88044ea8 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.MaterialSet; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate implements AbstractableTemplate { diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java index bb7497dc4..c6336fccd 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.tree.tree; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java deleted file mode 100644 index 5029a365f..000000000 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.tree.tree; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.world.population.items.PlaceableLayer; - -public class TreeLayer extends PlaceableLayer { - - public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { - super(density, level, layer, noise); - } - - @Override - public void place(Chunk chunk, Vector2 coords) { - int cx = chunk.getX() << 4; - int cz = chunk.getZ() << 4; - Tree item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); - Vector3 running = coords.extrude(level.getMax()); - for(int ignored : level) { - running.subtract(0, 1, 0); - if(item.getSpawnable().contains(chunk.getBlock(running.getBlockX(), running.getBlockY(), running.getBlockZ()).getBlockType())) { - item.plant(running.clone().add(cx, 1, cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); - } - } - } -} From 32b0cd0b26cd72cddb194ce5b7bcd7da598b4532 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:35:35 -0700 Subject: [PATCH 0103/1529] tree addon impl --- .../dfsek/terra/addons/tree/TreeAddon.java | 27 +++++++++++++ .../terra/addons/tree/TreeConfigType.java | 39 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java create mode 100644 common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java new file mode 100644 index 000000000..73930fd3b --- /dev/null +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.tree; + +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; + +@Addon("core-tree-config") +@Author("Terra") +@Version("1.0.0") +public class TreeAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); + } +} diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java new file mode 100644 index 000000000..7af6d171a --- /dev/null +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.tree; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.world.Tree; + +import java.util.function.Supplier; + +public class TreeConfigType implements ConfigType { + private final TreeFactory factory = new TreeFactory(); + private final ConfigPack pack; + + public TreeConfigType(ConfigPack pack) { + this.pack = pack; + } + + @Override + public TreeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new TreeTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return Tree.class; + } + + @Override + public Supplier> registrySupplier() { + return pack.getRegistryFactory()::create; + } +} From 3da777459e3f30a7d51211caa3657d9e227674eb Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:43:17 -0700 Subject: [PATCH 0104/1529] compile flora addon --- .../terra/addons/flora/FloraFactory.java | 12 ++---- .../terra/addons/flora/FloraLayerLoader.java | 40 ------------------- .../terra/addons/flora/FloraPopulator.java | 12 +----- .../terra/addons/flora/FloraTemplate.java | 19 ++------- .../terra/addons/flora/flora/FloraLayer.java | 28 ------------- .../terra/addons/flora/flora/TerraFlora.java | 6 +-- .../com/dfsek/terra/api/util/MaterialSet.java | 4 ++ 7 files changed, 17 insertions(+), 104 deletions(-) delete mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java delete mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index def4be7be..80214ed4a 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -1,21 +1,17 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.palette.NoisePalette; -import com.dfsek.terra.api.world.palette.PaletteImpl; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.flora.flora.TerraFlora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); + /*PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); for(PaletteLayerHolder layer : config.getFloraPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); - } - return new TerraFlora(palette, config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main); + }*/ + return new TerraFlora(null, config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main); } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java deleted file mode 100644 index 768c7675b..000000000 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.config.loaders.Types; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.flora.flora.FloraLayer; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class FloraLayerLoader implements TypeLoader { - @Override - public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - Map map = (Map) o; - double density = ((Number) map.get("density")).doubleValue(); - Range range = configLoader.loadClass(Range.class, map.get("y")); - if(range == null) throw new LoadException("Flora range unspecified"); - ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); - - NoiseSeeded sampler; - if(map.containsKey("distribution")) { - try { - sampler = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); - } catch(ConfigException e) { - throw new LoadException("Unable to load noise", e); - } - return new FloraLayer(density, range, items, sampler.apply(2403L)); - } - - return new FloraLayer(density, range, items, new WhiteNoiseSampler(2403)); - } -} diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index 31ec4890a..93a9d32ce 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -2,22 +2,12 @@ package com.dfsek.terra.addons.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - /** * Populates Flora */ @@ -33,6 +23,7 @@ public class FloraPopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("flora")) { + /* if(tw.getConfig().disableFlora()) return; if(!tw.isSafe()) return; @@ -60,6 +51,7 @@ public class FloraPopulator implements TerraBlockPopulator { } iter++; } + */ } } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index c55550c51..bb6d11f81 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -3,12 +3,9 @@ package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.addons.flora.flora.TerraFlora; - -import java.util.List; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.util.MaterialSet; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class FloraTemplate implements AbstractableTemplate { @@ -28,7 +25,7 @@ public class FloraTemplate implements AbstractableTemplate { @Value("replaceable") @Abstractable @Default - private MaterialSet replaceable = new MaterialSet(); + private MaterialSet replaceable = MaterialSet.empty(); @Value("irrigable") @Abstractable @@ -38,11 +35,7 @@ public class FloraTemplate implements AbstractableTemplate { @Value("rotatable") @Abstractable @Default - private MaterialSet rotatable = new MaterialSet(); - - @Value("layers") - @Abstractable - private List palette; + private MaterialSet rotatable = MaterialSet.empty(); @Value("physics") @Abstractable @@ -97,10 +90,6 @@ public class FloraTemplate implements AbstractableTemplate { return id; } - public List getFloraPalette() { - return palette; - } - public boolean doPhysics() { return doPhysics; } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java deleted file mode 100644 index 69ab3462c..000000000 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.flora.flora; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.world.population.items.PlaceableLayer; - -public class FloraLayer extends PlaceableLayer { - - public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { - super(density, level, layer, noise); - } - - public double getDensity() { - return density; - } - - @Override - public void place(Chunk chunk, Vector2 coords) { - int cx = chunk.getX() << 4; - int cz = chunk.getZ() << 4; - Flora item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); - } -} diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 17730e452..228e2e869 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -4,9 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; 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.util.FastRandom; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; @@ -17,6 +16,7 @@ import net.jafama.FastMath; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import java.util.Random; public class TerraFlora implements Flora { private final Palette floraPalette; @@ -104,7 +104,7 @@ public class TerraFlora implements Flora { int lvl = (FastMath.abs(i)); BlockState data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); if(doRotation) { - Direction oneFace = new ArrayList<>(faces).get(new FastRandom(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. + Direction oneFace = new ArrayList<>(faces).get(new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java index 7e3e1438f..cb3217561 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java @@ -2,7 +2,11 @@ package com.dfsek.terra.api.util; import com.dfsek.terra.api.block.BlockType; +import java.util.Collections; import java.util.Set; public interface MaterialSet extends Set { + static MaterialSet empty() { + return (MaterialSet) (Object) Collections.emptySet(); + } } From 7c30437031cef1f8898635e44f679e557c7ec55e Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:47:51 -0700 Subject: [PATCH 0105/1529] flora addon impl --- .../dfsek/terra/addons/flora/FloraAddon.java | 27 +++++++++++++ .../terra/addons/flora/FloraConfigType.java | 39 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java create mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java new file mode 100644 index 000000000..796b84f9d --- /dev/null +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.flora; + +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; + +@Addon("core-flora-config") +@Author("Terra") +@Version("0.1.0") +public class FloraAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); + } +} diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java new file mode 100644 index 000000000..aec5bf959 --- /dev/null +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.flora; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.world.Flora; + +import java.util.function.Supplier; + +public class FloraConfigType implements ConfigType { + private final FloraFactory factory = new FloraFactory(); + private final ConfigPack pack; + + public FloraConfigType(ConfigPack pack) { + this.pack = pack; + } + + @Override + public FloraTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new FloraTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return Flora.class; + } + + @Override + public Supplier> registrySupplier() { + return pack.getRegistryFactory()::create; + } +} From 0441837b196ce30a3b6ecac5ec4f403f7fde2795 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:55:01 -0700 Subject: [PATCH 0106/1529] compile palette addon --- .../terra/addons/palette/PaletteFactory.java | 5 ++- .../terra/addons/palette/PaletteRegistry.java | 21 ------------ .../terra/addons/palette/PaletteTemplate.java | 20 ++--------- .../palette/palette/CarverPaletteLoader.java | 33 ------------------- .../palette/palette/PaletteHolderLoader.java | 27 --------------- .../addons/palette/palette/PaletteImpl.java | 1 - .../palette/palette}/PaletteLayerHolder.java | 2 +- .../palette/palette/PaletteLayerLoader.java | 4 +-- .../palette/slant/SlantHolderLoader.java | 30 ----------------- 9 files changed, 6 insertions(+), 137 deletions(-) delete mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java delete mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java delete mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java rename common/addons/{biome/config/src/main/java/com/dfsek/terra/addons/biome/holder => palette/src/main/java/com/dfsek/terra/addons/palette/palette}/PaletteLayerHolder.java (94%) delete mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 7a77911d0..54a9ec4dc 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -1,11 +1,10 @@ package com.dfsek.terra.addons.palette; +import com.dfsek.terra.addons.palette.palette.NoisePalette; +import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.NoisePalette; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.config.templates.PaletteTemplate; public class PaletteFactory implements ConfigFactory { @Override diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java deleted file mode 100644 index 67c52e131..000000000 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteRegistry.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.palette; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.PaletteImpl; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class PaletteRegistry extends OpenRegistryImpl { - private final TerraPlugin main; - - public PaletteRegistry(TerraPlugin main) { - this.main = main; - } - - @Override - public Palette get(String identifier) { - if(identifier.startsWith("BLOCK:")) - return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. - return super.get(identifier); - } -} diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index f549bbc14..cf3326cb6 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -3,11 +3,9 @@ package com.dfsek.terra.addons.palette; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import java.util.List; @@ -16,7 +14,7 @@ public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Abstractable @Default - private NoiseSeeded noise; + private NoiseSeeded noise = NoiseSeeded.zero(2); @Value("id") private String id; @@ -25,20 +23,6 @@ public class PaletteTemplate implements AbstractableTemplate { @Abstractable private List palette; - public PaletteTemplate() { - this.noise = new NoiseSeeded() { - @Override - public NoiseSampler apply(Long seed) { - return new WhiteNoiseSampler((int) (long) seed); - } - - @Override - public int getDimensions() { - return 3; - } - }; - } - public String getID() { return id; } diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java deleted file mode 100644 index c55c5f7fd..000000000 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/CarverPaletteLoader.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import com.dfsek.tectonic.config.Configuration; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.carving.CarverPalette; -import com.dfsek.terra.config.loaders.Types; - -import java.lang.reflect.Type; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class CarverPaletteLoader implements TypeLoader { - - - @Override - public CarverPalette load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - Configuration configuration = new Configuration((Map) o); - CarverPalette palette = new CarverPalette((MaterialSet) configLoader.loadType(MaterialSet.class, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); - - for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); - palette.add(layer, (Integer) map.get("y")); - } - palette.build(); - return palette; - } -} diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java deleted file mode 100644 index bb646301b..000000000 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteHolderLoader.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; -import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder; - -import java.lang.reflect.Type; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class PaletteHolderLoader implements TypeLoader { - @Override - public PaletteHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - List> palette = (List>) o; - PaletteHolderBuilder builder = new PaletteHolderBuilder(); - for(Map layer : palette) { - for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); - } - } - return builder.build(); - } -} diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index dfce7793c..5e7d1252e 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java similarity index 94% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java rename to common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java index 4c7d068df..cdb85a887 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteLayerHolder.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.holder; +package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index b387f7879..3aec56c81 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -7,8 +7,6 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.config.loaders.Types; import java.lang.reflect.Type; import java.util.Map; @@ -18,7 +16,7 @@ public class PaletteLayerLoader implements TypeLoader { @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(/*Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE*/null, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java deleted file mode 100644 index 6dae778f0..000000000 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/slant/SlantHolderLoader.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.addons.palette.palette.slant; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.world.palette.holder.PaletteHolder; -import com.dfsek.terra.api.world.palette.slant.SlantHolder; - -import java.lang.reflect.Type; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -@SuppressWarnings("unchecked") -public class SlantHolderLoader implements TypeLoader { - @Override - public SlantHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - List> layers = (List>) o; - TreeMap slantLayers = new TreeMap<>(); - double minThreshold = Double.MAX_VALUE; - - for(Map layer : layers) { - double threshold = ((Number) layer.get("threshold")).doubleValue(); - if(threshold < minThreshold) minThreshold = threshold; - slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); - } - - return new SlantHolder(slantLayers, minThreshold); - } -} From 1a50060ff01d590b5e3650d731de56c402cd16b9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:00:52 -0700 Subject: [PATCH 0107/1529] flora addon impl --- .../terra/addons/palette/PaletteAddon.java | 27 ++++++++++ .../addons/palette/PaletteConfigType.java | 50 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java create mode 100644 common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java new file mode 100644 index 000000000..cb22bcbb3 --- /dev/null +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.palette; + +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; + +@Addon("core-palette-config") +@Author("Terra") +@Version("1.0.0") +public class PaletteAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new PaletteConfigType(event.getPack(), main), "PALETTE", 2); + } +} diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java new file mode 100644 index 000000000..c3afe53cf --- /dev/null +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -0,0 +1,50 @@ +package com.dfsek.terra.addons.palette; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.addons.palette.palette.PaletteImpl; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.world.generator.Palette; + +import java.lang.reflect.Type; +import java.util.function.Supplier; + +public class PaletteConfigType implements ConfigType { + private final PaletteFactory factory = new PaletteFactory(); + private final ConfigPack pack; + private final TerraPlugin main; + + public PaletteConfigType(ConfigPack pack, TerraPlugin main) { + this.pack = pack; + this.main = main; + } + + @Override + public PaletteTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new PaletteTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return Palette.class; + } + + @Override + public Supplier> registrySupplier() { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + if(((String) c).startsWith("BLOCK:")) + return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. + return registry.load(t, c, loader); + }); + } +} From d8eeeded60ab144f0013f73ab4e7bd540826e51a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:14:34 -0700 Subject: [PATCH 0108/1529] fix MaterialSet issues --- .../com/dfsek/terra/api/util/MaterialSet.java | 37 ++++++++++++++++-- .../api/util/collections/MaterialSetImpl.java | 38 ------------------- .../dfsek/terra/config/GenericLoaders.java | 4 +- .../config/loaders/MaterialSetLoader.java | 8 ++-- .../dfsek/terra/bukkit/world/BukkitTree.java | 18 ++++----- .../ConfiguredFeatureMixin.java | 4 +- .../com/dfsek/terra/platform/RawTree.java | 6 +-- 7 files changed, 54 insertions(+), 61 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java index cb3217561..bd8634056 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java @@ -1,12 +1,43 @@ package com.dfsek.terra.api.util; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import java.io.Serial; +import java.util.AbstractSet; +import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; import java.util.Set; -public interface MaterialSet extends Set { - static MaterialSet empty() { - return (MaterialSet) (Object) Collections.emptySet(); +public class MaterialSet extends HashSet { + @Serial + private static final long serialVersionUID = 3056512763631017301L; + + public static MaterialSet singleton(BlockType material) { + MaterialSet set = new MaterialSet(); + set.add(material); + return set; + } + + public static MaterialSet get(BlockType... materials) { + MaterialSet set = new MaterialSet(); + set.addAll(Arrays.asList(materials)); + return set; + } + + public static MaterialSet get(BlockState... materials) { + MaterialSet set = new MaterialSet(); + Arrays.stream(materials).forEach(set::add); + return set; + } + + public static MaterialSet empty() { + return new MaterialSet(); + } + + private void add(BlockState data) { + add(data.getBlockType()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java deleted file mode 100644 index 6f507153a..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/MaterialSetImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.api.util.collections; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.MaterialSet; - -import java.util.Arrays; -import java.util.HashSet; - -public class MaterialSetImpl extends HashSet implements MaterialSet { - private static final long serialVersionUID = 3056512763631017301L; - - public static MaterialSetImpl singleton(BlockType material) { - MaterialSetImpl set = new MaterialSetImpl(); - set.add(material); - return set; - } - - public static MaterialSetImpl get(BlockType... materials) { - MaterialSetImpl set = new MaterialSetImpl(); - set.addAll(Arrays.asList(materials)); - return set; - } - - public static MaterialSetImpl get(BlockState... materials) { - MaterialSetImpl set = new MaterialSetImpl(); - Arrays.stream(materials).forEach(set::add); - return set; - } - - public static MaterialSetImpl empty() { - return new MaterialSetImpl(); - } - - private void add(BlockState data) { - add(data.getBlockType()); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index f7e661ec4..8cd95e1c8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -5,9 +5,9 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.tectonic.LoaderRegistrar; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSetImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; @@ -27,7 +27,7 @@ public class GenericLoaders implements LoaderRegistrar { public void register(TypeRegistry registry) { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) - .registerLoader(MaterialSetImpl.class, new MaterialSetLoader()) + .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index 71dc83709..2666a59b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -4,17 +4,17 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.collections.MaterialSetImpl; +import com.dfsek.terra.api.util.MaterialSet; import java.lang.reflect.Type; import java.util.List; @SuppressWarnings("unchecked") -public class MaterialSetLoader implements TypeLoader { +public class MaterialSetLoader implements TypeLoader { @Override - public MaterialSetImpl load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public MaterialSet load(Type type, Object o, ConfigLoader configLoader) throws LoadException { List stringData = (List) o; - MaterialSetImpl set = new MaterialSetImpl(); + MaterialSet set = new MaterialSet(); for(String string : stringData) { try { 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 872fe06db..7ffd2ebfe 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 @@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.collections.MaterialSetImpl; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -14,7 +14,7 @@ import java.util.Random; public class BukkitTree implements Tree { private final TreeType delegate; - private final MaterialSetImpl spawnable; + private final MaterialSet spawnable; private final TerraPlugin main; public BukkitTree(TreeType delegate, TerraPlugin main) { @@ -23,21 +23,21 @@ public class BukkitTree implements Tree { this.spawnable = getSpawnable(delegate); } - private MaterialSetImpl getSpawnable(TreeType type) { + private MaterialSet getSpawnable(TreeType type) { WorldHandle handle = main.getWorldHandle(); switch(type) { case CRIMSON_FUNGUS: - return MaterialSetImpl.get(handle.createBlockData("minecraft:crimson_nylium")); + return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); case WARPED_FUNGUS: - return MaterialSetImpl.get(handle.createBlockData("minecraft:warped_nylium")); + return MaterialSet.get(handle.createBlockData("minecraft:warped_nylium")); case BROWN_MUSHROOM: case RED_MUSHROOM: - return MaterialSetImpl.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), + return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:podzol")); case CHORUS_PLANT: - return MaterialSetImpl.get(handle.createBlockData("minecraft:end_stone")); + return MaterialSet.get(handle.createBlockData("minecraft:end_stone")); default: - return MaterialSetImpl.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), + return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), handle.createBlockData("minecraft:podzol")); } } @@ -51,7 +51,7 @@ public class BukkitTree implements Tree { } @Override - public MaterialSetImpl getSpawnable() { + public MaterialSet getSpawnable() { return spawnable; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index add5ac231..41f96b722 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.mixin.implementations; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.collections.MaterialSetImpl; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -38,7 +38,7 @@ public abstract class ConfiguredFeatureMixin { } public Set terra$getSpawnable() { - return MaterialSetImpl.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), + return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index fd587ddd5..99a9d73f4 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.util.collections.MaterialSetImpl; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -14,7 +14,7 @@ public class RawTree implements Tree { // TODO: implement } @Override - public MaterialSetImpl getSpawnable() { - return MaterialSetImpl.empty(); + public MaterialSet getSpawnable() { + return MaterialSet.empty(); } } From d4d1a4434ea6c1924da9ab2031545fe1bd478095 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:18:27 -0700 Subject: [PATCH 0109/1529] terrascript module --- common/addons/terrascript/build.gradle.kts | 59 ++++++++++++++++++++++ settings.gradle.kts | 1 + 2 files changed, 60 insertions(+) create mode 100644 common/addons/terrascript/build.gradle.kts diff --git a/common/addons/terrascript/build.gradle.kts b/common/addons/terrascript/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/terrascript/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index fd19690a9..02d321adc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,6 +28,7 @@ include("common:addons:palette") include("common:addons:tree") include("common:addons:structure") include("common:addons:ore") +include("common:addons:terrascript") From fb63e388620610b673ae97c73c683932f2329b4a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:29:19 -0700 Subject: [PATCH 0110/1529] refactor terrascript --- .../structures/parser/lang/Item.java | 12 --- .../structures/parser/lang/Keyword.java | 4 - .../structures/parser/lang/Statement.java | 4 - .../lang/constants/NumericConstant.java | 14 ---- .../parser/lang/constants/StringConstant.java | 14 ---- .../lang/functions/FunctionBuilder.java | 15 ---- .../statements/GreaterThanStatement.java | 22 ----- .../statements/LessThanOrEqualsStatement.java | 22 ----- .../statements/LessThanStatement.java | 22 ----- .../statements/NotEqualsStatement.java | 22 ----- .../parser/lang/variables/Variable.java | 14 ---- .../builders/RecursionsFunctionBuilder.java | 26 ------ .../addons/terrascript}/buffer/Cell.java | 2 +- .../terrascript}/buffer/DirectBuffer.java | 2 +- .../buffer/IntermediateBuffer.java | 2 +- .../terrascript}/buffer/StructureBuffer.java | 2 +- .../buffer/items/BufferedBlock.java | 2 +- .../buffer/items/BufferedEntity.java | 2 +- .../buffer/items/BufferedLootApplication.java | 2 +- .../buffer/items/BufferedPulledBlock.java | 2 +- .../items/BufferedStateManipulator.java | 2 +- .../addons/terrascript}/parser/Parser.java | 84 +++++++++---------- .../terrascript}/parser/ParserUtil.java | 8 +- .../parser/exceptions/ParseException.java | 4 +- .../terrascript}/parser/lang/Block.java | 6 +- .../parser/lang/ImplementationArguments.java | 2 +- .../addons/terrascript/parser/lang/Item.java | 12 +++ .../terrascript/parser/lang/Keyword.java | 4 + .../terrascript}/parser/lang/Returnable.java | 2 +- .../terrascript/parser/lang/Statement.java | 4 + .../lang/constants/BooleanConstant.java | 4 +- .../lang/constants/ConstantExpression.java | 10 +-- .../lang/constants/NumericConstant.java | 15 ++++ .../parser/lang/constants/StringConstant.java | 15 ++++ .../parser/lang/functions/Function.java | 10 +-- .../lang/functions/FunctionBuilder.java | 15 ++++ .../lang/functions/def/FunctionBlock.java | 12 +-- .../lang/keywords/flow/BreakKeyword.java | 12 +-- .../lang/keywords/flow/ContinueKeyword.java | 12 +-- .../lang/keywords/flow/FailKeyword.java | 12 +-- .../lang/keywords/flow/ReturnKeyword.java | 12 +-- .../lang/keywords/looplike/ForKeyword.java | 16 ++-- .../lang/keywords/looplike/IfKeyword.java | 14 ++-- .../lang/keywords/looplike/WhileKeyword.java | 14 ++-- .../lang/operations/BinaryOperation.java | 10 +-- .../lang/operations/BooleanAndOperation.java | 6 +- .../lang/operations/BooleanNotOperation.java | 6 +- .../lang/operations/BooleanOrOperation.java | 6 +- .../operations/ConcatenationOperation.java | 10 +-- .../lang/operations/DivisionOperation.java | 10 +-- .../lang/operations/ModuloOperation.java | 6 +- .../operations/MultiplicationOperation.java | 6 +- .../lang/operations/NegationOperation.java | 6 +- .../operations/NumberAdditionOperation.java | 6 +- .../lang/operations/SubtractionOperation.java | 6 +- .../lang/operations/UnaryOperation.java | 10 +-- .../statements/EqualsStatement.java | 12 +-- .../GreaterOrEqualsThanStatement.java | 12 +-- .../statements/GreaterThanStatement.java | 22 +++++ .../statements/LessThanOrEqualsStatement.java | 22 +++++ .../statements/LessThanStatement.java | 22 +++++ .../statements/NotEqualsStatement.java | 22 +++++ .../parser/lang/variables/Assignment.java | 10 +-- .../lang/variables/BooleanVariable.java | 6 +- .../parser/lang/variables/Declaration.java | 10 +-- .../parser/lang/variables/Getter.java | 8 +- .../parser/lang/variables/NumberVariable.java | 6 +- .../parser/lang/variables/StringVariable.java | 6 +- .../parser/lang/variables/Variable.java | 14 ++++ .../terrascript}/script/StructureScript.java | 52 ++++++------ .../script/TerraImplementationArguments.java | 4 +- .../builders/BinaryNumberFunctionBuilder.java | 14 ++-- .../script/builders/BiomeFunctionBuilder.java | 10 +-- .../script/builders/BlockFunctionBuilder.java | 18 ++-- .../builders/CheckBlockFunctionBuilder.java | 10 +-- .../script/builders/CheckFunctionBuilder.java | 12 +-- .../builders/EntityFunctionBuilder.java | 12 +-- .../builders/GetMarkFunctionBuilder.java | 10 +-- .../script/builders/LootFunctionBuilder.java | 12 +-- .../script/builders/PullFunctionBuilder.java | 12 +-- .../builders/RandomFunctionBuilder.java | 12 +-- .../builders/RecursionsFunctionBuilder.java | 26 ++++++ .../builders/SetMarkFunctionBuilder.java | 12 +-- .../script/builders/StateFunctionBuilder.java | 12 +-- .../builders/StructureFunctionBuilder.java | 12 +-- .../builders/UnaryBooleanFunctionBuilder.java | 16 ++-- .../builders/UnaryNumberFunctionBuilder.java | 14 ++-- .../builders/UnaryStringFunctionBuilder.java | 14 ++-- .../builders/ZeroArgFunctionBuilder.java | 16 ++-- .../functions/AbstractBlockFunction.java | 14 ++-- .../script/functions/BiomeFunction.java | 14 ++-- .../script/functions/BlockFunction.java | 16 ++-- .../script/functions/CheckBlockFunction.java | 14 ++-- .../script/functions/CheckFunction.java | 14 ++-- .../functions/DynamicBlockFunction.java | 12 +-- .../script/functions/EntityFunction.java | 18 ++-- .../script/functions/GetMarkFunction.java | 14 ++-- .../script/functions/LootFunction.java | 16 ++-- .../script/functions/PullFunction.java | 18 ++-- .../script/functions/RandomFunction.java | 14 ++-- .../script/functions/RecursionsFunction.java | 12 +-- .../script/functions/SetMarkFunction.java | 14 ++-- .../script/functions/StateFunction.java | 14 ++-- .../script/functions/StructureFunction.java | 14 ++-- .../addons/terrascript}/tokenizer/Char.java | 2 +- .../terrascript}/tokenizer/Lookahead.java | 2 +- .../terrascript}/tokenizer/Position.java | 2 +- .../addons/terrascript}/tokenizer/Token.java | 2 +- .../terrascript}/tokenizer/Tokenizer.java | 10 +-- .../tokenizer/exceptions/EOFException.java | 4 +- .../tokenizer/exceptions/FormatException.java | 4 +- .../exceptions/TokenizerException.java | 6 +- .../test/java/structure/LookaheadTest.java | 2 +- .../src/test/java/structure/ParserTest.java | 19 +++-- 114 files changed, 671 insertions(+), 668 deletions(-) delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/Cell.java (90%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/DirectBuffer.java (94%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/IntermediateBuffer.java (94%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/StructureBuffer.java (96%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/items/BufferedBlock.java (94%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/items/BufferedEntity.java (92%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/items/BufferedLootApplication.java (96%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/items/BufferedPulledBlock.java (90%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/buffer/items/BufferedStateManipulator.java (92%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/Parser.java (85%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/ParserUtil.java (94%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/exceptions/ParseException.java (81%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/Block.java (89%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/ImplementationArguments.java (63%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/Returnable.java (86%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/constants/BooleanConstant.java (64%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/constants/ConstantExpression.java (60%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/functions/Function.java (55%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/functions/def/FunctionBlock.java (72%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/flow/BreakKeyword.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/flow/ContinueKeyword.java (57%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/flow/FailKeyword.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/flow/ReturnKeyword.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/looplike/ForKeyword.java (70%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/looplike/IfKeyword.java (78%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/keywords/looplike/WhileKeyword.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/BinaryOperation.java (65%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/BooleanAndOperation.java (65%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/BooleanNotOperation.java (62%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/BooleanOrOperation.java (65%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/ConcatenationOperation.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/DivisionOperation.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/ModuloOperation.java (66%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/MultiplicationOperation.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/NegationOperation.java (62%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/NumberAdditionOperation.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/SubtractionOperation.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/UnaryOperation.java (61%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/statements/EqualsStatement.java (60%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java (50%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/Assignment.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/BooleanVariable.java (73%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/Declaration.java (81%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/Getter.java (70%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/NumberVariable.java (73%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/parser/lang/variables/StringVariable.java (73%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/StructureScript.java (80%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/TerraImplementationArguments.java (89%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/BinaryNumberFunctionBuilder.java (71%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/BiomeFunctionBuilder.java (70%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/BlockFunctionBuilder.java (70%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/CheckBlockFunctionBuilder.java (66%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/CheckFunctionBuilder.java (66%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/EntityFunctionBuilder.java (69%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/GetMarkFunctionBuilder.java (67%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/LootFunctionBuilder.java (74%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/PullFunctionBuilder.java (69%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/RandomFunctionBuilder.java (55%) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/SetMarkFunctionBuilder.java (66%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/StateFunctionBuilder.java (71%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/StructureFunctionBuilder.java (76%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/UnaryBooleanFunctionBuilder.java (68%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/UnaryNumberFunctionBuilder.java (70%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/UnaryStringFunctionBuilder.java (69%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/builders/ZeroArgFunctionBuilder.java (66%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/AbstractBlockFunction.java (78%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/BiomeFunction.java (74%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/BlockFunction.java (65%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/CheckBlockFunction.java (73%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/CheckFunction.java (83%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/DynamicBlockFunction.java (69%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/EntityFunction.java (72%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/GetMarkFunction.java (71%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/LootFunction.java (78%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/PullFunction.java (73%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/RandomFunction.java (59%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/RecursionsFunction.java (56%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/SetMarkFunction.java (73%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/StateFunction.java (75%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/script/functions/StructureFunction.java (84%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/Char.java (94%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/Lookahead.java (97%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/Position.java (81%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/Token.java (98%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/Tokenizer.java (96%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/exceptions/EOFException.java (71%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/exceptions/FormatException.java (71%) rename common/addons/{structure/src/main/java/com/dfsek/terra/addons/structure/structures => terrascript/src/main/java/com/dfsek/terra/addons/terrascript}/tokenizer/exceptions/TokenizerException.java (62%) rename common/addons/{structure => terrascript}/src/test/java/structure/LookaheadTest.java (87%) rename common/addons/{structure => terrascript}/src/test/java/structure/ParserTest.java (77%) diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java deleted file mode 100644 index 87d13262f..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Item.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; - -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -import java.util.Map; - -public interface Item { - T apply(ImplementationArguments implementationArguments, Map> variableMap); - - Position getPosition(); -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java deleted file mode 100644 index 8633e2ff4..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Keyword.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; - -public interface Keyword extends Returnable { -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java deleted file mode 100644 index 50b0ae529..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Statement.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; - -public interface Statement extends Item { -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java deleted file mode 100644 index 31103b510..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/NumericConstant.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.constants; - -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class NumericConstant extends ConstantExpression { - public NumericConstant(Number constant, Position position) { - super(constant, position); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java deleted file mode 100644 index 3fd056343..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/StringConstant.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.constants; - -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class StringConstant extends ConstantExpression { - public StringConstant(String constant, Position position) { - super(constant, position); - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java deleted file mode 100644 index 76df27d3f..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/FunctionBuilder.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.functions; - -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -import java.util.List; - -public interface FunctionBuilder> { - T build(List> argumentList, Position position) throws ParseException; - - int argNumber(); - - Returnable.ReturnType getArgument(int position); -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java deleted file mode 100644 index 2849b618e..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterThanStatement.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; - -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class GreaterThanStatement extends BinaryOperation { - public GreaterThanStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() > right.doubleValue(); - } - - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java deleted file mode 100644 index 4951da6c1..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; - -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class LessThanOrEqualsStatement extends BinaryOperation { - public LessThanOrEqualsStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() <= right.doubleValue(); - } - - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java deleted file mode 100644 index 02556e4e9..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/LessThanStatement.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; - -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class LessThanStatement extends BinaryOperation { - public LessThanStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() < right.doubleValue(); - } - - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java deleted file mode 100644 index a34867443..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/NotEqualsStatement.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; - -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public class NotEqualsStatement extends BinaryOperation { - public NotEqualsStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Object left, Object right) { - return !left.equals(right); - } - - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java deleted file mode 100644 index b97785091..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Variable.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; - -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -public interface Variable { - T getValue(); - - void setValue(T value); - - Returnable.ReturnType getType(); - - Position getPosition(); -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java deleted file mode 100644 index d871773f2..000000000 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RecursionsFunctionBuilder.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; - -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.RecursionsFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; - -import java.util.List; - -public class RecursionsFunctionBuilder implements FunctionBuilder { - @Override - public RecursionsFunction build(List> argumentList, Position position) throws ParseException { - return new RecursionsFunction(position); - } - - @Override - public int argNumber() { - return 0; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return null; - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java similarity index 90% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java index 559011c43..517803bc9 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/Cell.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer; +package com.dfsek.terra.addons.terrascript.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java similarity index 94% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java index 88413aef8..71adec30f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/DirectBuffer.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer; +package com.dfsek.terra.addons.terrascript.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java similarity index 94% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java index f2076bbc8..4c59a1cf9 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/IntermediateBuffer.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer; +package com.dfsek.terra.addons.terrascript.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java similarity index 96% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java index 94e7d4360..79025f0d5 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/StructureBuffer.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer; +package com.dfsek.terra.addons.terrascript.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java similarity index 94% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java index c837aecd9..0ccaaa938 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedBlock.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer.items; +package com.dfsek.terra.addons.terrascript.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java similarity index 92% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java index 08f54be7f..5cf0bc1cf 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedEntity.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer.items; +package com.dfsek.terra.addons.terrascript.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.Entity; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java similarity index 96% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index d006f691a..7a37c1bfb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer.items; +package com.dfsek.terra.addons.terrascript.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java similarity index 90% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java index e3125a0f3..2073a0105 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer.items; +package com.dfsek.terra.addons.terrascript.buffer.items; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java similarity index 92% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java index 91cc8ec54..769f29f26 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.structure.buffer.items; +package com.dfsek.terra.addons.terrascript.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java similarity index 85% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index 643159c2d..185227bb1 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/Parser.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -1,46 +1,46 @@ -package com.dfsek.terra.addons.structure.structures.parser; +package com.dfsek.terra.addons.terrascript.parser; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.Item; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.NumericConstant; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.BreakKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.ContinueKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.FailKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow.ReturnKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.ForKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.IfKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike.WhileKeyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanAndOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanNotOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BooleanOrOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.ConcatenationOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.DivisionOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.ModuloOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.MultiplicationOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.NegationOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.NumberAdditionOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.SubtractionOperation; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.EqualsStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.GreaterOrEqualsThanStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.GreaterThanStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.LessThanOrEqualsStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.LessThanStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements.NotEqualsStatement; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Assignment; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Declaration; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Getter; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; -import com.dfsek.terra.addons.structure.structures.tokenizer.Token; -import com.dfsek.terra.addons.structure.structures.tokenizer.Tokenizer; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.Item; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.NumericConstant; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.BreakKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.ContinueKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.FailKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.ReturnKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.ForKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.IfKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.WhileKeyword; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanAndOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanNotOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanOrOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.ConcatenationOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.DivisionOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.ModuloOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.MultiplicationOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.NegationOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.NumberAdditionOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.SubtractionOperation; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.EqualsStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.GreaterOrEqualsThanStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.GreaterThanStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.LessThanOrEqualsStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.LessThanStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.NotEqualsStatement; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Assignment; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Declaration; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Getter; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Token; +import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer; import com.dfsek.terra.api.util.GlueList; import java.util.Collections; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java similarity index 94% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java index 2a5c00bf0..3e3d7aa48 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/ParserUtil.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.structure.structures.parser; +package com.dfsek.terra.addons.terrascript.parser; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Token; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Token; import java.util.Arrays; import java.util.HashMap; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java similarity index 81% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java index 730e77582..f9e6a26b2 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/exceptions/ParseException.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.addons.structure.structures.parser.exceptions; +package com.dfsek.terra.addons.terrascript.parser.exceptions; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class ParseException extends Exception { private static final long serialVersionUID = 6744390543046766386L; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java similarity index 89% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java index 15e6bfcae..fe9e70930 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Block.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; +package com.dfsek.terra.addons.terrascript.parser.lang; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.HashMap; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java similarity index 63% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java index 7a4f0181b..1a5963d20 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/ImplementationArguments.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; +package com.dfsek.terra.addons.terrascript.parser.lang; /** * Arguments passed to {@link Item}s by the implementation diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java new file mode 100644 index 000000000..c648f6ea5 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.terrascript.parser.lang; + +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +import java.util.Map; + +public interface Item { + T apply(ImplementationArguments implementationArguments, Map> variableMap); + + Position getPosition(); +} diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java new file mode 100644 index 000000000..5a76a66bd --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.addons.terrascript.parser.lang; + +public interface Keyword extends Returnable { +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java similarity index 86% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java index aff5dcb88..fe38e8d89 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/Returnable.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang; +package com.dfsek.terra.addons.terrascript.parser.lang; public interface Returnable extends Item { ReturnType returnType(); diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java new file mode 100644 index 000000000..c0030a0ed --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.addons.terrascript.parser.lang; + +public interface Statement extends Item { +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java similarity index 64% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java index d4910c6ae..0cde1207f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/BooleanConstant.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.constants; +package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanConstant extends ConstantExpression { public BooleanConstant(Boolean constant, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java similarity index 60% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java index 57c4fb1d0..da15d87b6 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/constants/ConstantExpression.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.constants; +package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java new file mode 100644 index 000000000..09b408a99 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.constants; + +import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; + +public class NumericConstant extends ConstantExpression { + public NumericConstant(Number constant, Position position) { + super(constant, position); + } + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.NUMBER; + } +} diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java new file mode 100644 index 000000000..364ae62c7 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.constants; + +import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; + +public class StringConstant extends ConstantExpression { + public StringConstant(String constant, Position position) { + super(constant, position); + } + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.STRING; + } +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java similarity index 55% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java index b164570f3..517fecfc4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/Function.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.functions; +package com.dfsek.terra.addons.terrascript.parser.lang.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java new file mode 100644 index 000000000..d40c02d96 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.functions; + +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +import java.util.List; + +public interface FunctionBuilder> { + T build(List> argumentList, Position position) throws ParseException; + + int argNumber(); + + Returnable.ReturnType getArgument(int position); +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java similarity index 72% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java index 41fd4816d..11fb44c8e 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/functions/def/FunctionBlock.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.functions.def; +package com.dfsek.terra.addons.terrascript.parser.lang.functions.def; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Item; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Item; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.HashMap; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java index 2437964a0..efc225687 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/BreakKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java similarity index 57% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java index ac1060e9d..5cb3c859b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ContinueKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java index f26e49707..4c0befe8c 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/FailKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java index 4582c0ff6..f7bf324eb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/flow/ReturnKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.flow; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java similarity index 70% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java index efd6c2ddf..af245523f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/ForKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Item; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Item; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java similarity index 78% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java index bbf22bab3..ef863012b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import org.jetbrains.annotations.Nullable; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java index 29d7e023b..52c53d454 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/keywords/looplike/WhileKeyword.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.keywords.looplike; +package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Keyword; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java similarity index 65% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java index f0c4e3bec..0d9a517ab 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BinaryOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java similarity index 65% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java index e2efc46f4..85e2bea9b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanAndOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanAndOperation extends BinaryOperation { public BooleanAndOperation(Returnable left, Returnable right, Position start) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java similarity index 62% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java index ba7c9b8a4..62065d666 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanNotOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanNotOperation extends UnaryOperation { public BooleanNotOperation(Returnable input, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java similarity index 65% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java index a34669683..c80f616dc 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanOrOperation extends BinaryOperation { public BooleanOrOperation(Returnable left, Returnable right, Position start) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java index 461f4db91..68b22a946 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ConcatenationOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class ConcatenationOperation extends BinaryOperation { public ConcatenationOperation(Returnable left, Returnable right, Position position) { @@ -14,7 +14,7 @@ public class ConcatenationOperation extends BinaryOperation { } @Override - public ReturnType returnType() { - return ReturnType.STRING; + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.STRING; } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java index 536b31f7b..da49c6d01 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/DivisionOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class DivisionOperation extends BinaryOperation { public DivisionOperation(Returnable left, Returnable right, Position position) { @@ -14,7 +14,7 @@ public class DivisionOperation extends BinaryOperation { } @Override - public ReturnType returnType() { - return ReturnType.NUMBER; + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.NUMBER; } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java similarity index 66% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java index e2044f0c7..7faed9467 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/ModuloOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class ModuloOperation extends BinaryOperation { public ModuloOperation(Returnable left, Returnable right, Position start) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java index 66dfd7666..935f23a11 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class MultiplicationOperation extends BinaryOperation { public MultiplicationOperation(Returnable left, Returnable right, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java similarity index 62% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java index 27fb99671..b73e3d164 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NegationOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class NegationOperation extends UnaryOperation { public NegationOperation(Returnable input, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java index ee9863445..cb69d98c8 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class NumberAdditionOperation extends BinaryOperation { public NumberAdditionOperation(Returnable left, Returnable right, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java index 457e26282..c1697f8cb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class SubtractionOperation extends BinaryOperation { public SubtractionOperation(Returnable left, Returnable right, Position position) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java similarity index 61% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java index 07a7c4548..9872397d0 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/UnaryOperation.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations; +package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java similarity index 60% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java index 2bc0a330c..17f462a01 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/EqualsStatement.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import net.jafama.FastMath; public class EqualsStatement extends BinaryOperation { @@ -23,7 +23,7 @@ public class EqualsStatement extends BinaryOperation { @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.BOOLEAN; } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java similarity index 50% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java index 3574450fc..59430b2c4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.operations.statements; +package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class GreaterOrEqualsThanStatement extends BinaryOperation { public GreaterOrEqualsThanStatement(Returnable left, Returnable right, Position position) { @@ -16,7 +16,7 @@ public class GreaterOrEqualsThanStatement extends BinaryOperation { + public GreaterThanStatement(Returnable left, Returnable right, Position position) { + super(left, right, position); + } + + @Override + public Boolean apply(Number left, Number right) { + return left.doubleValue() > right.doubleValue(); + } + + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.BOOLEAN; + } +} diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java new file mode 100644 index 000000000..e5fc297d9 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; + +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +public class LessThanOrEqualsStatement extends BinaryOperation { + public LessThanOrEqualsStatement(Returnable left, Returnable right, Position position) { + super(left, right, position); + } + + @Override + public Boolean apply(Number left, Number right) { + return left.doubleValue() <= right.doubleValue(); + } + + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.BOOLEAN; + } +} diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java new file mode 100644 index 000000000..093e7e297 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; + +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +public class LessThanStatement extends BinaryOperation { + public LessThanStatement(Returnable left, Returnable right, Position position) { + super(left, right, position); + } + + @Override + public Boolean apply(Number left, Number right) { + return left.doubleValue() < right.doubleValue(); + } + + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.BOOLEAN; + } +} diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java new file mode 100644 index 000000000..854a96f5a --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; + +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +public class NotEqualsStatement extends BinaryOperation { + public NotEqualsStatement(Returnable left, Returnable right, Position position) { + super(left, right, position); + } + + @Override + public Boolean apply(Object left, Object right) { + return !left.equals(right); + } + + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.BOOLEAN; + } +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java index f2794376d..952a413b6 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Assignment.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Item; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Item; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java index 1f609b468..257e05855 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/BooleanVariable.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanVariable implements Variable { private final Position position; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java similarity index 81% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java index 9d18098d7..6830eb272 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Declaration.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Item; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Item; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java similarity index 70% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java index e6cbc40bd..197ac6afa 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/Getter.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java index ba26ebace..40453cbfe 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/NumberVariable.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class NumberVariable implements Variable { private final Position position; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java index ae9ac660a..01abb4dcc 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/parser/lang/variables/StringVariable.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.parser.lang.variables; +package com.dfsek.terra.addons.terrascript.parser.lang.variables; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class StringVariable implements Variable { private final Position position; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java new file mode 100644 index 000000000..e39e5289f --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java @@ -0,0 +1,14 @@ +package com.dfsek.terra.addons.terrascript.parser.lang.variables; + +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +public interface Variable { + T getValue(); + + void setValue(T value); + + Returnable.ReturnType getType(); + + Position getPosition(); +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java similarity index 80% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 9e3d4aeb0..56bb2c3a8 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/StructureScript.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -1,5 +1,30 @@ -package com.dfsek.terra.addons.structure.structures.script; +package com.dfsek.terra.addons.terrascript.script; +import com.dfsek.terra.addons.terrascript.buffer.DirectBuffer; +import com.dfsek.terra.addons.terrascript.buffer.StructureBuffer; +import com.dfsek.terra.addons.terrascript.parser.Parser; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.BlockFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.CheckBlockFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.CheckFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.EntityFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.GetMarkFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.LootFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.PullFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.RandomFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.RecursionsFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.SetMarkFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.StateFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.StructureFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.UnaryBooleanFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.UnaryNumberFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.UnaryStringFunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.builders.ZeroArgFunctionBuilder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.registry.Registry; @@ -7,31 +32,6 @@ import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.addons.structure.structures.parser.Parser; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.BinaryNumberFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.BiomeFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.BlockFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.CheckBlockFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.CheckFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.EntityFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.GetMarkFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.LootFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.PullFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.RandomFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.RecursionsFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.SetMarkFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.StateFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.StructureFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.UnaryBooleanFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.UnaryNumberFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.UnaryStringFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.addons.structure.structures.structure.buffer.DirectBuffer; -import com.dfsek.terra.addons.structure.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java similarity index 89% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java index a60b2c12f..3c5782ce7 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/TerraImplementationArguments.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.structure.structures.script; +package com.dfsek.terra.addons.terrascript.script; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.api.world.World; import java.util.Random; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java similarity index 71% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java index ab4e02696..3f6ae1bc5 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java similarity index 70% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java index b9a58e1b0..2a8cf3cfb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.BiomeFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java similarity index 70% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 17144882d..f0e22e5bd 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/BlockFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.AbstractBlockFunction; -import com.dfsek.terra.addons.structure.structures.script.functions.BlockFunction; -import com.dfsek.terra.addons.structure.structures.script.functions.DynamicBlockFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.AbstractBlockFunction; +import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; +import com.dfsek.terra.addons.terrascript.script.functions.DynamicBlockFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java similarity index 66% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java index 11cf97a28..bd737eb39 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.CheckBlockFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.CheckBlockFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java similarity index 66% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java index afc9d58f4..d77a38c3c 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/CheckFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.CheckFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java similarity index 69% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index c13ca5a61..519a6b61d 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/EntityFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.EntityFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java similarity index 67% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java index b7c249da8..c636d44f4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.GetMarkFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.GetMarkFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java similarity index 74% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java index d3c233180..5821edea1 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/LootFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.script.StructureScript; +import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.StructureScript; -import com.dfsek.terra.addons.structure.structures.script.functions.LootFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java similarity index 69% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index 3f93abd51..2af112567 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/PullFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.PullFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java similarity index 55% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java index 268604ad7..ab816c94a 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/RandomFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.RandomFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.RandomFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java new file mode 100644 index 000000000..be812d3a3 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.addons.terrascript.script.builders; + +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.RecursionsFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + +import java.util.List; + +public class RecursionsFunctionBuilder implements FunctionBuilder { + @Override + public RecursionsFunction build(List> argumentList, Position position) throws ParseException { + return new RecursionsFunction(position); + } + + @Override + public int argNumber() { + return 0; + } + + @Override + public Returnable.ReturnType getArgument(int position) { + return null; + } +} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java similarity index 66% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java index 8f74ff9a7..8c06c017e 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.SetMarkFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.SetMarkFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java similarity index 71% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index ff789fc11..5bfdb46bb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StateFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.StateFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java similarity index 76% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index b86507c4d..ae7e665ea 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/StructureFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.script.functions.StructureFunction; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.stream.Collectors; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java similarity index 68% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java index 67c5ae1b3..e38678a47 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java similarity index 70% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java index 45187c29f..168507661 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java similarity index 69% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java index d81fb8a11..846dfc774 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java similarity index 66% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java index baabd312d..9c1a84b34 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.script.builders; +package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.List; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java similarity index 78% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java index 441a857a6..fda277f76 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/AbstractBlockFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java similarity index 74% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index f9137b298..04cb5a08f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BiomeFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java similarity index 65% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 502d10f00..cfd7e2ce4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/BlockFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java index 4e54d7765..ce40a7284 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckBlockFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java similarity index 83% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index 58302d170..f744396d5 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/CheckFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java similarity index 69% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java index b0312bd72..bbc77f238 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/DynamicBlockFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java similarity index 72% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index 8b71b9a38..422ac210b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/EntityFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedEntity; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java similarity index 71% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java index 7543f35a5..ad2a0c659 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/GetMarkFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java similarity index 78% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 3a5bfd605..76009f70b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/LootFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.StructureScript; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.StructureScript; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedLootApplication; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index e16be8597..3d579d315 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/PullFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedPulledBlock; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java similarity index 59% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java index 1418a9b3c..c7b51990a 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RandomFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java similarity index 56% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java index b2656d746..dcbfdbee7 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/RecursionsFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java similarity index 73% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java index d250423a2..506078c2e 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/SetMarkFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java similarity index 75% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index f6d3c7d6e..ab407334b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StateFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedStateManipulator; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java similarity index 84% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index 9e91a79a7..10d67f00a 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/script/functions/StructureFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.structure.structures.script.functions; +package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.structure.structures.structure.buffer.IntermediateBuffer; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java similarity index 94% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java index 3b69c94fb..682506740 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Char.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer; +package com.dfsek.terra.addons.terrascript.tokenizer; public class Char { private final char character; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java similarity index 97% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java index 3135c8a8e..35f75ba81 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Lookahead.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer; +package com.dfsek.terra.addons.terrascript.tokenizer; import com.dfsek.terra.api.util.GlueList; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java similarity index 81% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java index 481d83244..0a817a183 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Position.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer; +package com.dfsek.terra.addons.terrascript.tokenizer; public class Position { private final int line; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java similarity index 98% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java index 4b09bad46..6d69d556a 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Token.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer; +package com.dfsek.terra.addons.terrascript.tokenizer; public class Token { private final String content; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java similarity index 96% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java index e1ff7440f..2c707b2c3 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/Tokenizer.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer; +package com.dfsek.terra.addons.terrascript.tokenizer; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.EOFException; -import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.FormatException; -import com.dfsek.terra.addons.structure.structures.tokenizer.exceptions.TokenizerException; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.EOFException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.FormatException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.TokenizerException; import com.google.common.collect.Sets; import java.io.StringReader; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java similarity index 71% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java index 343f4424e..6db82c522 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/EOFException.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class EOFException extends TokenizerException { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java similarity index 71% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java index e9af70b91..d62119016 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/FormatException.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class FormatException extends TokenizerException { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java similarity index 62% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java rename to common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java index c078ede64..05bad97b6 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/tokenizer/exceptions/TokenizerException.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.structure.structures.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public abstract class TokenizerException extends ParseException { diff --git a/common/addons/structure/src/test/java/structure/LookaheadTest.java b/common/addons/terrascript/src/test/java/structure/LookaheadTest.java similarity index 87% rename from common/addons/structure/src/test/java/structure/LookaheadTest.java rename to common/addons/terrascript/src/test/java/structure/LookaheadTest.java index 4fabd2f6f..9b50801cc 100644 --- a/common/addons/structure/src/test/java/structure/LookaheadTest.java +++ b/common/addons/terrascript/src/test/java/structure/LookaheadTest.java @@ -1,6 +1,6 @@ package structure; -import com.dfsek.terra.addons.structure.structures.tokenizer.Lookahead; +import com.dfsek.terra.addons.terrascript.tokenizer.Lookahead; import org.junit.jupiter.api.Test; import java.io.StringReader; diff --git a/common/addons/structure/src/test/java/structure/ParserTest.java b/common/addons/terrascript/src/test/java/structure/ParserTest.java similarity index 77% rename from common/addons/structure/src/test/java/structure/ParserTest.java rename to common/addons/terrascript/src/test/java/structure/ParserTest.java index c1402eafc..d8e8b6ade 100644 --- a/common/addons/structure/src/test/java/structure/ParserTest.java +++ b/common/addons/terrascript/src/test/java/structure/ParserTest.java @@ -1,14 +1,15 @@ package structure; -import com.dfsek.terra.addons.structure.structures.parser.Parser; -import com.dfsek.terra.addons.structure.structures.parser.exceptions.ParseException; -import com.dfsek.terra.addons.structure.structures.parser.lang.Block; -import com.dfsek.terra.addons.structure.structures.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.structure.structures.parser.lang.Returnable; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.structure.structures.parser.lang.variables.Variable; -import com.dfsek.terra.addons.structure.structures.tokenizer.Position; + +import com.dfsek.terra.addons.terrascript.parser.Parser; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; From 8213d23d72c0211eeb90ff18cb25c059836e94c7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:36:24 -0700 Subject: [PATCH 0111/1529] compile terrascript --- .../terra/addons/terrascript/buffer/Cell.java | 4 ++-- .../buffer/items/BufferedLootApplication.java | 7 ++++--- .../terra/addons/terrascript/parser/Parser.java | 10 +++++----- .../script/functions/AbstractBlockFunction.java | 6 +++--- .../script/functions/CheckFunction.java | 14 +++++--------- .../script/functions/EntityFunction.java | 2 +- .../terrascript/script/functions/LootFunction.java | 2 +- .../terrascript/script/functions/PullFunction.java | 2 +- .../script/functions/StateFunction.java | 2 +- .../script/functions/StructureFunction.java | 2 +- .../addons/terrascript/tokenizer/Lookahead.java | 4 ++-- .../terrascript}/src/test/resources/test.tesf | 0 .../com/dfsek/terra/api/util/RotationUtil.java | 0 13 files changed, 26 insertions(+), 29 deletions(-) rename common/{implementation => addons/terrascript}/src/test/resources/test.tesf (100%) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/RotationUtil.java (100%) diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java index 517803bc9..534e57c5b 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java @@ -1,14 +1,14 @@ package com.dfsek.terra.addons.terrascript.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; +import java.util.ArrayList; import java.util.List; public class Cell implements BufferedItem { - private final List items = new GlueList<>(); + private final List items = new ArrayList<>(); private String mark = null; @Override diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index 7a37c1bfb..77e357dd2 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -1,16 +1,17 @@ package com.dfsek.terra.addons.terrascript.buffer.items; +import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.addons.structure.structures.script.StructureScript; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; +import java.util.Random; + public class BufferedLootApplication implements BufferedItem { private final LootTable table; private final TerraPlugin main; @@ -36,7 +37,7 @@ public class BufferedLootApplication implements BufferedItem { main.getEventManager().callEvent(event); if(event.isCancelled()) return; - event.getTable().fillInventory(container.getInventory(), new FastRandom(origin.hashCode())); + event.getTable().fillInventory(container.getInventory(), new Random(origin.hashCode())); data.update(false); } catch(Exception e) { main.logger().warning("Could not apply loot at " + origin + ": " + e.getMessage()); diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index 185227bb1..b359e7b08 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -41,8 +41,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.Getter; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.addons.terrascript.tokenizer.Token; import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer; -import com.dfsek.terra.api.util.GlueList; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -52,7 +52,7 @@ import java.util.Map; public class Parser { private final String data; private final Map>> functions = new HashMap<>(); - private final List ignoredFunctions = new GlueList<>(); + private final List ignoredFunctions = new ArrayList<>(); private String id; @@ -132,7 +132,7 @@ public class Parser { Block elseBlock = null; Block statement = parseStatementBlock(tokens, variableMap, loop); - List, Block>> elseIf = new GlueList<>(); + List, Block>> elseIf = new ArrayList<>(); while(tokens.hasNext() && tokens.get().getType().equals(Token.Type.ELSE)) { tokens.consume(); // Consume else. @@ -336,7 +336,7 @@ public class Parser { } private Block parseBlock(Tokenizer tokens, Map superVars, boolean loop) throws ParseException { - List> parsedItems = new GlueList<>(); + List> parsedItems = new ArrayList<>(); Map parsedVariables = new HashMap<>(superVars); // New hashmap as to not mutate parent scope's declarations. @@ -431,7 +431,7 @@ public class Parser { private List> getArgs(Tokenizer tokens, Map variableMap) throws ParseException { - List> args = new GlueList<>(); + List> args = new ArrayList<>(); while(!tokens.get().getType().equals(Token.Type.GROUP_END)) { args.add(parseExpression(tokens, true, variableMap)); diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java index fda277f76..72ff12807 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java @@ -1,14 +1,14 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index f744396d5..f79921a6e 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -2,20 +2,17 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.config.templates.BiomeTemplate; import net.jafama.FastMath; import java.util.Map; @@ -57,11 +54,10 @@ public class CheckFunction implements Function { if(comp > 0) return "LAND"; // If noise val is greater than zero, location will always be land. - BiomeProvider provider = tw.getBiomeProvider(); - UserDefinedBiome b = (UserDefinedBiome) provider.getBiome(vector.getBlockX(), vector.getBlockZ()); - BiomeTemplate c = b.getConfig(); + //BiomeProvider provider = tw.getBiomeProvider(); + //TerraBiome b = provider.getBiome(vector.getBlockX(), vector.getBlockZ()); - if(vector.getY() > c.getSeaLevel()) return "AIR"; // Above sea level + //if(vector.getY() > c.getSeaLevel()) return "AIR"; // Above sea level return "OCEAN"; // Below sea level } diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index 422ac210b..e9c8ddde6 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedEntity; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -9,7 +10,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 76009f70b..72ae130b0 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedLootApplication; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; @@ -9,7 +10,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index 3d579d315..f1e731183 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedPulledBlock; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -9,7 +10,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedPulledBlock; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index ab407334b..a0cabc253 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedStateManipulator; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.items.BufferedStateManipulator; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index 10d67f00a..f238232ad 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.buffer.IntermediateBuffer; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; @@ -9,7 +10,6 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.structure.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java index 35f75ba81..633d2ab52 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java @@ -1,16 +1,16 @@ package com.dfsek.terra.addons.terrascript.tokenizer; -import com.dfsek.terra.api.util.GlueList; import java.io.IOException; import java.io.Reader; +import java.util.ArrayList; import java.util.List; /** * Stream-like data structure that allows viewing future elements without consuming current. */ public class Lookahead { - private final List buffer = new GlueList<>(); + private final List buffer = new ArrayList<>(); private final Reader input; private int index = 0; private int line = 0; diff --git a/common/implementation/src/test/resources/test.tesf b/common/addons/terrascript/src/test/resources/test.tesf similarity index 100% rename from common/implementation/src/test/resources/test.tesf rename to common/addons/terrascript/src/test/resources/test.tesf diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/RotationUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java From 9f37285c9a74e0d86e4959fc9060839298e9db93 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 01:37:53 -0700 Subject: [PATCH 0112/1529] create TerraScriptAddon --- .../addons/terrascript/TerraScriptAddon.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java new file mode 100644 index 000000000..56842b625 --- /dev/null +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.terrascript; + +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.injection.annotations.Inject; + +@Addon("terrascript") +@Author("Terra") +@Version("1.0.0") +public class TerraScriptAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From 58a5160d533d042126b8677300da0f173998cfe9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 02:05:26 -0700 Subject: [PATCH 0113/1529] api to access Loader --- .../dfsek/terra/api/config/ConfigPack.java | 2 + .../com/dfsek/terra/api/config/Loader.java | 45 +++++++++++++++++++ .../terra/api/util}/ExceptionalConsumer.java | 2 +- .../config/fileloaders/FolderLoader.java | 3 +- .../{Loader.java => LoaderImpl.java} | 21 ++++----- .../terra/config/fileloaders/ZIPLoader.java | 3 +- .../loaders/config/BufferedImageLoader.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 7 ++- 8 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/Loader.java rename common/{implementation/src/main/java/com/dfsek/terra/config/fileloaders => api/src/main/java/com/dfsek/terra/api/util}/ExceptionalConsumer.java (78%) rename common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/{Loader.java => LoaderImpl.java} (83%) 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 7a7b45a8e..25543703c 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 @@ -21,6 +21,8 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde void registerConfigType(ConfigType type, String id, int priority); + Loader getLoader(); + Set addons(); String getID(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java new file mode 100644 index 000000000..596ec8b63 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -0,0 +1,45 @@ +package com.dfsek.terra.api.config; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.terra.api.util.ExceptionalConsumer; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public interface Loader { + /** + * Do something with the InputStreams. + * + * @param consumer Something to do with the streams. + */ + Loader then(ExceptionalConsumer> consumer) throws ConfigException; + + Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException; + + Loader thenEntries(ExceptionalConsumer>> consumer) throws ConfigException; + + /** + * Get a single file from this Loader. + * + * @param singleFile File to get + * @return InputStream from file. + */ + InputStream get(String singleFile) throws IOException; + + /** + * Open a subdirectory. + * + * @param directory Directory to open + * @param extension + */ + Loader open(String directory, String extension); + + /** + * Close all InputStreams opened. + */ + Loader close(); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java b/common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java similarity index 78% rename from common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java rename to common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java index 9037f4d00..2c80c66f1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ExceptionalConsumer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.fileloaders; +package com.dfsek.terra.api.util; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java index f27728d92..b1ebb1aea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java @@ -12,7 +12,7 @@ import java.util.stream.Stream; /** * Load all {@code *.yml} files from a {@link java.nio.file.Path}. */ -public class FolderLoader extends Loader { +public class FolderLoader extends LoaderImpl { private final Path path; public FolderLoader(Path path) { @@ -24,7 +24,6 @@ public class FolderLoader extends Loader { return new FileInputStream(new File(path.toFile(), singleFile)); } - @Override protected void load(String directory, String extension) { File newPath = new File(path.toFile(), directory); newPath.mkdirs(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java similarity index 83% rename from common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java rename to common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index b80abe274..19744af05 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/Loader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -2,6 +2,8 @@ package com.dfsek.terra.config.fileloaders; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.util.ExceptionalConsumer; import com.dfsek.terra.api.util.GlueList; import java.io.IOException; @@ -11,7 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -public abstract class Loader { +public abstract class LoaderImpl implements Loader { protected final Map streams = new HashMap<>(); /** @@ -19,6 +21,7 @@ public abstract class Loader { * * @param consumer Something to do with the streams. */ + @Override public Loader then(ExceptionalConsumer> consumer) throws ConfigException { List list = new GlueList<>(); streams.forEach((id, stream) -> { @@ -28,41 +31,35 @@ public abstract class Loader { return this; } + @Override public Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException { consumer.accept(new GlueList<>(streams.keySet())); return this; } + @Override public Loader thenEntries(ExceptionalConsumer>> consumer) throws ConfigException { consumer.accept(streams.entrySet()); return this; } - /** - * Get a single file from this Loader. - * - * @param singleFile File to get - * @return InputStream from file. - */ - public abstract InputStream get(String singleFile) throws IOException; - /** * Open a subdirectory. * * @param directory Directory to open * @param extension */ - public Loader open(String directory, String extension) { + @Override + public LoaderImpl open(String directory, String extension) { if(streams.size() != 0) throw new IllegalStateException("Attempted to load new directory before closing existing InputStreams"); load(directory, extension); return this; } - protected abstract void load(String directory, String extension); - /** * Close all InputStreams opened. */ + @Override public Loader close() { streams.forEach((name, input) -> { try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java index fd571baa9..573494354 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java @@ -6,7 +6,7 @@ import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -public class ZIPLoader extends Loader { +public class ZIPLoader extends LoaderImpl { private final ZipFile file; public ZIPLoader(ZipFile file) { @@ -23,7 +23,6 @@ public class ZIPLoader extends Loader { throw new IllegalArgumentException("No such file: " + singleFile); } - @Override protected void load(String directory, String extension) { Enumeration entries = file.entries(); while(entries.hasMoreElements()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java index 191477d4c..0b450ea67 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.config.fileloaders.Loader; +import com.dfsek.terra.api.config.Loader; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 8b34f9f89..f6e9a988c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -17,6 +17,7 @@ import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -31,7 +32,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; -import com.dfsek.terra.config.fileloaders.Loader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.prototype.ProtoConfig; @@ -318,6 +318,11 @@ public class ConfigPackImpl implements ConfigPack { configTypes.computeIfAbsent(priority, p -> new ArrayList<>()).add(ImmutablePair.of(id, type)); } + @Override + public Loader getLoader() { + return loader; + } + @Override public Set addons() { return template.getAddons(); From 7fcce1989796f3ad58052af5b60121f0e4d4c089 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 02:06:14 -0700 Subject: [PATCH 0114/1529] api to access Loader --- .../java/com/dfsek/terra/config/fileloaders/LoaderImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index 19744af05..268188c62 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -56,6 +56,8 @@ public abstract class LoaderImpl implements Loader { return this; } + protected abstract void load(String directory, String extension); + /** * Close all InputStreams opened. */ From b4f464c4287bf652bea7628f940c43143c846a25 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 02:23:18 -0700 Subject: [PATCH 0115/1529] terrascript addon impl --- .../addons/terrascript/TerraScriptAddon.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 56842b625..ed6726888 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -1,12 +1,25 @@ package com.dfsek.terra.addons.terrascript; +import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.script.StructureScript; 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.CheckedRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.structure.LootTable; +import com.dfsek.terra.api.structure.Structure; + +import java.io.InputStream; +import java.util.Map; @Addon("terrascript") @Author("Terra") @@ -19,4 +32,23 @@ public class TerraScriptAddon extends TerraAddon implements EventListener { public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) throws ConfigException { + CheckedRegistry structureRegistry = event.getPack().getRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getRegistry(LootTable.class); + event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { + for(Map.Entry entry : entries) { + try { + StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); + try { + structureRegistry.add(structureScript.getId(), structureScript); + } catch(DuplicateEntryException e) { + throw new LoadException("Duplicate structure: ", e); + } + } catch(ParseException e) { + throw new LoadException("Failed to load script: ", e); + } + } + }).close(); + } } From dea12d30564758c82841c88913b8513e1fd425e6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 13:10:49 -0700 Subject: [PATCH 0116/1529] apply palette loader --- .../main/java/com/dfsek/terra/addons/palette/PaletteAddon.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index cb22bcbb3..1bf4c11de 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.palette; +import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; +import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -19,6 +21,7 @@ public class PaletteAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); + main.applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); } public void onPackLoad(ConfigPackPreLoadEvent event) { From d2298240ed2ae6ec23a74fd1641423d78afcc52a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 15:25:05 -0700 Subject: [PATCH 0117/1529] fix probability collection loading --- .../palette/palette/PaletteLayerLoader.java | 14 +++++- .../dfsek/terra/api/util/ReflectionUtil.java | 1 + .../dfsek/terra/config/GenericLoaders.java | 4 +- .../com/dfsek/terra/config/loaders/Types.java | 44 ------------------- .../terra/config/pack/ConfigPackImpl.java | 11 +++-- 5 files changed, 25 insertions(+), 49 deletions(-) rename common/{implementation => api}/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java (97%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 3aec56c81..48e75ff5c 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -13,10 +13,22 @@ import java.util.Map; @SuppressWarnings("unchecked") public class PaletteLayerLoader implements TypeLoader { + private static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; + @SuppressWarnings("unused") + private ProbabilityCollection blockStateProbabilityCollection; + + static { + try { + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getGenericType(); + } catch(NoSuchFieldException e) { + throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e); + } + } + @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(/*Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE*/null, map.get("materials")); + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java index 34c70dae9..32af3500b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java @@ -6,6 +6,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.Type; import java.util.Arrays; import java.util.function.Consumer; import java.util.stream.Stream; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 8cd95e1c8..c11f14711 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.ProbabilityCollection; @@ -33,7 +34,8 @@ public class GenericLoaders implements LoaderRegistrar { if(main != null) { registry.registerLoader(TerraAddon.class, main.getAddons()) - .registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType()); + .registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType()) + .registerLoader(BlockState.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object)); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java deleted file mode 100644 index 3b6125045..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.config.loaders; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.biome.TerraBiome; - -import java.lang.reflect.Type; -import java.util.Map; - -/** - * Class to hold Type instances for types with generics. - */ -@SuppressWarnings("unused") -public final class Types { - public static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; - public static final Type FLORA_PROBABILITY_COLLECTION_TYPE; - public static final Type TREE_PROBABILITY_COLLECTION_TYPE; - public static final Type TERRA_BIOME_PROBABILITY_COLLECTION_TYPE; - public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP; - - static { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockStateProbabilityCollection"); - FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection"); - TREE_PROBABILITY_COLLECTION_TYPE = getType("treeProbabilityCollection"); - TERRA_BIOME_PROBABILITY_COLLECTION_TYPE = getType("terraBiomeProbabilityCollection"); - TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); - } - - private ProbabilityCollection blockStateProbabilityCollection; - private ProbabilityCollection floraProbabilityCollection; - private ProbabilityCollection treeProbabilityCollection; - private ProbabilityCollection terraBiomeProbabilityCollection; - private Map> terraBiomeProbabilityCollectionMap; - - private static Type getType(String dummyFieldName) { - try { - return Types.class.getDeclaredField(dummyFieldName).getGenericType(); - } catch(NoSuchFieldException e) { - throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong."); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index f6e9a988c..fd842cd45 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,6 +30,7 @@ import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -100,11 +101,12 @@ public class ConfigPackImpl implements ConfigPack { long l = System.nanoTime(); register(abstractConfigLoader); - register(selfLoader); - - main.register(selfLoader); main.register(abstractConfigLoader); + register(selfLoader); + main.register(selfLoader); + + File pack = new File(folder, "pack.yml"); try { @@ -145,6 +147,9 @@ public class ConfigPackImpl implements ConfigPack { register(selfLoader); main.register(selfLoader); + register(abstractConfigLoader); + main.register(abstractConfigLoader); + try { ZipEntry pack = null; Enumeration entries = file.entries(); From e7a27587223f4886fc790ec3476598b5620bc73e Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 16:38:49 -0700 Subject: [PATCH 0118/1529] PaletteHolderLoader --- .../terra/addons/biome/BiomeConfigAddon.java | 3 +++ .../biome/holder/PaletteHolderBuilder.java | 1 - .../biome/holder/PaletteHolderLoader.java | 24 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index 33157d194..f16fac6ab 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.biome; +import com.dfsek.terra.addons.biome.holder.PaletteHolder; +import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -19,6 +21,7 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); + main.applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } public void onPackLoad(ConfigPackPreLoadEvent event) { diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java index c98622318..8cf93760d 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java @@ -14,7 +14,6 @@ public class PaletteHolderBuilder { return this; } - @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) public PaletteHolder build() { int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java new file mode 100644 index 000000000..21e098cef --- /dev/null +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.addons.biome.holder; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.world.generator.Palette; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; + +public class PaletteHolderLoader implements TypeLoader { + @Override + public PaletteHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + List> palette = (List>) o; + PaletteHolderBuilder builder = new PaletteHolderBuilder(); + for(Map layer : palette) { + for(Map.Entry entry : layer.entrySet()) { + builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); + } + } + return builder.build(); + } +} From a89b25076584a366c74b0b39b8f861c967ce1e4c Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:18:55 -0700 Subject: [PATCH 0119/1529] refactor ProbabilityCollection and MaterialSet --- .../java/com/dfsek/terra/addons/biome/BiomeTemplate.java | 2 +- .../java/com/dfsek/terra/addons/biome/UserDefinedBiome.java | 2 +- .../dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java | 2 +- .../terra/addons/biome/holder/PaletteHolderLoader.java | 1 + .../addons/biome/pipeline/config/NoiseSourceTemplate.java | 2 +- .../config/stage/mutator/BorderListMutatorTemplate.java | 2 +- .../config/stage/mutator/BorderMutatorTemplate.java | 2 +- .../config/stage/mutator/ReplaceListMutatorTemplate.java | 2 +- .../config/stage/mutator/ReplaceMutatorTemplate.java | 2 +- .../addons/biome/pipeline/mutator/BorderListMutator.java | 2 +- .../terra/addons/biome/pipeline/mutator/BorderMutator.java | 2 +- .../addons/biome/pipeline/mutator/ReplaceListMutator.java | 2 +- .../terra/addons/biome/pipeline/mutator/ReplaceMutator.java | 2 +- .../terra/addons/biome/pipeline/source/RandomSource.java | 2 +- .../java/com/dfsek/terra/addons/carver/CarverPalette.java | 2 +- .../java/com/dfsek/terra/addons/flora/FloraTemplate.java | 2 +- .../java/com/dfsek/terra/addons/flora/flora/TerraFlora.java | 2 +- .../main/java/com/dfsek/terra/addons/ore/OreTemplate.java | 2 +- .../src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java | 2 +- .../java/com/dfsek/terra/addons/ore/ores/VanillaOre.java | 2 +- .../com/dfsek/terra/addons/palette/palette/PaletteImpl.java | 2 +- .../terra/addons/palette/palette/PaletteLayerHolder.java | 2 +- .../terra/addons/palette/palette/PaletteLayerLoader.java | 2 +- .../com/dfsek/terra/addons/structure/TerraStructure.java | 2 +- .../dfsek/terra/addons/structure/structures/loot/Pool.java | 2 +- .../main/java/com/dfsek/terra/addons/tree/TreeTemplate.java | 4 ++-- .../java/com/dfsek/terra/addons/tree/tree/TerraTree.java | 4 ++-- .../com/dfsek/terra/api/structure/ConfiguredStructure.java | 2 +- .../dfsek/terra/api/util/{ => collection}/MaterialSet.java | 6 +----- .../api/util/{ => collection}/ProbabilityCollection.java | 2 +- .../java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java | 2 +- .../java/com/dfsek/terra/api/world/biome/TerraBiome.java | 2 +- .../java/com/dfsek/terra/api/world/generator/Palette.java | 2 +- .../api/util/collections/ProbabilityCollectionImpl.java | 2 +- .../main/java/com/dfsek/terra/config/GenericLoaders.java | 4 ++-- .../com/dfsek/terra/config/loaders/MaterialSetLoader.java | 2 +- .../terra/config/loaders/ProbabilityCollectionLoader.java | 2 +- .../com/dfsek/terra/config/templates/StructureTemplate.java | 2 +- .../dfsek/terra/world/population/items/PlaceableLayer.java | 2 +- .../main/java/com/dfsek/terra/bukkit/world/BukkitTree.java | 2 +- .../mixin/implementations/ConfiguredFeatureMixin.java | 2 +- .../src/main/java/com/dfsek/terra/platform/RawTree.java | 2 +- 42 files changed, 45 insertions(+), 48 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/{ => collection}/MaterialSet.java (87%) rename common/api/src/main/java/com/dfsek/terra/api/util/{ => collection}/ProbabilityCollection.java (92%) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index fae27548a..4dd9ea343 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index f001d6d6d..8ddbeef4e 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.Generator; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index c34788872..79cb3cca1 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java index 21e098cef..28a99780c 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; public class PaletteHolderLoader implements TypeLoader { + @SuppressWarnings("unchecked") @Override public PaletteHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { List> palette = (List>) o; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index d525b8359..31fa51779 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 7e3393dee..23768d311 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 651fff705..da91f4967 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.api.util.seeded.BiomeBuilder; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 7b8bced8d..dac5e82b5 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index a1ea49704..cb957ccbf 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.api.util.seeded.BiomeBuilder; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java index dbba58b25..6fe89460b 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java index 442f4627f..a0e97e3dd 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java index 6cb8405bc..cbe562980 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java index 55db194d8..ea63765a9 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java index 7127dc09f..1c414ec11 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index 8cffecd1e..da5641794 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import net.jafama.FastMath; diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index bb6d11f81..e718ed4a1 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class FloraTemplate implements AbstractableTemplate { diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 228e2e869..407c1cdbe 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; 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.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index 2762333d8..4337855c3 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.Range; import java.util.HashMap; diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index 3d688ecfc..6c4339e46 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index e520a181b..e6eac727b 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 5e7d1252e..86185b395 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.generator.Palette; import java.util.ArrayList; diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java index cdb85a887..6808e5723 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.palette.palette; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 48e75ff5c..6e1d3a243 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.lang.reflect.Type; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 9d846ab06..9eb9258e4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.config.templates.StructureTemplate; diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index fbfb3075f..52c999980 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java index d88044ea8..61b213859 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.MaterialSet; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate implements AbstractableTemplate { diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java index c6336fccd..b73210c4a 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.tree.tree; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.MaterialSet; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java index d03d2c90d..4b99b88d3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.structure; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; public interface ConfiguredStructure { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java b/common/api/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java similarity index 87% rename from common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java rename to common/api/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java index bd8634056..f6c945bf8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java @@ -1,15 +1,11 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.collection; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import java.io.Serial; -import java.util.AbstractSet; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; public class MaterialSet extends HashSet { @Serial diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java similarity index 92% rename from common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java rename to common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java index 37087089f..cc37099e3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ProbabilityCollection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.collection; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java index 143af4bb2..9a47e834d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.seeded; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index dd2cfa170..ecf3a1c92 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.biome; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; import java.util.Set; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java index fad37c8cf..ca4f846d7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; public interface Palette { Palette add(BlockState m, int layers, NoiseSampler sampler); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java index aa307ad50..2dfb3e158 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.util.collections; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.mutable.MutableInteger; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index c11f14711..b822ba723 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -6,8 +6,8 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import com.dfsek.terra.api.util.MaterialSet; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index 2666a59b9..a397e1d77 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/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.block.BlockType; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import java.lang.reflect.Type; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 8b2de4ee7..7b990abeb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.lang.reflect.ParameterizedType; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 7cd31340b..e7b6b7145 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index 51bf38a5c..d795b82c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; 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 7ffd2ebfe..405d4e897 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 @@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 41f96b722..a8ef5d8b3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.mixin.implementations; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java index 99a9d73f4..14f8e40f0 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawTree.java @@ -1,6 +1,6 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.util.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; From 888e9e8defd739fcca73735d5130e238aeee3318 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:20:47 -0700 Subject: [PATCH 0120/1529] Registry#add -> #register --- .../java/com/dfsek/terra/api/registry/CheckedRegistry.java | 4 ++-- .../java/com/dfsek/terra/api/registry/OpenRegistry.java | 6 +++--- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 3 +-- .../java/com/dfsek/terra/config/pack/WorldConfigImpl.java | 2 +- .../java/com/dfsek/terra/registry/CheckedRegistryImpl.java | 2 +- .../java/com/dfsek/terra/registry/OpenRegistryImpl.java | 4 ++-- .../java/com/dfsek/terra/registry/master/AddonRegistry.java | 6 +++--- .../com/dfsek/terra/registry/master/ConfigRegistry.java | 4 ++-- 8 files changed, 15 insertions(+), 16 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index a5631c7d5..7a9d1548c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -7,7 +7,7 @@ public interface CheckedRegistry extends Registry { * Add a value to this registry, checking whether it is present first. * * @param identifier Identifier to assign value. - * @param value Value to add. + * @param value Value to register. * @throws DuplicateEntryException If an entry with the same identifier is already present. */ void add(String identifier, T value) throws DuplicateEntryException; @@ -18,7 +18,7 @@ public interface CheckedRegistry extends Registry { * Use of this method is generally discouraged, as it is bad practice to overwrite registry values. * * @param identifier Identifier to assign value. - * @param value Value to add. + * @param value Value to register. * @deprecated Use of {@link #add(String, Object)} is encouraged. */ @Deprecated diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java index 739712afc..9182cd39e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -7,15 +7,15 @@ public interface OpenRegistry extends Registry { * Add a value to this registry. * * @param identifier Identifier to assign value. - * @param value Value to add. + * @param value Value to register. */ - boolean add(String identifier, T value); + boolean register(String identifier, T value); /** * Add a value to this registry, checking whether it is present first. * * @param identifier Identifier to assign value. - * @param value Value to add. + * @param value Value to register. * @throws DuplicateEntryException If an entry with the same identifier is already present. */ void addChecked(String identifier, T value) throws DuplicateEntryException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index fd842cd45..1604d8aa7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,7 +30,6 @@ import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -231,7 +230,7 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { - configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.add(pair.getLeft(), pair.getRight()))); + configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.register(pair.getLeft(), pair.getRight()))); for(Map.Entry var : template.getVariables().entrySet()) { varScope.create(var.getKey(), var.getValue()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 5754ea379..1b425652d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -34,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); - pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed()))); + pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index dbddd8976..03a2cae03 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -32,7 +32,7 @@ public class CheckedRegistryImpl implements CheckedRegistry { @Override @Deprecated public void addUnchecked(String identifier, T value) { - registry.add(identifier, value); + registry.register(identifier, value); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 78a6ec7f9..def8824b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -41,7 +41,7 @@ public class OpenRegistryImpl implements OpenRegistry { } @Override - public boolean add(String identifier, T value) { + public boolean register(String identifier, T value) { return add(identifier, new Entry<>(value)); } @@ -55,7 +55,7 @@ public class OpenRegistryImpl implements OpenRegistry { public void addChecked(String identifier, T value) throws DuplicateEntryException { if(objects.containsKey(identifier)) throw new DuplicateEntryException("Value with identifier \"" + identifier + "\" is already defined in registry."); - add(identifier, value); + register(identifier, value); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index a96e6b0a5..7502002ab 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -27,15 +27,15 @@ public class AddonRegistry extends OpenRegistryImpl { public AddonRegistry(TerraAddon addon, TerraPlugin main) { this.main = main; - add(addon.getName(), addon); + register(addon.getName(), addon); } @Override - public boolean add(String identifier, TerraAddon addon) { + public boolean register(String identifier, TerraAddon addon) { if(contains(identifier)) throw new IllegalArgumentException("Addon " + identifier + " is already registered."); addon.initialize(); main.logger().info("Loaded com.dfsek.terra.addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); - return super.add(identifier, addon); + return super.register(identifier, addon); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index 2285c8ba7..d5e3c7be2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -16,7 +16,7 @@ import java.util.zip.ZipFile; public class ConfigRegistry extends OpenRegistryImpl { public void load(File folder, TerraPlugin main) throws ConfigException { ConfigPack pack = new ConfigPackImpl(folder, main); - add(pack.getID(), pack); + register(pack.getID(), pack); } public boolean loadAll(TerraPlugin main) { @@ -45,6 +45,6 @@ public class ConfigRegistry extends OpenRegistryImpl { public void load(ZipFile file, TerraPlugin main) throws ConfigException { ConfigPackImpl pack = new ConfigPackImpl(file, main); - add(pack.getTemplate().getID(), pack); + register(pack.getTemplate().getID(), pack); } } From d4a784ddb5552bf9cbfa825629ade068b8dd647a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:21:21 -0700 Subject: [PATCH 0121/1529] Registry#addChecked -> #registerChecked --- .../main/java/com/dfsek/terra/api/registry/OpenRegistry.java | 2 +- .../main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java | 2 +- .../main/java/com/dfsek/terra/registry/OpenRegistryImpl.java | 2 +- .../java/com/dfsek/terra/registry/master/AddonRegistry.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java index 9182cd39e..d3c32c183 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -18,7 +18,7 @@ public interface OpenRegistry extends Registry { * @param value Value to register. * @throws DuplicateEntryException If an entry with the same identifier is already present. */ - void addChecked(String identifier, T value) throws DuplicateEntryException; + void registerChecked(String identifier, T value) throws DuplicateEntryException; /** * Clears all entries from the registry. diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 03a2cae03..8cdb364cb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -26,7 +26,7 @@ public class CheckedRegistryImpl implements CheckedRegistry { @Override public void add(String identifier, T value) throws DuplicateEntryException { - registry.addChecked(identifier, value); + registry.registerChecked(identifier, value); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index def8824b9..2dfb6ebbd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -52,7 +52,7 @@ public class OpenRegistryImpl implements OpenRegistry { } @Override - public void addChecked(String identifier, T value) throws DuplicateEntryException { + public void registerChecked(String identifier, T value) throws DuplicateEntryException { if(objects.containsKey(identifier)) throw new DuplicateEntryException("Value with identifier \"" + identifier + "\" is already defined in registry."); register(identifier, value); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 7502002ab..42ce4284c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -91,7 +91,7 @@ public class AddonRegistry extends OpenRegistryImpl { throw new AddonLoadException("Failed to load com.dfsek.terra.addon \" + " + addon.getId() + "\": ", e); } try { - addChecked(loadedAddon.getName(), loadedAddon); + registerChecked(loadedAddon.getName(), loadedAddon); } catch(DuplicateEntryException e) { valid = false; main.logger().severe("Duplicate com.dfsek.terra.addon ID; com.dfsek.terra.addon with ID " + loadedAddon.getName() + " is already loaded."); From 9221a4f1ae556798dfb4c25fba270cc0bf808d72 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:22:21 -0700 Subject: [PATCH 0122/1529] CheckedRegistry#add -> #register --- .../com/dfsek/terra/addons/terrascript/TerraScriptAddon.java | 3 +-- .../java/com/dfsek/terra/api/registry/CheckedRegistry.java | 4 ++-- .../main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- .../java/com/dfsek/terra/registry/CheckedRegistryImpl.java | 2 +- .../java/com/dfsek/terra/bukkit/listeners/TerraListener.java | 2 +- .../main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 4 ++-- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index ed6726888..f5c5d98fb 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -13,7 +13,6 @@ 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.CheckedRegistry; -import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; @@ -41,7 +40,7 @@ public class TerraScriptAddon extends TerraAddon implements EventListener { try { StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); try { - structureRegistry.add(structureScript.getId(), structureScript); + structureRegistry.register(structureScript.getId(), structureScript); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate structure: ", e); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index 7a9d1548c..89fea3415 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -10,7 +10,7 @@ public interface CheckedRegistry extends Registry { * @param value Value to register. * @throws DuplicateEntryException If an entry with the same identifier is already present. */ - void add(String identifier, T value) throws DuplicateEntryException; + void register(String identifier, T value) throws DuplicateEntryException; /** * Add a value to the registry, without checking presence beforehand. @@ -19,7 +19,7 @@ public interface CheckedRegistry extends Registry { * * @param identifier Identifier to assign value. * @param value Value to register. - * @deprecated Use of {@link #add(String, Object)} is encouraged. + * @deprecated Use of {@link #register(String, Object)} is encouraged. */ @Deprecated void addUnchecked(String identifier, T value); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 1604d8aa7..9618d72ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -251,7 +251,7 @@ public class ConfigPackImpl implements ConfigPack { for(ConfigType configType : configTypeRegistry.entries()) { for(AbstractableTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { try { - ((CheckedRegistry) getRegistry(configType.getTypeClass())).add(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); + ((CheckedRegistry) getRegistry(configType.getTypeClass())).register(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 8cdb364cb..790337235 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -25,7 +25,7 @@ public class CheckedRegistryImpl implements CheckedRegistry { } @Override - public void add(String identifier, T value) throws DuplicateEntryException { + public void register(String identifier, T value) throws DuplicateEntryException { registry.registerChecked(identifier, value); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 680ec2952..774f578b1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -24,7 +24,7 @@ public class TerraListener implements EventListener { for(TreeType value : TreeType.values()) { try { String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); - event.getPack().getRegistry(Tree.class).add(id, new BukkitTree(value, main)); + event.getPack().getRegistry(Tree.class).register(id, new BukkitTree(value, main)); event.getPack().getRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" } catch(DuplicateEntryException ignore) { // If another com.dfsek.terra.addon has already registered trees, do nothing. } 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 446ef3d02..fcb4d2ed0 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 @@ -359,7 +359,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { try { - event.getPack().getRegistry(Tree.class).add(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + event.getPack().getRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); } catch(DuplicateEntryException ignored) { } @@ -401,7 +401,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { try { - registry.add(id, (Tree) tree); + registry.register(id, (Tree) tree); } catch(DuplicateEntryException ignore) { } } From 6f8a7d6364e526b0a2ce966565a82840bea22ef1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:22:45 -0700 Subject: [PATCH 0123/1529] CheckedRegistry#addUnchecked -> #registerUnchecked --- .../dfsek/terra/addons/noise/NoiseAddon.java | 42 +++++++++---------- .../terra/api/registry/CheckedRegistry.java | 2 +- .../terra/registry/CheckedRegistryImpl.java | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 848626b39..11c8b1af8 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -66,36 +66,36 @@ public class NoiseAddon extends TerraAddon { CheckedRegistry noiseRegistry = event.getPack().getRegistry(NoiseProvider.class); - noiseRegistry.addUnchecked("LINEAR", LinearNormalizerTemplate::new); - noiseRegistry.addUnchecked("NORMAL", NormalNormalizerTemplate::new); - noiseRegistry.addUnchecked("CLAMP", ClampNormalizerTemplate::new); - noiseRegistry.addUnchecked("EXPRESSION", ExpressionFunctionTemplate::new); + noiseRegistry.registerUnchecked("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.registerUnchecked("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.registerUnchecked("CLAMP", ClampNormalizerTemplate::new); + noiseRegistry.registerUnchecked("EXPRESSION", ExpressionFunctionTemplate::new); - noiseRegistry.addUnchecked("IMAGE", ImageSamplerTemplate::new); + noiseRegistry.registerUnchecked("IMAGE", ImageSamplerTemplate::new); - noiseRegistry.addUnchecked("DOMAINWARP", DomainWarpTemplate::new); + noiseRegistry.registerUnchecked("DOMAINWARP", DomainWarpTemplate::new); - noiseRegistry.addUnchecked("FBM", BrownianMotionTemplate::new); - noiseRegistry.addUnchecked("PINGPONG", PingPongTemplate::new); - noiseRegistry.addUnchecked("RIDGED", RidgedFractalTemplate::new); + noiseRegistry.registerUnchecked("FBM", BrownianMotionTemplate::new); + noiseRegistry.registerUnchecked("PINGPONG", PingPongTemplate::new); + noiseRegistry.registerUnchecked("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.addUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.addUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.addUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.addUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - noiseRegistry.addUnchecked("GABOR", GaborNoiseTemplate::new); + noiseRegistry.registerUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.registerUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.registerUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.registerUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.registerUnchecked("GABOR", GaborNoiseTemplate::new); - noiseRegistry.addUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.addUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.registerUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.registerUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - noiseRegistry.addUnchecked("CELLULAR", CellularNoiseTemplate::new); + noiseRegistry.registerUnchecked("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.addUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.addUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + noiseRegistry.registerUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.registerUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - noiseRegistry.addUnchecked("CONSTANT", ConstantNoiseTemplate::new); + noiseRegistry.registerUnchecked("CONSTANT", ConstantNoiseTemplate::new); - noiseRegistry.addUnchecked("KERNEL", KernelTemplate::new); + noiseRegistry.registerUnchecked("KERNEL", KernelTemplate::new); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index 89fea3415..d1c69f4d3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -22,5 +22,5 @@ public interface CheckedRegistry extends Registry { * @deprecated Use of {@link #register(String, Object)} is encouraged. */ @Deprecated - void addUnchecked(String identifier, T value); + void registerUnchecked(String identifier, T value); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index 790337235..e1858281e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -31,7 +31,7 @@ public class CheckedRegistryImpl implements CheckedRegistry { @Override @Deprecated - public void addUnchecked(String identifier, T value) { + public void registerUnchecked(String identifier, T value) { registry.register(identifier, value); } From 7f1963a367c90adbe5d0e03e3be82af53de5a6ec Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:24:02 -0700 Subject: [PATCH 0124/1529] refactor ExceptionalConsumer --- common/api/src/main/java/com/dfsek/terra/api/config/Loader.java | 2 +- .../terra/api/util/{ => function}/ExceptionalConsumer.java | 2 +- .../java/com/dfsek/terra/config/fileloaders/LoaderImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/{ => function}/ExceptionalConsumer.java (79%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java index 596ec8b63..6efc507f3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.terra.api.util.ExceptionalConsumer; +import com.dfsek.terra.api.util.function.ExceptionalConsumer; import java.io.IOException; import java.io.InputStream; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java b/common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java similarity index 79% rename from common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java rename to common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java index 2c80c66f1..2bdd3c06e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ExceptionalConsumer.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.function; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index 268188c62..389124872 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.fileloaders; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.Loader; -import com.dfsek.terra.api.util.ExceptionalConsumer; +import com.dfsek.terra.api.util.function.ExceptionalConsumer; import com.dfsek.terra.api.util.GlueList; import java.io.IOException; From 27a54101e7df2349322fcd3338ca58904ccf7197 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:31:26 -0700 Subject: [PATCH 0125/1529] make all util classes final --- common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java | 2 +- .../src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java | 2 +- .../src/main/java/com/dfsek/terra/api/util/RotationUtil.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java index 569c46cd6..051f1aa75 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java @@ -12,7 +12,7 @@ import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; -public class JarUtil { +public final class JarUtil { public static void copyResourcesToDirectory(JarFile fromJar, String sourceDir, String destDir) throws IOException { for(Enumeration entries = fromJar.entries(); entries.hasMoreElements(); ) { JarEntry entry = entries.nextElement(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java index 32af3500b..754fc1793 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java @@ -11,7 +11,7 @@ import java.util.Arrays; import java.util.function.Consumer; import java.util.stream.Stream; -public class ReflectionUtil { +public final class ReflectionUtil { public static Field[] getFields(@NotNull Class type) { Field[] result = type.getDeclaredFields(); Class parentClass = type.getSuperclass(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 013b8a8d1..2d949d3e0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.block.state.properties.enums.WallHeight; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Vector2; -public class RotationUtil { +public final class RotationUtil { /** * Rotate and mirror a coordinate pair. From fe28fcedd1cea2c4e8f62ab43a69b1cd7998f8ff Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 19:47:02 -0700 Subject: [PATCH 0126/1529] fix addon registry stack overflow --- .../java/com/dfsek/terra/addons/biome/BiomeConfigType.java | 5 ++++- .../com/dfsek/terra/addons/palette/PaletteConfigType.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 3fd136382..f1d764975 100644 --- a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -41,7 +41,10 @@ public class BiomeConfigType implements ConfigType public Supplier> registrySupplier() { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(c.equals("SELF")) return null; - return registry.load(t, c, loader); + BiomeBuilder obj = registry.get((String) c); + if(obj == null) + throw new LoadException("No such " + t.getTypeName() + " matching \"" + c + "\" was found in this registry."); + return obj; }); } } diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index c3afe53cf..0ccdbcf60 100644 --- a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -44,7 +44,10 @@ public class PaletteConfigType implements ConfigType { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(((String) c).startsWith("BLOCK:")) return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. - return registry.load(t, c, loader); + Palette obj = registry.get((String) c); + if(obj == null) + throw new LoadException("No such " + t.getTypeName() + " matching \"" + c + "\" was found in this registry."); + return obj; }); } } From b8e1e99b8466603cdd3262f50d5078537d511b8f Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 20:09:59 -0700 Subject: [PATCH 0127/1529] noise addon impl --- .../java/com/dfsek/terra/addons/noise/NoiseAddon.java | 5 +++-- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 11c8b1af8..70963b5bd 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -30,6 +30,7 @@ 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.annotations.Global; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @@ -40,12 +41,13 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; @Addon("noise") @Author("Terra") @Version("1.0.0") -public class NoiseAddon extends TerraAddon { +public class NoiseAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin plugin; @Override public void initialize() { + plugin.getEventManager().registerListener(this, this); plugin.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) @@ -58,7 +60,6 @@ public class NoiseAddon extends TerraAddon { } @SuppressWarnings("deprecation") - @Global public void packPreLoad(ConfigPackPreLoadEvent event) { event.getPack() diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 9618d72ac..8cbb79b64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -184,6 +184,12 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } + @SuppressWarnings("unchecked") + private void applyLoaders(TypeRegistry registry) { + loaders.forEach(registry::registerLoader); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); + } + private Map, ImmutablePair, CheckedRegistry>> newRegistryMap() { Map, ImmutablePair, CheckedRegistry>> map = new HashMap, ImmutablePair, CheckedRegistry>>() { @Serial @@ -230,6 +236,8 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { + applyLoaders(abstractConfigLoader); + applyLoaders(selfLoader); configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.register(pair.getLeft(), pair.getRight()))); for(Map.Entry var : template.getVariables().entrySet()) { @@ -297,8 +305,6 @@ public class ConfigPackImpl implements ConfigPack { .registerLoader(ConfigType.class, configTypeRegistry) .registerLoader(BufferedImage.class, new BufferedImageLoader(loader)); registryMap.forEach((clazz, reg) -> registry.registerLoader(clazz, reg.getLeft())); - loaders.forEach(registry::registerLoader); - objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); } @Override From 39f5aef0c5dc4ad18e612771ff26d08f96c3cbee Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 20:35:39 -0700 Subject: [PATCH 0128/1529] noise addon + pack.yml noise functions --- .../dfsek/terra/addons/noise/NoiseAddon.java | 25 +++++++++++++------ .../addons/noise/NoiseConfigPackTemplate.java | 17 +++++++++++++ .../config/NoiseSamplerBuilderLoader.java | 3 +++ .../noise/ExpressionFunctionTemplate.java | 12 +++++++++ .../terra/config/pack/ConfigPackImpl.java | 18 +++---------- .../terra/config/pack/ConfigPackTemplate.java | 7 ------ 6 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 70963b5bd..534f8f126 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.noise; +import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; @@ -31,13 +32,15 @@ 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.annotations.Global; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import java.util.HashMap; +import java.util.Map; + @Addon("noise") @Author("Terra") @Version("1.0.0") @@ -54,23 +57,19 @@ public class NoiseAddon extends TerraAddon implements EventListener { .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) .applyLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) - .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)); } @SuppressWarnings("deprecation") public void packPreLoad(ConfigPackPreLoadEvent event) { - - event.getPack() - .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(event.getPack().getRegistry(NoiseProvider.class))); - CheckedRegistry noiseRegistry = event.getPack().getRegistry(NoiseProvider.class); + event.getPack() + .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)); noiseRegistry.registerUnchecked("LINEAR", LinearNormalizerTemplate::new); noiseRegistry.registerUnchecked("NORMAL", NormalNormalizerTemplate::new); noiseRegistry.registerUnchecked("CLAMP", ClampNormalizerTemplate::new); - noiseRegistry.registerUnchecked("EXPRESSION", ExpressionFunctionTemplate::new); noiseRegistry.registerUnchecked("IMAGE", ImageSamplerTemplate::new); @@ -98,5 +97,17 @@ public class NoiseAddon extends TerraAddon implements EventListener { noiseRegistry.registerUnchecked("CONSTANT", ConstantNoiseTemplate::new); noiseRegistry.registerUnchecked("KERNEL", KernelTemplate::new); + + Map packFunctions = new HashMap<>(); + noiseRegistry.registerUnchecked("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); + + + try { + NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); + event.loadTemplate(template); + packFunctions.putAll(template.getNoiseBuilderMap()); + } catch(ConfigException e) { + throw new RuntimeException(e); + } } } diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java new file mode 100644 index 000000000..98a19876c --- /dev/null +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.noise; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; + +import java.util.Map; + +public class NoiseConfigPackTemplate implements ConfigTemplate { + @Value("noise") + private Map noiseBuilderMap; + + public Map getNoiseBuilderMap() { + return noiseBuilderMap; + } +} diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index fdd2107bf..630b29556 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -26,6 +26,9 @@ public class NoiseSamplerBuilderLoader implements TypeLoader { public NoiseSeeded load(Type t, Object c, ConfigLoader loader) throws LoadException { Map map = (Map) c; try { + if(!noiseRegistry.contains((String) map.get("type"))) { + throw new LoadException("No such noise function: " + map.get("type")); + } ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); loader.load(normalizerTemplate, new Configuration(map)); return normalizerTemplate.get(); diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index a1c9dd3d4..1ba19bbdf 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -39,6 +39,12 @@ public class ExpressionFunctionTemplate extends SamplerTemplate expressions = new LinkedHashMap<>(); + private final Map otherFunctions; + + public ExpressionFunctionTemplate(Map otherFunctions) { + this.otherFunctions = otherFunctions; + } + @Override public NoiseSampler apply(Long seed) { try { @@ -67,6 +73,12 @@ public class ExpressionFunctionTemplate extends SamplerTemplate { + if(function.getDimensions() == 2) { + noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); + } else noiseFunctionMap.put(id, new NoiseFunction3(function.apply(seed))); + }); + functions.forEach((id, function) -> { if(function.getDimensions() == 2) { noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 8cbb79b64..70a067c2c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -70,9 +70,6 @@ public class ConfigPackImpl implements ConfigPack { private final RegistryFactory registryFactory = new RegistryFactoryImpl(); - private final Map> loaders = new HashMap<>(); - private final Map>> objectLoaders = new HashMap<>(); - private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Scope varScope = new Scope(); @@ -184,12 +181,6 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } - @SuppressWarnings("unchecked") - private void applyLoaders(TypeRegistry registry) { - loaders.forEach(registry::registerLoader); - objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); - } - private Map, ImmutablePair, CheckedRegistry>> newRegistryMap() { Map, ImmutablePair, CheckedRegistry>> map = new HashMap, ImmutablePair, CheckedRegistry>>() { @Serial @@ -219,14 +210,15 @@ public class ConfigPackImpl implements ConfigPack { } @Override public ConfigPackImpl applyLoader(Type type, TypeLoader loader) { - loaders.put(type, loader); + abstractConfigLoader.registerLoader(type, loader); + selfLoader.registerLoader(type, loader); return this; } - @SuppressWarnings("unchecked") @Override public ConfigPackImpl applyLoader(Type type, TemplateProvider> loader) { - objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + abstractConfigLoader.registerLoader(type, loader); + selfLoader.registerLoader(type, loader); return this; } @@ -236,8 +228,6 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings({"unchecked", "rawtypes"}) private void load(long start, TerraPlugin main) throws ConfigException { - applyLoaders(abstractConfigLoader); - applyLoaders(selfLoader); configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.register(pair.getLeft(), pair.getRight()))); for(Map.Entry var : template.getVariables().entrySet()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index de34e4213..de60c0ed8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -16,9 +16,6 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("id") private String id; - @Value("noise") - private Map noiseBuilderMap; - @Value("addons") @Default private Set addons = new HashSet<>(); @@ -139,10 +136,6 @@ public class ConfigPackTemplate implements ConfigTemplate { return vanillaStructures; } - public Map getNoiseBuilderMap() { - return noiseBuilderMap; - } - public Map getVariables() { return variables; } From 52a269b686fbc7f3acd2e77fa0e7ec0e4abfe11a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 21:39:55 -0700 Subject: [PATCH 0129/1529] pull BiomeProviderBuilder out of BiomeProvider --- .../terra/addons/biome/image/ImageBiomeProvider.java | 3 ++- .../terra/addons/biome/single/SingleBiomeProvider.java | 3 ++- .../main/java/com/dfsek/terra/api/config/ConfigPack.java | 4 ++-- .../dfsek/terra/api/util/seeded/BiomeProviderBuilder.java | 7 +++++++ .../terra/api/world/biome/generation/BiomeProvider.java | 4 ---- .../biome/templates/provider/BiomeProviderTemplate.java | 8 +++----- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 6 +++--- .../dfsek/terra/config/pack/ConfigPackPostTemplate.java | 6 +++--- 8 files changed, 22 insertions(+), 19 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java diff --git a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index cde1bebd9..313d4c074 100644 --- a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import net.jafama.FastMath; import java.awt.*; @@ -10,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class ImageBiomeProvider implements BiomeProvider, BiomeProvider.BiomeProviderBuilder { // This provider does not need a seed, so it is its own builder. +public class ImageBiomeProvider implements BiomeProvider, BiomeProviderBuilder { // This provider does not need a seed, so it is its own builder. private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; diff --git a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 136a4555c..25fae9429 100644 --- a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -2,8 +2,9 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; -public class SingleBiomeProvider implements BiomeProvider, BiomeProvider.BiomeProviderBuilder { +public class SingleBiomeProvider implements BiomeProvider, BiomeProviderBuilder { private final TerraBiome biome; public SingleBiomeProvider(TerraBiome biome) { 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 25543703c..f86432877 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 @@ -7,7 +7,7 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar; 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.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import java.util.Map; import java.util.Set; @@ -15,7 +15,7 @@ import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { CheckedRegistry getRegistry(Class clazz); - BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); + BiomeProviderBuilder getBiomeProviderBuilder(); WorldConfig toWorldConfig(TerraWorld world); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java new file mode 100644 index 000000000..0d1e05dbe --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.util.seeded; + +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +public interface BiomeProviderBuilder { + BiomeProvider build(long seed); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index d731e12c9..c42557317 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -15,10 +15,6 @@ public interface BiomeProvider { return getBiome(vector3.getBlockX(), vector3.getBlockZ()); } - interface BiomeProviderBuilder { - BiomeProvider build(long seed); - } - @Deprecated enum Type { IMAGE, PIPELINE, SINGLE diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java index 015b19fba..8befb69b7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; -public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProvider.BiomeProviderBuilder { +public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("resolution") @Default protected int resolution = 1; @@ -16,11 +16,9 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate Date: Mon, 5 Jul 2021 21:52:28 -0700 Subject: [PATCH 0130/1529] use getCheckedRegistry where possible --- .../main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 2 +- .../dfsek/terra/addons/terrascript/TerraScriptAddon.java | 4 ++-- .../main/java/com/dfsek/terra/api/config/ConfigPack.java | 2 -- .../com/dfsek/terra/api/registry/meta/RegistryHolder.java | 2 +- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- .../java/com/dfsek/terra/config/pack/WorldConfigImpl.java | 2 +- .../com/dfsek/terra/bukkit/listeners/TerraListener.java | 4 ++-- .../main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 6 +++--- 8 files changed, 11 insertions(+), 13 deletions(-) diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 534f8f126..33b628a0a 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -63,7 +63,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { @SuppressWarnings("deprecation") public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry noiseRegistry = event.getPack().getRegistry(NoiseProvider.class); + CheckedRegistry noiseRegistry = event.getPack().getCheckedRegistry(NoiseProvider.class); event.getPack() .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)); diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index f5c5d98fb..58d1746d1 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -33,8 +33,8 @@ public class TerraScriptAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) throws ConfigException { - CheckedRegistry structureRegistry = event.getPack().getRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getRegistry(LootTable.class); + CheckedRegistry structureRegistry = event.getPack().getCheckedRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getCheckedRegistry(LootTable.class); event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try { 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 f86432877..85e5cbfbe 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 @@ -13,8 +13,6 @@ import java.util.Map; import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { - CheckedRegistry getRegistry(Class clazz); - BiomeProviderBuilder getBiomeProviderBuilder(); WorldConfig toWorldConfig(TerraWorld world); diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index dcad668f1..29a8fd8a8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -6,5 +6,5 @@ import com.dfsek.terra.api.registry.Registry; public interface RegistryHolder { Registry getRegistry(Class clazz); - CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException; + CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 07785402b..073146fd4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -249,7 +249,7 @@ public class ConfigPackImpl implements ConfigPack { for(ConfigType configType : configTypeRegistry.entries()) { for(AbstractableTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { try { - ((CheckedRegistry) getRegistry(configType.getTypeClass())).register(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); + ((CheckedRegistry) getCheckedRegistry(configType.getTypeClass())).register(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 1b425652d..b5aef6c63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -34,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); - pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); + pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 774f578b1..62c24d5d1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -24,8 +24,8 @@ public class TerraListener implements EventListener { for(TreeType value : TreeType.values()) { try { String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); - event.getPack().getRegistry(Tree.class).register(id, new BukkitTree(value, main)); - event.getPack().getRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" + event.getPack().getCheckedRegistry(Tree.class).register(id, new BukkitTree(value, main)); + event.getPack().getCheckedRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" } catch(DuplicateEntryException ignore) { // If another com.dfsek.terra.addon has already registered trees, do nothing. } } 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 fcb4d2ed0..d7dad12e2 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 @@ -327,7 +327,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @Priority(Priority.LOWEST) @Global public void injectTrees(ConfigPackPreLoadEvent event) { - CheckedRegistry treeRegistry = event.getPack().getRegistry(Tree.class); + CheckedRegistry treeRegistry = event.getPack().getCheckedRegistry(Tree.class); injectTree(treeRegistry, "BROWN_MUSHROOM", ConfiguredFeatures.HUGE_BROWN_MUSHROOM); injectTree(treeRegistry, "RED_MUSHROOM", ConfiguredFeatures.HUGE_RED_MUSHROOM); injectTree(treeRegistry, "JUNGLE", ConfiguredFeatures.MEGA_JUNGLE_TREE); @@ -359,7 +359,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { try { - event.getPack().getRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); } catch(DuplicateEntryException ignored) { } @@ -387,7 +387,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public void injectBiomes(BiomeRegistrationEvent event) { logger.info("Registering biomes..."); Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + configRegistry.forEach(pack -> pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. logger.info("Biomes registered."); } From 4acfeab9480b32bd8c1637704584ad2a040f45cd Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 21:56:14 -0700 Subject: [PATCH 0131/1529] getOrCreateRegistry --- .../java/com/dfsek/terra/api/config/ConfigPack.java | 2 ++ .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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 85e5cbfbe..9a856fe10 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 @@ -15,6 +15,8 @@ import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { BiomeProviderBuilder getBiomeProviderBuilder(); + CheckedRegistry getOrCreateRegistry(Class clazz); + WorldConfig toWorldConfig(TerraWorld world); void registerConfigType(ConfigType type, String id, int priority); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 073146fd4..ab423891a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -194,7 +194,6 @@ public class ConfigPackImpl implements ConfigPack { } }; - putPair(map, NoiseProvider.class, new NoiseRegistry()); putPair(map, LootTable.class, new OpenRegistryImpl<>()); putPair(map, Structure.class, new OpenRegistryImpl<>()); @@ -302,6 +301,15 @@ public class ConfigPackImpl implements ConfigPack { return biomeProviderBuilder; } + @SuppressWarnings("unchecked") + @Override + public CheckedRegistry getOrCreateRegistry(Class clazz) { + return (CheckedRegistry) registryMap.computeIfAbsent(clazz, c -> { + OpenRegistry registry = new OpenRegistryImpl<>(); + return ImmutablePair.of(registry, new CheckedRegistryImpl<>(registry)); + }).getRight(); + } + @Override public WorldConfigImpl toWorldConfig(TerraWorld world) { From 01351883d1e79ae406954785dafc7eb7845ed91c Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 22:39:48 -0700 Subject: [PATCH 0132/1529] use getOrCreateRegistry --- .../biome/pipeline/BiomePipelineImpl.java | 1 - .../addons/biome/pipeline/StageSeeded.java | 8 ++++ .../config/BiomePipelineTemplate.java | 2 +- .../config/stage/StageBuilderLoader.java | 2 +- .../pipeline/config/stage/StageTemplate.java | 2 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 2 +- .../addons/terrascript/TerraScriptAddon.java | 4 +- .../terra/api/util/seeded/StageSeeded.java | 7 --- .../terra/config/pack/ConfigPackImpl.java | 46 ++++--------------- .../terra/registry/config/NoiseRegistry.java | 10 ---- 10 files changed, 23 insertions(+), 61 deletions(-) create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index ae9203a22..921ac66b5 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.seeded.StageSeeded; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java new file mode 100644 index 000000000..b01109fe0 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.util.seeded.SeededBuilder; + +@FunctionalInterface +public interface StageSeeded extends SeededBuilder { +} diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 0667e1914..da5a5b358 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java index 337a7ee7d..56f2da266 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; 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.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index 4c4eb9d09..8d70c998a 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; 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.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 33b628a0a..e8f59aabd 100644 --- a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -63,7 +63,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { @SuppressWarnings("deprecation") public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry noiseRegistry = event.getPack().getCheckedRegistry(NoiseProvider.class); + CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); event.getPack() .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)); diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 58d1746d1..fdbad454f 100644 --- a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -33,8 +33,8 @@ public class TerraScriptAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) throws ConfigException { - CheckedRegistry structureRegistry = event.getPack().getCheckedRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getCheckedRegistry(LootTable.class); + CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java deleted file mode 100644 index 7fb160c4c..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.world.biome.generation.pipeline.Stage; - -@FunctionalInterface -public interface StageSeeded extends SeededBuilder { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ab423891a..c45478e70 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -24,10 +24,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.config.dummy.DummyWorld; @@ -39,7 +36,6 @@ import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.RegistryFactoryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; -import com.dfsek.terra.registry.config.NoiseRegistry; import com.dfsek.terra.world.TerraWorldImpl; import java.awt.image.BufferedImage; @@ -58,6 +54,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.function.Function; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -82,7 +79,7 @@ public class ConfigPackImpl implements ConfigPack { private final ConfigTypeRegistry configTypeRegistry; - private final Map, ImmutablePair, CheckedRegistry>> registryMap = newRegistryMap(); + private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); private final TreeMap>>> configTypes = new TreeMap<>(); @@ -90,6 +87,8 @@ public class ConfigPackImpl implements ConfigPack { try { this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); + selfLoader.registerLoader(configType.getTypeClass(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); this.loader = new FolderLoader(folder.toPath()); @@ -102,7 +101,6 @@ public class ConfigPackImpl implements ConfigPack { register(selfLoader); main.register(selfLoader); - File pack = new File(folder, "pack.yml"); try { @@ -134,6 +132,8 @@ public class ConfigPackImpl implements ConfigPack { try { this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); + selfLoader.registerLoader(configType.getTypeClass(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); this.loader = new ZIPLoader(file); @@ -181,29 +181,6 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } - private Map, ImmutablePair, CheckedRegistry>> newRegistryMap() { - Map, ImmutablePair, CheckedRegistry>> map = new HashMap, ImmutablePair, CheckedRegistry>>() { - @Serial - private static final long serialVersionUID = 4015855819914064466L; - - @Override - public ImmutablePair, CheckedRegistry> put(Class key, ImmutablePair, CheckedRegistry> value) { - selfLoader.registerLoader(key, value.getLeft()); - abstractConfigLoader.registerLoader(key, value.getLeft()); - return super.put(key, value); - } - }; - - putPair(map, LootTable.class, new OpenRegistryImpl<>()); - putPair(map, Structure.class, new OpenRegistryImpl<>()); - - return map; - } - - private void putPair(Map, ImmutablePair, CheckedRegistry>> map, Class key, OpenRegistry l) { - map.put(key, ImmutablePair.of(l, new CheckedRegistryImpl<>(l))); - } - private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } @@ -259,16 +236,10 @@ public class ConfigPackImpl implements ConfigPack { main.logger().info("Loaded config pack \"" + template.getID() + "\" v" + template.getVersion() + " by " + template.getAuthor() + " in " + (System.nanoTime() - start) / 1000000D + "ms."); } - - public ConfigPackTemplate getTemplate() { return template; } - public Scope getVarScope() { - return varScope; - } - @Override @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Class clazz) { @@ -286,8 +257,6 @@ public class ConfigPackImpl implements ConfigPack { return (OpenRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getLeft(); } - - @SuppressWarnings("unchecked") @Override public void register(TypeRegistry registry) { registry @@ -306,6 +275,9 @@ public class ConfigPackImpl implements ConfigPack { public CheckedRegistry getOrCreateRegistry(Class clazz) { return (CheckedRegistry) registryMap.computeIfAbsent(clazz, c -> { OpenRegistry registry = new OpenRegistryImpl<>(); + selfLoader.registerLoader(c, registry); + abstractConfigLoader.registerLoader(c, registry); + main.getDebugLogger().info("Registered loader for registry of class " + c); return ImmutablePair.of(registry, new CheckedRegistryImpl<>(registry)); }).getRight(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java deleted file mode 100644 index e0d90a6e1..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/NoiseRegistry.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.registry.config; - -import com.dfsek.terra.api.util.seeded.NoiseProvider; -import com.dfsek.terra.registry.OpenRegistryImpl; - -public class NoiseRegistry extends OpenRegistryImpl { - public NoiseRegistry() { - - } -} From 9c3b6ea8bdf2bed69690971e32566192c3e7bd69 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 6 Jul 2021 21:31:34 -0700 Subject: [PATCH 0133/1529] compile biome pipeline addon --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java | 1 - .../terra/addons/biome/pipeline/StandardBiomeProvider.java | 3 +-- .../addons/biome/pipeline/config/BiomePipelineTemplate.java | 2 +- .../addons/biome/pipeline/config}/BiomeProviderTemplate.java | 2 +- .../addons/biome/pipeline/config/SourceBuilderLoader.java | 1 - 5 files changed, 3 insertions(+), 6 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider => addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config}/BiomeProviderTemplate.java (90%) diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index 921ac66b5..3608cb975 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -1,6 +1,5 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java index aae21832e..387f2917a 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java @@ -1,12 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeHolder; -import com.dfsek.terra.api.world.biome.pipeline.BiomePipelineImpl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index da5a5b358..dca3f0c80 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -3,11 +3,11 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java rename to common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 8befb69b7..e263bb0ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/provider/BiomeProviderTemplate.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.loaders.config.biome.templates.provider; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java index fffc5d46c..8b79abd8b 100644 --- a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import com.dfsek.terra.config.loaders.config.biome.templates.source.NoiseSourceTemplate; import java.lang.reflect.Type; import java.util.Map; From 5c4ef3f23bee142d8a2f4eb033bbda3953698050 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 6 Jul 2021 21:50:52 -0700 Subject: [PATCH 0134/1529] implement biome pipeline addon --- .../biome/pipeline/BiomePipelineAddon.java | 51 +++++++++++++++++++ .../config/BiomeProviderBuilderLoader.java | 15 ++++++ 2 files changed, 66 insertions(+) create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java create mode 100644 common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java new file mode 100644 index 000000000..849dbaae4 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -0,0 +1,51 @@ +package com.dfsek.terra.addons.biome.pipeline; + +import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.SourceBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +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.injection.annotations.Inject; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SourceSeeded; + +import java.lang.reflect.Type; + +@Addon("biome-pipeline") +@Author("Terra") +@Version("1.0.0") +public class BiomePipelineAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.applyLoader(SourceSeeded.class, new SourceBuilderLoader()) + .applyLoader(StageSeeded.class, new StageBuilderLoader()) + .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) + .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) + .applyLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) + .applyLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) + .applyLoader(BorderMutatorTemplate.class, BorderMutatorTemplate::new) + .applyLoader(BorderListMutatorTemplate.class, BorderListMutatorTemplate::new) + .applyLoader(ReplaceListMutatorTemplate.class, ReplaceListMutatorTemplate::new) + .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) + .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) + .applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()); + } +} diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java new file mode 100644 index 000000000..2e95f8784 --- /dev/null +++ b/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.biome.pipeline.config; + +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.BiomeProviderBuilder; + +import java.lang.reflect.Type; + +public class BiomeProviderBuilderLoader implements TypeLoader { + @Override + public BiomeProviderBuilder load(Type t, Object c, ConfigLoader loader) throws LoadException { + return loader.loadClass(BiomePipelineTemplate.class, c); // TODO: actually implement this lol + } +} From 25073199f068674e3d00b263a805281290b812d0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 6 Jul 2021 22:23:04 -0700 Subject: [PATCH 0135/1529] correct some errors in carver and structure addons --- .../terra/addons/carver/CarverCache.java | 11 ++--- .../terra/addons/carver/CarverPalette.java | 2 +- .../terra/addons/carver/CarverTemplate.java | 2 +- .../terra/addons/carver/CavePopulator.java | 2 - .../addons/carver/UserDefinedCarver.java | 4 +- .../addons/structure/StructureFactory.java | 2 +- .../addons/structure/StructurePopulator.java | 3 +- .../addons/structure}/StructureTemplate.java | 12 +---- .../addons/structure/TerraStructure.java | 9 +--- .../command/AsyncStructureFinder.java | 3 +- .../command/structure/SpawnCommand.java | 48 ------------------- .../command/structure/StructureCommand.java | 7 +-- .../structure/StructureLoadCommand.java | 10 ++-- .../structure/StructureLocateCommand.java | 15 +++--- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 3 +- .../structure/completer/ScriptCompleter.java | 3 +- .../completer/StructureCompleter.java | 4 +- .../structure/structures/loot/Entry.java | 4 +- .../structures/loot/LootTableImpl.java | 6 +-- .../structure/structures/loot/Pool.java | 5 +- .../loot/functions/EnchantFunction.java | 4 +- .../api/structure/ConfiguredStructure.java | 2 + .../dfsek/terra/fabric/util/FabricUtil.java | 3 ++ 24 files changed, 47 insertions(+), 119 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/StructureTemplate.java (84%) delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/SpawnCommand.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 662c3491b..6a3a64e46 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -1,8 +1,7 @@ package com.dfsek.terra.addons.carver; +import com.dfsek.terra.addons.carver.carving.Worm; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; @@ -10,12 +9,12 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.carving.Worm; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; @@ -34,11 +33,11 @@ public class CarverCache { int chunkX = (int) (key >> 32); int chunkZ = (int) key.longValue(); BiomeProvider provider = main.getWorld(w).getBiomeProvider(); - if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { + if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); - Random r = new FastRandom(seed); + Random r = new Random(seed); Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); - List points = new GlueList<>(); + List points = new ArrayList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); TerraBiome biome = provider.getBiome(carving.getRunning()); diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index da5641794..e8eb869eb 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.MaterialSet; import net.jafama.FastMath; import java.util.Map; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index bfe68724c..0b2aa511f 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 69f954529..2bbec9ea8 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -13,8 +13,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.templates.CarverTemplate; import org.jetbrains.annotations.NotNull; import java.util.HashMap; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 8622b8c79..edf72ea6c 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -93,7 +93,7 @@ public class UserDefinedCarver extends Carver { @Override public Worm getWorm(long l, Vector3 vector) { - Random r = new FastRandom(l + hash); + Random r = new Random(l + hash); return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut, l); } @@ -131,7 +131,7 @@ public class UserDefinedCarver extends Carver { public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)).getConfig(); if(conf.getCarvers().get(this) != null) { - return new FastRandom(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); + return new Random(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); } return false; } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index 0cf9ba6ce..7da758b9f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -8,6 +8,6 @@ import com.dfsek.terra.config.templates.StructureTemplate; public class StructureFactory implements ConfigFactory { @Override public ConfiguredStructure build(StructureTemplate config, TerraPlugin main) { - return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn(), config); + return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 850a570b7..450e551a4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; @@ -44,7 +43,7 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; - Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index e7b6b7145..14a59c481 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; @@ -11,6 +11,7 @@ import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import java.util.ArrayList; import java.util.List; @SuppressWarnings({"unused", "FieldMayBeFinal"}) @@ -30,11 +31,6 @@ public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { @Abstractable private StructureSpawn spawn; - @Value("features") - @Abstractable - @Default - private List features = new GlueList<>(); - public String getID() { return id; } @@ -47,10 +43,6 @@ public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { return y; } - public List getFeatures() { - return features; - } - public StructureSpawn getSpawn() { return spawn; } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 9eb9258e4..1c1ba019b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -5,23 +5,16 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure implements ConfiguredStructure { private final ProbabilityCollection structure; private final Range spawnStart; private final StructureSpawn spawn; - private final StructureTemplate template; - public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; - this.template = template; - } - - public StructureTemplate getTemplate() { - return template; } @Override diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index e0648356e..b244b003f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.structure.command; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -30,7 +29,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder()); - - sender.sendMessage("Found: " + check); - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java index cd84be60c..05d515739 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java @@ -18,11 +18,6 @@ import com.dfsek.terra.config.lang.LangUtil; value = "load", aliases = "ld" ), - @Subcommand( - clazz = SpawnCommand.class, - value = "spawn", - aliases = "s" - ), @Subcommand( clazz = StructureLocateCommand.class, value = "locate", @@ -34,6 +29,6 @@ import com.dfsek.terra.config.lang.LangUtil; public class StructureCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - LangUtil.send("command.structure.main-menu", sender); + //LangUtil.send("command.structure.main-menu", sender); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index c215db421..7d10eac31 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure; +import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; +import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -16,11 +19,8 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; -import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; +import java.util.Random; import java.util.concurrent.ThreadLocalRandom; @PlayerCommand @@ -66,7 +66,7 @@ public class StructureLoadCommand implements CommandTemplate { Player player = (Player) sender; long t = System.nanoTime(); - FastRandom random = new FastRandom(ThreadLocalRandom.current().nextLong()); + Random random = new Random(ThreadLocalRandom.current().nextLong()); Rotation r; try { r = Rotation.fromDegrees(rotation); diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index ae1441575..d49c5bc3d 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure; +import com.dfsek.terra.addons.structure.command.AsyncStructureFinder; +import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -13,12 +16,8 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; -import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.world.population.items.TerraStructure; import java.util.Locale; @@ -50,7 +49,7 @@ public class StructureLocateCommand implements CommandTemplate { private TerraPlugin main; @ArgumentTarget("structure") - private TerraStructure structure; + private ConfiguredStructure structure; @ArgumentTarget("radius") private Integer radius; @@ -64,11 +63,11 @@ public class StructureLocateCommand implements CommandTemplate { new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } - } else LangUtil.send("command.biome.unable-to-locate", sender); + } //else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index ff66a9043..0ee899437 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -14,6 +14,6 @@ public class ScriptArgumentParser implements ArgumentParser { @Override public Structure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).get(arg); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).get(arg); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 95ab9562e..989d3b852 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.world.population.items.TerraStructure; public class StructureArgumentParser implements ArgumentParser { @Inject @@ -14,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser complete(CommandSender sender) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index bc1627675..2fcddf53e 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.world.population.items.TerraStructure; +import com.dfsek.terra.api.structure.ConfiguredStructure; import java.util.ArrayList; import java.util.List; @@ -17,6 +17,6 @@ public class StructureCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(TerraStructure.class).keys()); + return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(ConfiguredStructure.class).keys()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index adfbea08b..20546ef95 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -7,11 +7,11 @@ import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; -import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -21,7 +21,7 @@ import java.util.Random; public class Entry { private final Item item; private final long weight; - private final List functions = new GlueList<>(); + private final List functions = new ArrayList<>(); /** * Instantiates an Entry from a JSON representation. diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java index 5b20dcab0..8e7fd4998 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java @@ -3,12 +3,12 @@ package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.GlueList; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -16,7 +16,7 @@ import java.util.Random; * Class representation of a Loot Table to populate chest loot. */ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { - private final List pools = new GlueList<>(); + private final List pools = new ArrayList<>(); /** * Instantiates a LootTable from a JSON String. @@ -35,7 +35,7 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { @Override public List getLoot(Random r) { - List itemList = new GlueList<>(); + List itemList = new ArrayList<>(); for(Pool pool : pools) { itemList.addAll(pool.getItems(r)); } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index 52c999980..344a31844 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -2,13 +2,12 @@ package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -51,7 +50,7 @@ public class Pool { public List getItems(Random r) { int rolls = r.nextInt(max - min + 1) + min; - List items = new GlueList<>(); + List items = new ArrayList<>(); for(int i = 0; i < rolls; i++) { items.add(entries.get(r).getItem(r)); } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index e59bb84e4..df14c5472 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -4,10 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.ItemMeta; -import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; @@ -38,7 +38,7 @@ public class EnchantFunction implements LootFunction { if(original.getItemMeta() == null) return original; double enchant = (r.nextDouble() * (max - min)) + min; - List possible = new GlueList<>(); + List possible = new ArrayList<>(); for(Enchantment ench : main.getItemHandle().getEnchantments()) { if(ench.canEnchantItem(original) && (disabled == null || !this.disabled.contains(ench.getID()))) { possible.add(ench); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java index 4b99b88d3..d8248eda6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java @@ -9,4 +9,6 @@ public interface ConfiguredStructure { Range getSpawnStart(); StructureSpawn getSpawn(); + + String getID(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index a97fe0e93..ef68a3130 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -72,6 +72,7 @@ public final class FabricUtil { } } + /* Pair pair = fabricAddon.getTemplates().get(pack); PreLoadCompatibilityOptions compatibilityOptions = pair.getLeft(); PostLoadCompatibilityOptions postLoadCompatibilityOptions = pair.getRight(); @@ -100,6 +101,8 @@ public final class FabricUtil { } } + */ + BiomeEffectsAccessor accessor = (BiomeEffectsAccessor) vanilla.getEffects(); BiomeEffects.Builder effects = new BiomeEffects.Builder() .waterColor(colors.getOrDefault("water", accessor.getWaterColor())) From 88dfb299a5a6955ef32cd7c225566e494cff9c9c Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 07:56:33 -0700 Subject: [PATCH 0136/1529] create chunk generator addon module --- .../addons/chunk-generator/build.gradle.kts | 59 +++++++++++++++++++ settings.gradle.kts | 1 + 2 files changed, 60 insertions(+) create mode 100644 common/addons/chunk-generator/build.gradle.kts diff --git a/common/addons/chunk-generator/build.gradle.kts b/common/addons/chunk-generator/build.gradle.kts new file mode 100644 index 000000000..d6f23e57a --- /dev/null +++ b/common/addons/chunk-generator/build.gradle.kts @@ -0,0 +1,59 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + + "shadedApi"("org.apache.commons:commons-rng-core:1.3") + "shadedApi"("commons-io:commons-io:2.4") + + "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") + "shadedApi"("org.yaml:snakeyaml:1.27") + "shadedApi"("org.ow2.asm:asm:9.0") + "shadedApi"("commons-io:commons-io:2.6") + + "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") + "shadedApi"("org.yaml:snakeyaml:1.27") + + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 02d321adc..21659ff9f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,6 +16,7 @@ include("common:loader:addon") include("common:addons:noise") +include("common:addons:chunk-generator") include("common:addons:biome:config") include("common:addons:biome:provider:pipeline") From 66a5cce3995351b0a2763f445e9a0b091642377e Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 10:31:01 -0700 Subject: [PATCH 0137/1529] create ChunkGeneratorProvider --- .../terra/api/world/generator/ChunkGeneratorProvider.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java 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 new file mode 100644 index 000000000..e68f79444 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.config.ConfigPack; + +public interface ChunkGeneratorProvider { + ChunkGenerator newInstance(ConfigPack pack); +} From 99d64fec36f2c063d4cc73c8c9d1b5371f4465ad Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 10:54:25 -0700 Subject: [PATCH 0138/1529] build chunk generator addon --- .../NoiseChunkGenerator3DAddon.java | 30 +++++++++++++++++++ .../addons/chunkgenerator}/PaletteUtil.java | 2 +- .../generators/DefaultChunkGenerator3D.java | 20 ++----------- .../generation/math/SamplerCacheImpl.java | 2 +- .../interpolation/ChunkInterpolator2D.java | 3 +- .../interpolation/ChunkInterpolator3D.java | 3 +- .../interpolation/ElevationInterpolator.java | 2 +- .../math/interpolation/Interpolator.java | 2 +- .../math/interpolation/Interpolator3.java | 2 +- .../generation/math/samplers/Sampler3D.java | 6 ++-- .../dfsek/terra/api/config/ConfigPack.java | 3 ++ .../com/dfsek/terra/api}/world/Carver.java | 2 +- .../generator/ChunkGeneratorProvider.java | 2 +- .../world/generator}/ChunkInterpolator.java | 2 +- .../terra/world/carving/NoiseCarver.java | 4 +-- .../generation/math/samplers/Sampler2D.java | 28 ----------------- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 17 ++--------- .../FabricChunkGeneratorWrapper.java | 5 ++-- .../com/dfsek/terra/platform/GenWrapper.java | 6 ++-- .../com/dfsek/terra/region/Generator.java | 6 ++-- 20 files changed, 64 insertions(+), 83 deletions(-) create mode 100644 common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java rename common/{implementation/src/main/java/com/dfsek/terra/api/util => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/PaletteUtil.java (93%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/generators/DefaultChunkGenerator3D.java (88%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/SamplerCacheImpl.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/interpolation/ChunkInterpolator2D.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/interpolation/ChunkInterpolator3D.java (96%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/interpolation/ElevationInterpolator.java (95%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/interpolation/Interpolator.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/interpolation/Interpolator3.java (94%) rename common/{implementation/src/main/java/com/dfsek/terra/world => addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator}/generation/math/samplers/Sampler3D.java (80%) rename common/{implementation/src/main/java/com/dfsek/terra => api/src/main/java/com/dfsek/terra/api}/world/Carver.java (84%) rename common/{implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation => api/src/main/java/com/dfsek/terra/api/world/generator}/ChunkInterpolator.java (95%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java 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; } From 43395fef08c957c26e4852d8c75d33f2ea6c09d3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 10:58:44 -0700 Subject: [PATCH 0139/1529] refactor to NoiseChunkGenerator3D --- .../addons/chunkgenerator/NoiseChunkGenerator3DAddon.java | 4 ++-- ...efaultChunkGenerator3D.java => NoiseChunkGenerator3D.java} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/{DefaultChunkGenerator3D.java => NoiseChunkGenerator3D.java} (97%) 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 index 801827388..5d0bab1c2 100644 --- 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 @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.chunkgenerator; -import com.dfsek.terra.addons.chunkgenerator.generation.generators.DefaultChunkGenerator3D; +import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -25,6 +25,6 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getCheckedRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new DefaultChunkGenerator3D(pack, main)); + event.getPack().getCheckedRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); } } diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java similarity index 97% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 7d183bc6b..3c564ab2e 100644 --- a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -25,12 +25,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public class DefaultChunkGenerator3D implements TerraChunkGenerator { +public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; private final List blockPopulators = new ArrayList<>(); - public DefaultChunkGenerator3D(ConfigPack c, TerraPlugin main) { + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; } From 2f55206cf0874add66b442c39a8d01eb4b6f6e5d Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 11:22:47 -0700 Subject: [PATCH 0140/1529] registered chunk generators in impl --- .../terra/config/pack/ConfigPackImpl.java | 6 ++++ .../terra/config/pack/ConfigPackTemplate.java | 8 +++++ .../terra/config/pack/WorldConfigImpl.java | 2 +- .../dfsek/terra/world}/SamplerCacheImpl.java | 2 +- .../terra/world/carving/NoiseCarver.java | 35 ------------------- 5 files changed, 16 insertions(+), 37 deletions(-) rename common/{addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math => implementation/src/main/java/com/dfsek/terra/world}/SamplerCacheImpl.java (96%) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index c45478e70..023b111dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -27,6 +27,7 @@ import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -362,4 +363,9 @@ public class ConfigPackImpl implements ConfigPack { public RegistryFactory getRegistryFactory() { return registryFactory; } + + @Override + public ChunkGeneratorProvider getGeneratorProvider() { + return template.getGeneratorProvider(); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index de60c0ed8..ef6eda483 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import java.util.HashMap; import java.util.HashSet; @@ -84,6 +85,13 @@ public class ConfigPackTemplate implements ConfigTemplate { @Default private boolean disableFlora = false; + @Value("generator") + private ChunkGeneratorProvider generatorProvider; + + public ChunkGeneratorProvider getGeneratorProvider() { + return generatorProvider; + } + public boolean disableCarvers() { return disableCarvers; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index b5aef6c63..430fa5d46 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; -import com.dfsek.terra.world.generation.math.SamplerCacheImpl; +import com.dfsek.terra.world.SamplerCacheImpl; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java similarity index 96% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java rename to common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 7ce9cf90f..523d31730 100644 --- a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math; +package com.dfsek.terra.world; 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/carving/NoiseCarver.java b/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java deleted file mode 100644 index aa537e5e6..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.world.carving; - -import com.dfsek.terra.api.TerraPlugin; -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.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 { - private final Range range; - private final BlockState data; - private final TerraPlugin main; - - public NoiseCarver(Range range, BlockState data, TerraPlugin main) { - this.range = range; - this.data = data; - this.main = main; - } - - @Override - public void carve(World world, int chunkX, int chunkZ, ChunkAccess chunk) { - ChunkInterpolator interpolator = new ChunkInterpolator3D(world, chunkX, chunkZ, main.getWorld(world).getBiomeProvider(), (gen, coord) -> gen.getCarver().getNoise(coord.setY(coord.getY()))); - for(int y : range) { - for(int x = 0; x < 16; x++) { - for(int z = 0; z < 16; z++) { - double n = interpolator.getNoise(x, y, z); - if(n > 0) chunk.setBlock(x, y, z, data); - } - } - } - } -} From 1ac903cf91e863b43bb45550bfd0aafb24410ad8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 11:25:59 -0700 Subject: [PATCH 0141/1529] get or create chunk generator registry --- .../terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 5d0bab1c2..3be316686 100644 --- 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 @@ -25,6 +25,6 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getCheckedRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); } } From 6a1cc16dc398433155f92658f5ccd72d3d53e215 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 13:15:09 -0700 Subject: [PATCH 0142/1529] load addon dependencies before pack manifest --- .../config/pack/ConfigPackAddonsTemplate.java | 20 +++++++++ .../terra/config/pack/ConfigPackImpl.java | 43 +++++++++---------- .../terra/config/pack/ConfigPackTemplate.java | 8 ---- 3 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java new file mode 100644 index 000000000..4541f6760 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.config.pack; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.addon.TerraAddon; + +import java.util.HashSet; +import java.util.Set; + +public class ConfigPackAddonsTemplate implements ConfigTemplate { + @Value("addons") + @Default + private Set addons = new HashSet<>(); + + + public Set getAddons() { + return addons; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 023b111dd..ef93540ee 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -13,11 +13,7 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.config.*; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -25,8 +21,8 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; @@ -44,18 +40,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.Serial; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.function.Function; +import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -76,6 +62,8 @@ public class ConfigPackImpl implements ConfigPack { private final Configuration configuration; + private final Set addons; + private final BiomeProviderBuilder biomeProviderBuilder; @@ -106,12 +94,16 @@ public class ConfigPackImpl implements ConfigPack { try { configuration = new Configuration(new FileInputStream(pack)); - selfLoader.load(template, configuration); - main.logger().info("Loading config pack \"" + template.getID() + "\""); + ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate(); + selfLoader.load(addonsTemplate, configuration); + this.addons = addonsTemplate.getAddons(); main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + selfLoader.load(template, configuration); + + main.logger().info("Loading config pack \"" + template.getID() + "\""); load(l, main); ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); @@ -158,11 +150,17 @@ public class ConfigPackImpl implements ConfigPack { if(pack == null) throw new LoadException("No pack.yml file found in " + file.getName()); configuration = new Configuration(file.getInputStream(pack)); - selfLoader.load(template, configuration); - main.logger().info("Loading config pack \"" + template.getID() + "\""); + + ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate(); + selfLoader.load(addonsTemplate, configuration); + this.addons = addonsTemplate.getAddons(); main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + + selfLoader.load(template, configuration); + main.logger().info("Loading config pack \"" + template.getID() + "\""); + load(l, main); ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); @@ -185,6 +183,7 @@ public class ConfigPackImpl implements ConfigPack { private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } + @Override public ConfigPackImpl applyLoader(Type type, TypeLoader loader) { abstractConfigLoader.registerLoader(type, loader); @@ -306,7 +305,7 @@ public class ConfigPackImpl implements ConfigPack { @Override public Set addons() { - return template.getAddons(); + return addons; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index ef6eda483..acb1a02b9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -17,10 +17,6 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("id") private String id; - @Value("addons") - @Default - private Set addons = new HashSet<>(); - @Value("variables") @Default private Map variables = new HashMap<>(); @@ -159,8 +155,4 @@ public class ConfigPackTemplate implements ConfigTemplate { public boolean doBetaCarvers() { return betaCarvers; } - - public Set getAddons() { - return addons; - } } From e1abc67989c199011901613093b507b101a30757 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 7 Jul 2021 20:38:16 -0700 Subject: [PATCH 0143/1529] clean up and annotate generic utils --- .../terra/api/util/generic/either/Either.java | 33 +++++++++++++++++-- .../api/util/generic/pair/ImmutablePair.java | 22 +++++++++++++ .../terra/api/util/generic/pair/Pair.java | 21 ++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java index cad5d93bf..3c12ddbd6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java @@ -1,5 +1,9 @@ package com.dfsek.terra.api.util.generic.either; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; import java.util.Optional; import java.util.function.Consumer; @@ -14,29 +18,39 @@ public final class Either { this.leftPresent = leftPresent; } + @NotNull + @Contract("_ -> new") public static Either left(L1 left) { - return new Either<>(left, null, true); + return new Either<>(Objects.requireNonNull(left), null, true); } + @NotNull + @Contract("_ -> new") public static Either right(R1 right) { - return new Either<>(null, right, false); + return new Either<>(null, Objects.requireNonNull(right), false); } + @NotNull public Optional getLeft() { if(leftPresent) return Optional.of(left); return Optional.empty(); } + @NotNull public Optional getRight() { if(!leftPresent) return Optional.of(right); return Optional.empty(); } + @NotNull + @Contract("_ -> this") public Either ifLeft(Consumer action) { if(leftPresent) action.accept(left); return this; } + @NotNull + @Contract("_ -> this") public Either ifRight(Consumer action) { if(!leftPresent) action.accept(right); return this; @@ -49,4 +63,19 @@ public final class Either { public boolean hasRight() { return !leftPresent; } + + @Override + public int hashCode() { + return Objects.hash(left, right); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Either)) return false; + + Either that = (Either) obj; + + return (this.leftPresent && that.leftPresent && Objects.equals(this.left, that.left)) + || (!this.leftPresent && !that.leftPresent && Objects.equals(this.right, that.right)); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java index 0ca0c0ad3..132196686 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java @@ -1,5 +1,10 @@ package com.dfsek.terra.api.util.generic.pair; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + public final class ImmutablePair { private final L left; private final R right; @@ -11,6 +16,7 @@ public final class ImmutablePair { this.right = right; } + @Contract("_, _ -> new") public static ImmutablePair of(L1 left, R1 right) { return new ImmutablePair<>(left, right); } @@ -23,12 +29,28 @@ public final class ImmutablePair { return left; } + @Contract("-> new") @SuppressWarnings("unchecked") public static ImmutablePair ofNull() { return (ImmutablePair) NULL; } + @NotNull + @Contract("-> new") public Pair mutable() { return Pair.of(left, right); } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof ImmutablePair)) return false; + + ImmutablePair that = (ImmutablePair) obj; + return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); + } + + @Override + public int hashCode() { + return Objects.hash(left, right); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java index 5ec1ede8f..68052dfea 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java @@ -1,5 +1,10 @@ package com.dfsek.terra.api.util.generic.pair; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + public class Pair { private L left; private R right; @@ -9,6 +14,8 @@ public class Pair { this.right = right; } + @NotNull + @Contract("_, _ -> new") public static Pair of(L1 left, R1 right) { return new Pair<>(left, right); } @@ -29,7 +36,21 @@ public class Pair { this.right = right; } + @Contract("-> new") public ImmutablePair immutable() { return ImmutablePair.of(left, right); } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Pair)) return false; + + Pair that = (Pair) obj; + return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); + } + + @Override + public int hashCode() { + return Objects.hash(left, right); + } } From 6ca9ba029b1b6f6fa7ef4edb3ebccb3ef6ee3212 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 06:18:16 -0700 Subject: [PATCH 0144/1529] clean up biome and structure things --- .../biome/image/ImageProviderTemplate.java | 6 ++++-- .../single/SingleBiomeProviderTemplate.java | 12 ++++++++---- .../terra/addons/carver/CarverCache.java | 4 +++- .../terra/addons/carver/CarverFactory.java | 6 +++--- .../addons/carver/UserDefinedCarver.java | 19 ------------------- .../addons/structure/StructureFactory.java | 1 - .../addons/structure/StructurePopulator.java | 5 ++--- .../addons/structure/StructureTemplate.java | 7 +------ .../addons/structure/TerraStructure.java | 5 +++++ .../command/structure/StructureCommand.java | 1 - .../argument/ScriptArgumentParser.java | 1 - 11 files changed, 26 insertions(+), 41 deletions(-) diff --git a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index 878e74bb7..e53cae45e 100644 --- a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.util.seeded.BiomeBuilder; import java.awt.image.BufferedImage; import java.util.stream.Collectors; -public class ImageProviderTemplate extends BiomeProviderTemplate { +public class ImageProviderTemplate /*extends BiomeProviderTemplate */{ private final Registry biomes; @Value("image.name") private BufferedImage image; @@ -16,11 +16,13 @@ public class ImageProviderTemplate extends BiomeProviderTemplate { @Value("image.align") private ImageBiomeProvider.Align align; + private int resolution; + public ImageProviderTemplate(Registry set) { this.biomes = set; } - @Override + //@Override public BiomeProvider build(long seed) { return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.apply(seed)).collect(Collectors.toSet()), image, resolution, align); } diff --git a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index e66ce857a..97c6e855b 100644 --- a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -1,18 +1,22 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -public class SingleBiomeProviderTemplate extends BiomeProviderTemplate { +public class SingleBiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("biome") private BiomeBuilder biome; - public SingleBiomeProviderTemplate() { - } - @Override public BiomeProvider build(long seed) { return new SingleBiomeProvider(biome.apply(seed)); } + + @Override + public BiomeProviderBuilder get() { + return this; + } } diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 6a3a64e46..498d88f6f 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -41,9 +40,12 @@ public class CarverCache { for(int i = 0; i < carving.getLength(); i++) { carving.step(); TerraBiome biome = provider.getBiome(carving.getRunning()); + /* if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop if we enter a biome this carver is not present in return Collections.emptyList(); } + + */ points.add(carving.getPoint()); } return points; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java index a57ecbba5..673ff1542 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java @@ -4,16 +4,16 @@ import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.config.pack.ConfigPackImpl; import java.util.Arrays; import java.util.List; public class CarverFactory implements ConfigFactory { - private final ConfigPackImpl pack; + private final ConfigPack pack; - public CarverFactory(ConfigPackImpl pack) { + public CarverFactory(ConfigPack pack) { this.pack = pack; } diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index edf72ea6c..480c8dcfa 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -7,11 +7,7 @@ import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.addons.carver.carving.Carver; import com.dfsek.terra.addons.carver.carving.Worm; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.vector.Vector3; @@ -58,21 +54,6 @@ public class UserDefinedCarver extends Carver { Parser p = new Parser(); - functions.forEach((id, noise) -> { - switch(noise.getDimensions()) { - case 2: - p.registerFunction(id, new NoiseFunction2(noise.apply(hash))); - break; - case 3: - p.registerFunction(id, new NoiseFunction3(noise.apply(hash))); - break; - } - }); - - for(Map.Entry entry : definedFunctions.entrySet()) { - p.registerFunction(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), p, parent)); - } - Scope s = new Scope().withParent(parent); diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index 7da758b9f..1d5f51022 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.config.templates.StructureTemplate; public class StructureFactory implements ConfigFactory { @Override diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 450e551a4..a54b10110 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -10,7 +10,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; @@ -41,8 +40,8 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); - if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) - continue; + //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) + // continue; Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index 14a59c481..dfb23f8ed 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -1,18 +1,13 @@ package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Abstractable; -import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.util.GlueList; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; - -import java.util.ArrayList; -import java.util.List; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 1c1ba019b..560872bfb 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -31,4 +31,9 @@ public class TerraStructure implements ConfiguredStructure { public StructureSpawn getSpawn() { return spawn; } + + @Override + public String getID() { + return null; + } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java index 05d515739..8565e4f8d 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.config.lang.LangUtil; @Command( subcommands = { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index 0ee899437..909412a44 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.addons.structure.structures.script.StructureScript; public class ScriptArgumentParser implements ArgumentParser { @Inject From 719ea83bcda9821ed66c105d008dcd734f18afb7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 09:54:18 -0700 Subject: [PATCH 0145/1529] populator registration --- .../main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 5 ++++- .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 5 ++++- .../main/java/com/dfsek/terra/addons/tree/TreeAddon.java | 5 ++++- .../terra/api/world/generator/BlockPopulatorProvider.java | 7 +++++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 796b84f9d..f1ff7a55b 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -8,6 +8,8 @@ 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.BlockPopulatorProvider; @Addon("core-flora-config") @Author("Terra") @@ -21,7 +23,8 @@ public class FloraAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("FLORA", pack -> new FloraPopulator(main)); } } diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 58667776c..4e26c5316 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -8,6 +8,8 @@ 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.BlockPopulatorProvider; @Addon("core-ore-config") @@ -22,7 +24,8 @@ public class OreAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("ORE", pack -> new OrePopulator(main)); } } diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 73930fd3b..85ff2c471 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -8,6 +8,8 @@ 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.BlockPopulatorProvider; @Addon("core-tree-config") @Author("Terra") @@ -21,7 +23,8 @@ public class TreeAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("TREE", pack -> new TreePopulator(main)); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java new file mode 100644 index 000000000..f2d1b5c36 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.config.ConfigPack; + +public interface BlockPopulatorProvider { + TerraBlockPopulator newInstance(ConfigPack pack); +} From 8dcd50d3fbd7e068b747dbec2e5f8d1c30a03359 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 09:56:19 -0700 Subject: [PATCH 0146/1529] BlockPopulator -> GenerationStage --- .../java/com/dfsek/terra/addons/carver/CavePopulator.java | 4 ++-- .../generation/generators/NoiseChunkGenerator3D.java | 6 +++--- .../main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 4 ++-- .../java/com/dfsek/terra/addons/flora/FloraPopulator.java | 4 ++-- .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 4 ++-- .../main/java/com/dfsek/terra/addons/ore/OrePopulator.java | 4 ++-- .../dfsek/terra/addons/structure/StructurePopulator.java | 4 ++-- .../main/java/com/dfsek/terra/addons/tree/TreeAddon.java | 4 ++-- .../java/com/dfsek/terra/addons/tree/TreePopulator.java | 4 ++-- .../terra/api/world/generator/BlockPopulatorProvider.java | 7 ------- .../{BlockPopulator.java => GenerationStage.java} | 2 +- .../terra/api/world/generator/GenerationStageProvider.java | 7 +++++++ .../terra/api/world/generator/TerraChunkGenerator.java | 2 +- ...{TerraBlockPopulator.java => TerraGenerationStage.java} | 2 +- .../terra/bukkit/generator/BukkitPopulatorWrapper.java | 2 +- .../dfsek/terra/bukkit/population/PopulationManager.java | 2 +- .../fabric/generation/FabricChunkGeneratorWrapper.java | 2 +- .../dfsek/terra/fabric/generation/PopulatorFeature.java | 2 +- 18 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java rename common/api/src/main/java/com/dfsek/terra/api/world/generator/{BlockPopulator.java => GenerationStage.java} (83%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java rename common/api/src/main/java/com/dfsek/terra/api/world/generator/{TerraBlockPopulator.java => TerraGenerationStage.java} (81%) diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 2bbec9ea8..11898b6cd 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -12,14 +12,14 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; import java.util.Random; -public class CavePopulator implements TerraBlockPopulator, Chunkified { +public class CavePopulator implements TerraGenerationStage, Chunkified { private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. private final TerraPlugin main; diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 3c564ab2e..2a242580d 100644 --- a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -17,7 +17,7 @@ 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.Sampler; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import org.jetbrains.annotations.NotNull; @@ -28,7 +28,7 @@ import java.util.Random; public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - private final List blockPopulators = new ArrayList<>(); + private final List blockPopulators = new ArrayList<>(); public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; @@ -145,7 +145,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { } @Override - public List getPopulators() { + public List getGenerationStages() { return blockPopulators; } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index f1ff7a55b..da00921b9 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -9,7 +9,7 @@ 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.BlockPopulatorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("core-flora-config") @Author("Terra") @@ -25,6 +25,6 @@ public class FloraAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); - event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("FLORA", pack -> new FloraPopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index 93a9d32ce..d9dbe3cb0 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -5,13 +5,13 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; /** * Populates Flora */ -public class FloraPopulator implements TerraBlockPopulator { +public class FloraPopulator implements TerraGenerationStage { private final TerraPlugin main; public FloraPopulator(TerraPlugin main) { diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 4e26c5316..704678216 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -9,7 +9,7 @@ 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.BlockPopulatorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("core-ore-config") @@ -26,6 +26,6 @@ public class OreAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1); - event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("ORE", pack -> new OrePopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); } } diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 9cba3587d..cfc7274ed 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -7,12 +7,12 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; import java.util.Random; -public class OrePopulator implements TerraBlockPopulator { +public class OrePopulator implements TerraGenerationStage { private final TerraPlugin main; public OrePopulator(TerraPlugin main) { diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index a54b10110..d29502cc6 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -12,13 +12,13 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Random; -public class StructurePopulator implements TerraBlockPopulator, Chunkified { +public class StructurePopulator implements TerraGenerationStage, Chunkified { private final TerraPlugin main; public StructurePopulator(TerraPlugin main) { diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 85ff2c471..c79281d4a 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -9,7 +9,7 @@ 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.BlockPopulatorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("core-tree-config") @Author("Terra") @@ -25,6 +25,6 @@ public class TreeAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); - event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("TREE", pack -> new TreePopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); } } diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index 977d9b91e..434c56c7e 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -7,14 +7,14 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraBlockPopulator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Random; -public class TreePopulator implements TerraBlockPopulator { +public class TreePopulator implements TerraGenerationStage { private final TerraPlugin main; public TreePopulator(TerraPlugin main) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java deleted file mode 100644 index f2d1b5c36..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.world.generator; - -import com.dfsek.terra.api.config.ConfigPack; - -public interface BlockPopulatorProvider { - TerraBlockPopulator newInstance(ConfigPack pack); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java similarity index 83% rename from common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java index 5cbfae751..a5fc63668 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java @@ -6,6 +6,6 @@ import com.dfsek.terra.api.world.World; import java.util.Random; -public interface BlockPopulator extends Handle { +public interface GenerationStage extends Handle { void populate(World world, Random random, Chunk chunk); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java new file mode 100644 index 000000000..209001f56 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.config.ConfigPack; + +public interface GenerationStageProvider { + TerraGenerationStage newInstance(ConfigPack pack); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java index 8a4b19c28..a12230672 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java @@ -21,5 +21,5 @@ public interface TerraChunkGenerator { Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth); - List getPopulators(); + List getGenerationStages(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java similarity index 81% rename from common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java index 191c8a650..8f4cf9f0a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraBlockPopulator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java @@ -3,6 +3,6 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -public interface TerraBlockPopulator { +public interface TerraGenerationStage { void populate(World world, Chunk chunk); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java index 8c3088cc8..731e03bc6 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java @@ -19,7 +19,7 @@ public class BukkitPopulatorWrapper extends BlockPopulator { @Override public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk source) { - delegate.getPopulators().forEach(populator -> { + delegate.getGenerationStages().forEach(populator -> { if(populator instanceof Chunkified) { populator.populate(BukkitAdapter.adapt(world), BukkitAdapter.adapt(source)); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 2a0a9c926..92f704701 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -64,7 +64,7 @@ public class PopulationManager extends BlockPopulator { long zRand = (random.nextLong() / 2L << 1L) + 1L; random.setSeed((long) x * xRand + (long) z * zRand ^ w.getSeed()); Chunk currentChunk = w.getChunkAt(x, z); - generator.getPopulators().forEach(populator -> { + generator.getGenerationStages().forEach(populator -> { if(!(populator instanceof Chunkified)) { populator.populate(w, currentChunk); } 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 0f2d66d17..5d2c2bac1 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 @@ -146,7 +146,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener return CompletableFuture.supplyAsync(() -> { World world = (World) ((StructureAccessorAccessor) accessor).getWorld(); delegate.generateChunkData(world, new FastRandom(), chunk.getPos().x, chunk.getPos().z, (ChunkData) chunk); - delegate.getPopulators().forEach(populator -> { + delegate.getGenerationStages().forEach(populator -> { if(populator instanceof Chunkified) { populator.populate(world, (com.dfsek.terra.api.world.Chunk) world); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java index 4ea573d51..47b0e497c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java @@ -24,7 +24,7 @@ public class PopulatorFeature extends Feature { if(!(chunkGenerator instanceof FabricChunkGeneratorWrapper)) return true; StructureWorldAccess world = context.getWorld(); FabricChunkGeneratorWrapper gen = (FabricChunkGeneratorWrapper) chunkGenerator; - gen.getHandle().getPopulators().forEach(populator -> { + gen.getHandle().getGenerationStages().forEach(populator -> { if(!(populator instanceof Chunkified)) { populator.populate((World) world, (Chunk) world); } From b609a0ba63088fd74661e85e70cbb804cd788bfb Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 22:39:29 -0700 Subject: [PATCH 0147/1529] add stages to ConfigPackTemplate --- .../com/dfsek/terra/config/pack/ConfigPackTemplate.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index acb1a02b9..47b89f178 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -6,9 +6,11 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -57,6 +59,9 @@ public class ConfigPackTemplate implements ConfigTemplate { @Default private boolean disableSaplings = false; + @Value("stages") + private LinkedHashMap stages; + @Value("version") @Default private String version = "0.1.0"; @@ -88,6 +93,10 @@ public class ConfigPackTemplate implements ConfigTemplate { return generatorProvider; } + public LinkedHashMap getStages() { + return stages; + } + public boolean disableCarvers() { return disableCarvers; } From 40e28c5e4b64608515c7367d8a9dd013efb01e0f Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 23:08:56 -0700 Subject: [PATCH 0148/1529] move modules to better directory structure --- common/addons/README.md | 4 +++ .../build.gradle.kts | 0 .../biome/image/ImageBiomeProvider.java | 0 .../biome/image/ImageProviderTemplate.java | 0 .../build.gradle.kts | 0 .../biome/pipeline/BiomeHolderImpl.java | 0 .../biome/pipeline/BiomePipelineAddon.java | 0 .../biome/pipeline/BiomePipelineImpl.java | 0 .../addons/biome/pipeline/StageSeeded.java | 0 .../biome/pipeline/StandardBiomeProvider.java | 0 .../biome/pipeline/api/BiomeExpander.java | 0 .../biome/pipeline/api/BiomeHolder.java | 0 .../biome/pipeline/api/BiomeMutator.java | 0 .../addons/biome/pipeline/api/Stage.java | 0 .../config/BiomePipelineTemplate.java | 0 .../config/BiomeProviderBuilderLoader.java | 0 .../config/BiomeProviderTemplate.java | 0 .../pipeline/config/NoiseSourceTemplate.java | 0 .../pipeline/config/SourceBuilderLoader.java | 0 .../biome/pipeline/config/SourceTemplate.java | 0 .../config/stage/StageBuilderLoader.java | 0 .../pipeline/config/stage/StageTemplate.java | 0 .../stage/expander/ExpanderStageTemplate.java | 0 .../mutator/BorderListMutatorTemplate.java | 0 .../stage/mutator/BorderMutatorTemplate.java | 0 .../stage/mutator/MutatorStageTemplate.java | 0 .../mutator/ReplaceListMutatorTemplate.java | 0 .../stage/mutator/ReplaceMutatorTemplate.java | 0 .../stage/mutator/SmoothMutatorTemplate.java | 0 .../pipeline/expand/FractalExpander.java | 0 .../pipeline/mutator/BorderListMutator.java | 0 .../biome/pipeline/mutator/BorderMutator.java | 0 .../pipeline/mutator/ReplaceListMutator.java | 0 .../pipeline/mutator/ReplaceMutator.java | 0 .../biome/pipeline/mutator/SmoothMutator.java | 0 .../biome/pipeline/source/RandomSource.java | 0 .../biome/pipeline/stages/ExpanderStage.java | 0 .../biome/pipeline/stages/MutatorStage.java | 0 .../build.gradle.kts | 0 .../biome/single/SingleBiomeProvider.java | 0 .../single/SingleBiomeProviderTemplate.java | 0 .../build.gradle.kts | 0 .../NoiseChunkGenerator3DAddon.java | 0 .../addons/chunkgenerator/PaletteUtil.java | 0 .../generators/NoiseChunkGenerator3D.java | 0 .../interpolation/ChunkInterpolator2D.java | 0 .../interpolation/ChunkInterpolator3D.java | 0 .../interpolation/ElevationInterpolator.java | 0 .../math/interpolation/Interpolator.java | 0 .../math/interpolation/Interpolator3.java | 0 .../generation/math/samplers/Sampler3D.java | 0 .../config => config-biome}/build.gradle.kts | 1 - .../terra/addons/biome/BiomeConfigAddon.java | 0 .../terra/addons/biome/BiomeConfigType.java | 0 .../terra/addons/biome/BiomeFactory.java | 0 .../terra/addons/biome/BiomeTemplate.java | 0 .../terra/addons/biome/BlankFunction.java | 0 .../addons/biome/PaletteSettingsImpl.java | 0 .../terra/addons/biome/UserDefinedBiome.java | 0 .../addons/biome/UserDefinedBiomeBuilder.java | 0 .../terra/addons/biome/WorldGenerator.java | 0 .../biome/command/biome/AsyncBiomeFinder.java | 0 .../command/biome/AsyncFeatureFinder.java | 0 .../biome/command/biome/BiomeCommand.java | 0 .../biome/command/biome/BiomeInfoCommand.java | 0 .../command/biome/BiomeLocateCommand.java | 0 .../biome/arg/BiomeArgumentParser.java | 0 .../command/biome/tab/BiomeTabCompleter.java | 0 .../addons/biome/holder/PaletteHolder.java | 0 .../biome/holder/PaletteHolderBuilder.java | 0 .../biome/holder/PaletteHolderLoader.java | 0 .../terra/addons/biome/slant/SlantHolder.java | 0 .../build.gradle.kts | 0 .../terra/addons/carver/CarverCache.java | 0 .../terra/addons/carver/CarverFactory.java | 0 .../terra/addons/carver/CarverPalette.java | 0 .../terra/addons/carver/CarverTemplate.java | 0 .../terra/addons/carver/CavePopulator.java | 0 .../addons/carver/UserDefinedCarver.java | 0 .../terra/addons/carver/carving/Carver.java | 0 .../terra/addons/carver/carving/Worm.java | 0 .../{flora => config-flora}/build.gradle.kts | 0 .../dfsek/terra/addons/flora/FloraAddon.java | 0 .../terra/addons/flora/FloraConfigType.java | 0 .../terra/addons/flora/FloraFactory.java | 0 .../terra/addons/flora/FloraPopulator.java | 0 .../terra/addons/flora/FloraTemplate.java | 0 .../terra/addons/flora/flora/TerraFlora.java | 0 .../build.gradle.kts | 0 .../dfsek/terra/addons/noise/NoiseAddon.java | 0 .../addons/noise/NoiseConfigPackTemplate.java | 0 .../config/NoiseSamplerBuilderLoader.java | 0 .../config/templates/DomainWarpTemplate.java | 0 .../config/templates/FunctionTemplate.java | 0 .../templates/ImageSamplerTemplate.java | 0 .../config/templates/KernelTemplate.java | 0 .../config/templates/SamplerTemplate.java | 0 .../noise/CellularNoiseTemplate.java | 0 .../noise/ConstantNoiseTemplate.java | 0 .../noise/ExpressionFunctionTemplate.java | 0 .../templates/noise/GaborNoiseTemplate.java | 0 .../config/templates/noise/NoiseTemplate.java | 0 .../templates/noise/SimpleNoiseTemplate.java | 0 .../noise/fractal/BrownianMotionTemplate.java | 0 .../noise/fractal/FractalTemplate.java | 0 .../noise/fractal/PingPongTemplate.java | 0 .../noise/fractal/RidgedFractalTemplate.java | 0 .../normalizer/ClampNormalizerTemplate.java | 0 .../normalizer/LinearNormalizerTemplate.java | 0 .../normalizer/NormalNormalizerTemplate.java | 0 .../normalizer/NormalizerTemplate.java | 0 .../noise/normalizer/ClampNormalizer.java | 0 .../noise/normalizer/LinearNormalizer.java | 0 .../noise/normalizer/NormalNormalizer.java | 0 .../addons/noise/normalizer/Normalizer.java | 0 .../defined/UserDefinedFunction.java | 0 .../noise/paralithic/noise/NoiseFunction.java | 0 .../paralithic/noise/NoiseFunction2.java | 0 .../paralithic/noise/NoiseFunction3.java | 0 .../noise/samplers/DomainWarpedSampler.java | 0 .../noise/samplers/ExpressionSampler.java | 0 .../addons/noise/samplers/ImageSampler.java | 0 .../addons/noise/samplers/KernelSampler.java | 0 .../noise/samplers/noise/CellularSampler.java | 0 .../noise/samplers/noise/ConstantSampler.java | 0 .../samplers/noise/ExpressionFunction.java | 0 .../samplers/noise/GaborNoiseSampler.java | 0 .../noise/samplers/noise/NoiseFunction.java | 0 .../noise/fractal/BrownianMotionSampler.java | 0 .../noise/fractal/FractalNoiseFunction.java | 0 .../noise/fractal/PingPongSampler.java | 0 .../noise/fractal/RidgedFractalSampler.java | 0 .../noise/random/GaussianNoiseSampler.java | 0 .../noise/random/WhiteNoiseSampler.java | 0 .../noise/simplex/OpenSimplex2SSampler.java | 0 .../noise/simplex/OpenSimplex2Sampler.java | 0 .../samplers/noise/simplex/PerlinSampler.java | 0 .../noise/simplex/SimplexSampler.java | 0 .../noise/simplex/SimplexStyleSampler.java | 0 .../noise/value/ValueCubicSampler.java | 0 .../samplers/noise/value/ValueSampler.java | 0 .../samplers/noise/value/ValueStyleNoise.java | 0 .../addons/noise/util/HashIntrinsic.java | 0 .../noise/util/HashMapDoubleDouble.java | 0 .../{ore => config-ore}/build.gradle.kts | 0 .../com/dfsek/terra/addons/ore/OreAddon.java | 0 .../dfsek/terra/addons/ore/OreConfigType.java | 0 .../dfsek/terra/addons/ore/OreFactory.java | 0 .../dfsek/terra/addons/ore/OrePopulator.java | 0 .../dfsek/terra/addons/ore/OreTemplate.java | 0 .../com/dfsek/terra/addons/ore/ores/Ore.java | 0 .../terra/addons/ore/ores/OreConfig.java | 0 .../terra/addons/ore/ores/OreHolder.java | 0 .../terra/addons/ore/ores/VanillaOre.java | 0 .../build.gradle.kts | 0 .../terra/addons/palette/PaletteAddon.java | 0 .../addons/palette/PaletteConfigType.java | 0 .../terra/addons/palette/PaletteFactory.java | 0 .../terra/addons/palette/PaletteTemplate.java | 0 .../addons/palette/palette/NoisePalette.java | 0 .../addons/palette/palette/PaletteImpl.java | 0 .../palette/palette/PaletteLayerHolder.java | 0 .../palette/palette/PaletteLayerLoader.java | 0 .../build.gradle.kts | 0 .../addons/structure/StructureFactory.java | 0 .../addons/structure/StructurePopulator.java | 0 .../addons/structure/StructureTemplate.java | 0 .../addons/structure/TerraStructure.java | 0 .../command/AsyncStructureFinder.java | 0 .../command/structure/StructureCommand.java | 0 .../structure/StructureExportCommand.java | 0 .../structure/StructureLoadCommand.java | 0 .../structure/StructureLocateCommand.java | 0 .../argument/ScriptArgumentParser.java | 0 .../argument/StructureArgumentParser.java | 0 .../completer/RotationCompleter.java | 0 .../structure/completer/ScriptCompleter.java | 0 .../completer/StructureCompleter.java | 0 .../structure/structures/loot/Entry.java | 0 .../structures/loot/LootTableImpl.java | 0 .../structure/structures/loot/Pool.java | 0 .../loot/functions/AmountFunction.java | 0 .../loot/functions/DamageFunction.java | 0 .../loot/functions/EnchantFunction.java | 0 .../loot/functions/LootFunction.java | 0 .../build.gradle.kts | 0 .../dfsek/terra/addons/tree/TreeAddon.java | 0 .../terra/addons/tree/TreeConfigType.java | 0 .../dfsek/terra/addons/tree/TreeFactory.java | 0 .../terra/addons/tree/TreePopulator.java | 0 .../dfsek/terra/addons/tree/TreeTemplate.java | 0 .../terra/addons/tree/tree/TerraTree.java | 0 .../build.gradle.kts | 0 .../addons/terrascript/TerraScriptAddon.java | 0 .../terra/addons/terrascript/buffer/Cell.java | 0 .../terrascript/buffer/DirectBuffer.java | 0 .../buffer/IntermediateBuffer.java | 0 .../terrascript/buffer/StructureBuffer.java | 0 .../buffer/items/BufferedBlock.java | 0 .../buffer/items/BufferedEntity.java | 0 .../buffer/items/BufferedLootApplication.java | 0 .../buffer/items/BufferedPulledBlock.java | 0 .../items/BufferedStateManipulator.java | 0 .../addons/terrascript/parser/Parser.java | 0 .../addons/terrascript/parser/ParserUtil.java | 0 .../parser/exceptions/ParseException.java | 0 .../addons/terrascript/parser/lang/Block.java | 0 .../parser/lang/ImplementationArguments.java | 0 .../addons/terrascript/parser/lang/Item.java | 0 .../terrascript/parser/lang/Keyword.java | 0 .../terrascript/parser/lang/Returnable.java | 0 .../terrascript/parser/lang/Statement.java | 0 .../lang/constants/BooleanConstant.java | 0 .../lang/constants/ConstantExpression.java | 0 .../lang/constants/NumericConstant.java | 0 .../parser/lang/constants/StringConstant.java | 0 .../parser/lang/functions/Function.java | 0 .../lang/functions/FunctionBuilder.java | 0 .../lang/functions/def/FunctionBlock.java | 0 .../lang/keywords/flow/BreakKeyword.java | 0 .../lang/keywords/flow/ContinueKeyword.java | 0 .../lang/keywords/flow/FailKeyword.java | 0 .../lang/keywords/flow/ReturnKeyword.java | 0 .../lang/keywords/looplike/ForKeyword.java | 0 .../lang/keywords/looplike/IfKeyword.java | 0 .../lang/keywords/looplike/WhileKeyword.java | 0 .../lang/operations/BinaryOperation.java | 0 .../lang/operations/BooleanAndOperation.java | 0 .../lang/operations/BooleanNotOperation.java | 0 .../lang/operations/BooleanOrOperation.java | 0 .../operations/ConcatenationOperation.java | 0 .../lang/operations/DivisionOperation.java | 0 .../lang/operations/ModuloOperation.java | 0 .../operations/MultiplicationOperation.java | 0 .../lang/operations/NegationOperation.java | 0 .../operations/NumberAdditionOperation.java | 0 .../lang/operations/SubtractionOperation.java | 0 .../lang/operations/UnaryOperation.java | 0 .../statements/EqualsStatement.java | 0 .../GreaterOrEqualsThanStatement.java | 0 .../statements/GreaterThanStatement.java | 0 .../statements/LessThanOrEqualsStatement.java | 0 .../statements/LessThanStatement.java | 0 .../statements/NotEqualsStatement.java | 0 .../parser/lang/variables/Assignment.java | 0 .../lang/variables/BooleanVariable.java | 0 .../parser/lang/variables/Declaration.java | 0 .../parser/lang/variables/Getter.java | 0 .../parser/lang/variables/NumberVariable.java | 0 .../parser/lang/variables/StringVariable.java | 0 .../parser/lang/variables/Variable.java | 0 .../terrascript/script/StructureScript.java | 0 .../script/TerraImplementationArguments.java | 0 .../builders/BinaryNumberFunctionBuilder.java | 0 .../script/builders/BiomeFunctionBuilder.java | 0 .../script/builders/BlockFunctionBuilder.java | 0 .../builders/CheckBlockFunctionBuilder.java | 0 .../script/builders/CheckFunctionBuilder.java | 0 .../builders/EntityFunctionBuilder.java | 0 .../builders/GetMarkFunctionBuilder.java | 0 .../script/builders/LootFunctionBuilder.java | 0 .../script/builders/PullFunctionBuilder.java | 0 .../builders/RandomFunctionBuilder.java | 0 .../builders/RecursionsFunctionBuilder.java | 0 .../builders/SetMarkFunctionBuilder.java | 0 .../script/builders/StateFunctionBuilder.java | 0 .../builders/StructureFunctionBuilder.java | 0 .../builders/UnaryBooleanFunctionBuilder.java | 0 .../builders/UnaryNumberFunctionBuilder.java | 0 .../builders/UnaryStringFunctionBuilder.java | 0 .../builders/ZeroArgFunctionBuilder.java | 0 .../functions/AbstractBlockFunction.java | 0 .../script/functions/BiomeFunction.java | 0 .../script/functions/BlockFunction.java | 0 .../script/functions/CheckBlockFunction.java | 0 .../script/functions/CheckFunction.java | 0 .../functions/DynamicBlockFunction.java | 0 .../script/functions/EntityFunction.java | 0 .../script/functions/GetMarkFunction.java | 0 .../script/functions/LootFunction.java | 0 .../script/functions/PullFunction.java | 0 .../script/functions/RandomFunction.java | 0 .../script/functions/RecursionsFunction.java | 0 .../script/functions/SetMarkFunction.java | 0 .../script/functions/StateFunction.java | 0 .../script/functions/StructureFunction.java | 0 .../addons/terrascript/tokenizer/Char.java | 0 .../terrascript/tokenizer/Lookahead.java | 0 .../terrascript/tokenizer/Position.java | 0 .../addons/terrascript/tokenizer/Token.java | 0 .../terrascript/tokenizer/Tokenizer.java | 0 .../tokenizer/exceptions/EOFException.java | 0 .../tokenizer/exceptions/FormatException.java | 0 .../exceptions/TokenizerException.java | 0 .../test/java/structure/LookaheadTest.java | 0 .../src/test/java/structure/ParserTest.java | 0 .../src/test/resources/test.tesf | 0 settings.gradle.kts | 28 ++++++++++--------- 298 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 common/addons/README.md rename common/addons/{biome/provider/image => biome-provider-image}/build.gradle.kts (100%) rename common/addons/{biome/provider/image => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java (100%) rename common/addons/{biome/provider/image => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/build.gradle.kts (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java (100%) rename common/addons/{biome/provider/pipeline => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java (100%) rename common/addons/{biome/provider/single => biome-provider-single}/build.gradle.kts (100%) rename common/addons/{biome/provider/single => biome-provider-single}/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java (100%) rename common/addons/{biome/provider/single => biome-provider-single}/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java (100%) rename common/addons/{carver => chunk-generator-noise-3d}/build.gradle.kts (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java (100%) rename common/addons/{chunk-generator => chunk-generator-noise-3d}/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java (100%) rename common/addons/{biome/config => config-biome}/build.gradle.kts (97%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java (100%) rename common/addons/{biome/config => config-biome}/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java (100%) rename common/addons/{chunk-generator => config-carver}/build.gradle.kts (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java (100%) rename common/addons/{carver => config-carver}/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java (100%) rename common/addons/{flora => config-flora}/build.gradle.kts (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java (100%) rename common/addons/{flora => config-flora}/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java (100%) rename common/addons/{noise => config-noise-function}/build.gradle.kts (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java (100%) rename common/addons/{noise => config-noise-function}/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java (100%) rename common/addons/{ore => config-ore}/build.gradle.kts (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java (100%) rename common/addons/{ore => config-ore}/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java (100%) rename common/addons/{palette => config-palette}/build.gradle.kts (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java (100%) rename common/addons/{palette => config-palette}/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java (100%) rename common/addons/{structure => config-structure}/build.gradle.kts (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java (100%) rename common/addons/{structure => config-structure}/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java (100%) rename common/addons/{terrascript => config-tree}/build.gradle.kts (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java (100%) rename common/addons/{tree => config-tree}/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java (100%) rename common/addons/{tree => structure-terrascript-loader}/build.gradle.kts (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/test/java/structure/LookaheadTest.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/test/java/structure/ParserTest.java (100%) rename common/addons/{terrascript => structure-terrascript-loader}/src/test/resources/test.tesf (100%) diff --git a/common/addons/README.md b/common/addons/README.md new file mode 100644 index 000000000..4ab2b4931 --- /dev/null +++ b/common/addons/README.md @@ -0,0 +1,4 @@ +# Core Addons + +This directory contains the modularized "core addons" that implement +Terra's default behavior. \ No newline at end of file diff --git a/common/addons/biome/provider/image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts similarity index 100% rename from common/addons/biome/provider/image/build.gradle.kts rename to common/addons/biome-provider-image/build.gradle.kts diff --git a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java similarity index 100% rename from common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java diff --git a/common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java similarity index 100% rename from common/addons/biome/provider/image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java diff --git a/common/addons/biome/provider/pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts similarity index 100% rename from common/addons/biome/provider/pipeline/build.gradle.kts rename to common/addons/biome-provider-pipeline/build.gradle.kts diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java diff --git a/common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java similarity index 100% rename from common/addons/biome/provider/pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java diff --git a/common/addons/biome/provider/single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts similarity index 100% rename from common/addons/biome/provider/single/build.gradle.kts rename to common/addons/biome-provider-single/build.gradle.kts diff --git a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java similarity index 100% rename from common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java rename to common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java diff --git a/common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java similarity index 100% rename from common/addons/biome/provider/single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java rename to common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java diff --git a/common/addons/carver/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts similarity index 100% rename from common/addons/carver/build.gradle.kts rename to common/addons/chunk-generator-noise-3d/build.gradle.kts diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java similarity index 100% rename from common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java diff --git a/common/addons/biome/config/build.gradle.kts b/common/addons/config-biome/build.gradle.kts similarity index 97% rename from common/addons/biome/config/build.gradle.kts rename to common/addons/config-biome/build.gradle.kts index a55e7cdac..1c9ec0096 100644 --- a/common/addons/biome/config/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -14,7 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "compileOnly"(project(":common:addons:noise")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.4") diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java diff --git a/common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java similarity index 100% rename from common/addons/biome/config/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java diff --git a/common/addons/chunk-generator/build.gradle.kts b/common/addons/config-carver/build.gradle.kts similarity index 100% rename from common/addons/chunk-generator/build.gradle.kts rename to common/addons/config-carver/build.gradle.kts diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java similarity index 100% rename from common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java rename to common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java diff --git a/common/addons/flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts similarity index 100% rename from common/addons/flora/build.gradle.kts rename to common/addons/config-flora/build.gradle.kts diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java similarity index 100% rename from common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java diff --git a/common/addons/noise/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts similarity index 100% rename from common/addons/noise/build.gradle.kts rename to common/addons/config-noise-function/build.gradle.kts diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java diff --git a/common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java similarity index 100% rename from common/addons/noise/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java diff --git a/common/addons/ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts similarity index 100% rename from common/addons/ore/build.gradle.kts rename to common/addons/config-ore/build.gradle.kts diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java similarity index 100% rename from common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java rename to common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java diff --git a/common/addons/palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts similarity index 100% rename from common/addons/palette/build.gradle.kts rename to common/addons/config-palette/build.gradle.kts diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java diff --git a/common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java similarity index 100% rename from common/addons/palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java rename to common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java diff --git a/common/addons/structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts similarity index 100% rename from common/addons/structure/build.gradle.kts rename to common/addons/config-structure/build.gradle.kts diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java similarity index 100% rename from common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java rename to common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java diff --git a/common/addons/terrascript/build.gradle.kts b/common/addons/config-tree/build.gradle.kts similarity index 100% rename from common/addons/terrascript/build.gradle.kts rename to common/addons/config-tree/build.gradle.kts diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java similarity index 100% rename from common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java rename to common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java diff --git a/common/addons/tree/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts similarity index 100% rename from common/addons/tree/build.gradle.kts rename to common/addons/structure-terrascript-loader/build.gradle.kts diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java diff --git a/common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java similarity index 100% rename from common/addons/terrascript/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java diff --git a/common/addons/terrascript/src/test/java/structure/LookaheadTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java similarity index 100% rename from common/addons/terrascript/src/test/java/structure/LookaheadTest.java rename to common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java diff --git a/common/addons/terrascript/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java similarity index 100% rename from common/addons/terrascript/src/test/java/structure/ParserTest.java rename to common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java diff --git a/common/addons/terrascript/src/test/resources/test.tesf b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf similarity index 100% rename from common/addons/terrascript/src/test/resources/test.tesf rename to common/addons/structure-terrascript-loader/src/test/resources/test.tesf diff --git a/settings.gradle.kts b/settings.gradle.kts index 21659ff9f..3c6f40872 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,21 +15,23 @@ include("common:loader:config") include("common:loader:addon") -include("common:addons:noise") -include("common:addons:chunk-generator") +include("common:addons:biome-provider-image") +include("common:addons:biome-provider-pipeline") +include("common:addons:biome-provider-single") -include("common:addons:biome:config") -include("common:addons:biome:provider:pipeline") -include("common:addons:biome:provider:image") -include("common:addons:biome:provider:single") +include("common:addons:chunk-generator-noise-3d") + +include("common:addons:config-biome") +include("common:addons:config-carver") +include("common:addons:config-flora") +include("common:addons:config-noise-function") +include("common:addons:config-ore") +include("common:addons:config-palette") +include("common:addons:config-structure") +include("common:addons:config-tree") + +include("common:addons:structure-terrascript-loader") -include("common:addons:carver") -include("common:addons:flora") -include("common:addons:palette") -include("common:addons:tree") -include("common:addons:structure") -include("common:addons:ore") -include("common:addons:terrascript") From b36955a10a6603b56128b10cd932a4a3c24c36b9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 23:29:28 -0700 Subject: [PATCH 0149/1529] change addon IDs to reflect new module names --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 2 +- .../terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java | 2 +- .../java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java | 2 +- .../src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 2 +- .../src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 2 +- .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 2 +- .../main/java/com/dfsek/terra/addons/palette/PaletteAddon.java | 2 +- .../src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java | 2 +- .../com/dfsek/terra/addons/terrascript/TerraScriptAddon.java | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 849dbaae4..9cfeb3646 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -25,7 +25,7 @@ import com.dfsek.terra.api.util.seeded.SourceSeeded; import java.lang.reflect.Type; -@Addon("biome-pipeline") +@Addon("biome-provider-pipeline") @Author("Terra") @Version("1.0.0") public class BiomePipelineAddon extends TerraAddon implements EventListener { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 3be316686..3dbfdd39d 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -12,7 +12,7 @@ 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") +@Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index f16fac6ab..dc25625c2 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -@Addon("core-biome-config") +@Addon("config-biome") @Author("Terra") @Version("1.0.0") public class BiomeConfigAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index da00921b9..34d599476 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -@Addon("core-flora-config") +@Addon("config-flora") @Author("Terra") @Version("0.1.0") public class FloraAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index e8f59aabd..89fb67680 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -41,7 +41,7 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.HashMap; import java.util.Map; -@Addon("noise") +@Addon("config-noise-function") @Author("Terra") @Version("1.0.0") public class NoiseAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 704678216..574ab1d3b 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -@Addon("core-ore-config") +@Addon("config-ore") @Author("Terra") @Version("1.0.0") public class OreAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 1bf4c11de..9b7112963 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -@Addon("core-palette-config") +@Addon("config-palette") @Author("Terra") @Version("1.0.0") public class PaletteAddon extends TerraAddon implements EventListener { diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index c79281d4a..dd1403e0a 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -@Addon("core-tree-config") +@Addon("config-tree") @Author("Terra") @Version("1.0.0") public class TreeAddon extends TerraAddon implements EventListener { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index fdbad454f..38c4aab4f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -20,7 +20,7 @@ import com.dfsek.terra.api.structure.Structure; import java.io.InputStream; import java.util.Map; -@Addon("terrascript") +@Addon("structure-terrascript-loader") @Author("Terra") @Version("1.0.0") public class TerraScriptAddon extends TerraAddon implements EventListener { From d0c9145aadf7e04622283067c457cee9eea76142 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 9 Jul 2021 06:44:07 -0700 Subject: [PATCH 0150/1529] compile carver addon --- .../com/dfsek/terra/addons/carver/CarverFactory.java | 3 ++- .../dfsek/terra/addons/carver/CarverTemplate.java | 2 +- .../dfsek/terra/addons/carver/UserDefinedCarver.java | 12 ++++-------- .../com/dfsek/terra/api/util}/ConstantRange.java | 3 +-- .../com/dfsek/terra/config/loaders/RangeLoader.java | 2 +- 5 files changed, 9 insertions(+), 13 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/api/math/range => api/src/main/java/com/dfsek/terra/api/util}/ConstantRange.java (97%) diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java index 673ff1542..47a64eb2b 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.carver; +import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; @@ -25,7 +26,7 @@ public class CarverFactory implements ConfigFactory radii, Scope parent, long hash, int topCut, int bottomCut, CarverTemplate config, TerraPlugin main, Map functions, Map definedFunctions) throws ParseException { + public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, int topCut, int bottomCut, CarverTemplate config, TerraPlugin main) throws ParseException { super(height.getMin(), height.getMax()); this.length = length; this.start = start; @@ -110,10 +106,10 @@ public class UserDefinedCarver extends Carver { @Override public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { - BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)).getConfig(); + /*BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)).getConfig(); if(conf.getCarvers().get(this) != null) { return new Random(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); - } + }*/ return false; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java rename to common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java index bfae45827..5c23e8baa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/range/ConstantRange.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.api.math.range; +package com.dfsek.terra.api.util; -import com.dfsek.terra.api.util.Range; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index 7c0f2633b..bec15d16d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; import java.lang.reflect.Type; From f8b0f03d11eea89c4b4ff26573e59bbb7773b328 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 9 Jul 2021 06:58:46 -0700 Subject: [PATCH 0151/1529] compile structure addon --- .../biome/command/biome/AsyncBiomeFinder.java | 81 ++++++- .../command/biome/AsyncFeatureFinder.java | 96 -------- .../command/AsyncStructureFinder.java | 99 ++++++-- .../structure/structures/loot/Pool.java | 2 +- .../collection/ProbabilityCollection.java | 202 +++++++++++++++- .../ProbabilityCollectionImpl.java | 216 ------------------ .../loaders/ProbabilityCollectionLoader.java | 5 +- .../test/java/noise/ColorConfigTemplate.java | 6 +- 8 files changed, 360 insertions(+), 347 deletions(-) delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index 4cf520db7..d2db36540 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -12,10 +12,29 @@ import java.util.function.Consumer; /** * Runnable that locates a biome asynchronously */ -public class AsyncBiomeFinder extends AsyncFeatureFinder { +public class AsyncBiomeFinder implements Runnable { + + protected final BiomeProvider provider; + protected final TerraBiome target; + protected final int startRadius; + protected final int maxRadius; + protected final int centerX; + protected final int centerZ; + protected final World world; + private final Consumer callback; + protected int searchSize = 1; + protected final TerraPlugin main; public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { - super(provider, target, origin, world, startRadius, maxRadius, callback, main); + this.provider = provider; + this.target = target; + this.main = main; + this.startRadius = startRadius; + this.maxRadius = maxRadius; + this.centerX = origin.getBlockX(); + this.centerZ = origin.getBlockZ(); + this.world = world; + this.callback = callback; } /** @@ -25,14 +44,68 @@ public class AsyncBiomeFinder extends AsyncFeatureFinder { * @param z Z coordinate * @return TerraBiome at coordinates */ - @Override public boolean isValid(int x, int z, TerraBiome target) { int res = main.getTerraConfig().getBiomeSearchResolution(); return getProvider().getBiome(x * res, z * res).equals(target); } - @Override public Vector3 finalizeVector(Vector3 orig) { return orig.multiply(main.getTerraConfig().getBiomeSearchResolution()); } + @Override + public void run() { + int x = centerX; + int z = centerZ; + + x /= searchSize; + z /= searchSize; + + int run = 1; + boolean toggle = true; + boolean found = false; + + main: + for(int i = startRadius; i < maxRadius; i++) { + for(int j = 0; j < run; j++) { + if(isValid(x, z, target)) { + found = true; + break main; + } + if(toggle) x += 1; + else x -= 1; + } + for(int j = 0; j < run; j++) { + if(isValid(x, z, target)) { + found = true; + break main; + } + if(toggle) z += 1; + else z -= 1; + } + run++; + toggle = !toggle; + } + Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; + callback.accept(finalSpawn); + } + + public TerraBiome getTarget() { + return target; + } + + public World getWorld() { + return world; + } + + public BiomeProvider getProvider() { + return provider; + } + + public int getSearchSize() { + return searchSize; + } + + public void setSearchSize(int searchSize) { + this.searchSize = searchSize; + } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java deleted file mode 100644 index aa148595b..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncFeatureFinder.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import org.jetbrains.annotations.NotNull; - -import java.util.function.Consumer; - -public abstract class AsyncFeatureFinder implements Runnable { - protected final BiomeProvider provider; - protected final T target; - protected final int startRadius; - protected final int maxRadius; - protected final int centerX; - protected final int centerZ; - protected final World world; - private final Consumer callback; - protected int searchSize = 1; - protected final TerraPlugin main; - - public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { - this.provider = provider; - this.target = target; - this.main = main; - this.startRadius = startRadius; - this.maxRadius = maxRadius; - this.centerX = origin.getBlockX(); - this.centerZ = origin.getBlockZ(); - this.world = world; - this.callback = callback; - } - - @Override - public void run() { - int x = centerX; - int z = centerZ; - - x /= searchSize; - z /= searchSize; - - int run = 1; - boolean toggle = true; - boolean found = false; - - main: - for(int i = startRadius; i < maxRadius; i++) { - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) x += 1; - else x -= 1; - } - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) z += 1; - else z -= 1; - } - run++; - toggle = !toggle; - } - Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; - callback.accept(finalSpawn); - } - - - public abstract Vector3 finalizeVector(Vector3 orig); - - public abstract boolean isValid(int x, int z, T target); - - public T getTarget() { - return target; - } - - public World getWorld() { - return world; - } - - public BiomeProvider getProvider() { - return provider; - } - - public int getSearchSize() { - return searchSize; - } - - public void setSearchSize(int searchSize) { - this.searchSize = searchSize; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index b244b003f..821cb74b4 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -2,34 +2,103 @@ package com.dfsek.terra.addons.structure.command; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -import java.util.Random; import java.util.function.Consumer; -public class AsyncStructureFinder extends AsyncFeatureFinder { +public class AsyncStructureFinder implements Runnable { + protected final BiomeProvider provider; + protected final ConfiguredStructure target; + protected final int startRadius; + protected final int maxRadius; + protected final int centerX; + protected final int centerZ; + protected final World world; + private final Consumer callback; + protected int searchSize = 1; + protected final TerraPlugin main; public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { - super(provider, target, origin, world, startRadius, maxRadius, callback, main); - setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); + //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); + this.provider = provider; + this.target = target; + this.main = main; + this.startRadius = startRadius; + this.maxRadius = maxRadius; + this.centerX = origin.getBlockX(); + this.centerZ = origin.getBlockZ(); + this.world = world; + this.callback = callback; } - @Override public Vector3 finalizeVector(Vector3 orig) { - return target.getSpawn().getChunkSpawn(orig.getBlockX(), orig.getBlockZ(), world.getSeed()); + return orig;//target.getSpawn().getChunkSpawn(orig.getBlockX(), orig.getBlockZ(), world.getSeed()); + } + + public boolean isValid(int x, int z, ConfiguredStructure target) { + //Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); + //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; + //Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + //return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); + return false; } @Override - public boolean isValid(int x, int z, ConfiguredStructure target) { - Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); - if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; - Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); + public void run() { + int x = centerX; + int z = centerZ; + + x /= searchSize; + z /= searchSize; + + int run = 1; + boolean toggle = true; + boolean found = false; + + main: + for(int i = startRadius; i < maxRadius; i++) { + for(int j = 0; j < run; j++) { + if(isValid(x, z, target)) { + found = true; + break main; + } + if(toggle) x += 1; + else x -= 1; + } + for(int j = 0; j < run; j++) { + if(isValid(x, z, target)) { + found = true; + break main; + } + if(toggle) z += 1; + else z -= 1; + } + run++; + toggle = !toggle; + } + Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; + callback.accept(finalSpawn); + } + + public ConfiguredStructure getTarget() { + return target; + } + + public World getWorld() { + return world; + } + + public BiomeProvider getProvider() { + return provider; + } + + public int getSearchSize() { + return searchSize; + } + + public void setSearchSize(int searchSize) { + this.searchSize = searchSize; } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index 344a31844..58bba5717 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -25,7 +25,7 @@ public class Pool { * @param pool The JSON Object to instantiate from. */ public Pool(JSONObject pool, TerraPlugin main) { - entries = new ProbabilityCollectionImpl<>(); + entries = new ProbabilityCollection<>(); Object amount = pool.get("rolls"); if(amount instanceof Long) { max = FastMath.toIntExact((Long) amount); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java index cc37099e3..b82017112 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java @@ -1,26 +1,210 @@ package com.dfsek.terra.api.util.collection; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.mutable.MutableInteger; +import org.jetbrains.annotations.NotNull; import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; import java.util.Random; import java.util.Set; import java.util.function.Function; -public interface ProbabilityCollection extends Collection { - ProbabilityCollection add(E item, int probability); +public class ProbabilityCollection implements Collection { + protected final Map cont = new HashMap<>(); + private Object[] array = new Object[0]; + private int size; - E get(Random r); + public ProbabilityCollection add(E item, int probability) { + if(!cont.containsKey(item)) size++; + cont.computeIfAbsent(item, i -> new MutableInteger(0)).increment(); + int oldLength = array.length; + Object[] newArray = new Object[array.length + probability]; + System.arraycopy(array, 0, newArray, 0, array.length); // Expand array. + array = newArray; + for(int i = oldLength; i < array.length; i++) array[i] = item; + return this; + } - E get(NoiseSampler n, double x, double y, double z); + @SuppressWarnings("unchecked") + public E get(Random r) { + if(array.length == 0) return null; + return (E) array[r.nextInt(array.length)]; + } - E get(NoiseSampler n, double x, double z); + @SuppressWarnings("unchecked") + public E get(NoiseSampler n, double x, double y, double z) { + if(array.length == 0) return null; + return (E) array[MathUtil.normalizeIndex(n.getNoise(x, y, z), array.length)]; + } - ProbabilityCollection map(Function mapper, boolean carryNull); + @SuppressWarnings("unchecked") + public E get(NoiseSampler n, double x, double z) { + if(array.length == 0) return null; + return (E) array[MathUtil.normalizeIndex(n.getNoise(x, z), array.length)]; + } - int getTotalProbability(); + @SuppressWarnings("unchecked") + public ProbabilityCollection map(Function mapper, boolean carryNull) { + ProbabilityCollection newCollection = new ProbabilityCollection<>(); + newCollection.array = new Object[array.length]; - int getProbability(E item); + for(int i = 0; i < array.length; i++) { + if(carryNull && array[i] == null) continue; + newCollection.array[i] = mapper.apply((E) array[i]); + } + return newCollection; + } - Set getContents(); + public int getTotalProbability() { + return array.length; + } + + public int getProbability(E item) { + MutableInteger integer = cont.get(item); + return integer == null ? 0 : integer.get(); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder("["); + + cont.forEach((item, prob) -> builder.append(item).append(": ").append(prob).append(", ")); + + return builder.append("]").toString(); + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return array.length == 0; + } + + @Override + public boolean contains(Object o) { + return cont.containsKey(o); + } + + @NotNull + @Override + public Iterator iterator() { + return cont.keySet().iterator(); + } + + @NotNull + @Override + public Object @NotNull [] toArray() { + return cont.keySet().toArray(); + } + + @SuppressWarnings("SuspiciousToArrayCall") + @NotNull + @Override + public T @NotNull [] toArray(@NotNull T[] a) { + return cont.keySet().toArray(a); + } + + /** + * Adds an item with probability of 1. + */ + @Override + public boolean add(E e) { + add(e, 1); + return true; // Since this adds the item with a probability, the collection will always have changed. + } + + @Override + public boolean remove(Object o) { + throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); + } + + @Override + public boolean containsAll(@NotNull Collection c) { + return cont.keySet().containsAll(c); + } + + @Override + public boolean addAll(@NotNull Collection c) { + c.forEach(this::add); + return true; + } + + @Override + public boolean removeAll(@NotNull Collection c) { + throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); + } + + @Override + public boolean retainAll(@NotNull Collection c) { + throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); + } + + @Override + public void clear() { + cont.clear(); + array = new Object[0]; + } + + public Set getContents() { + return new HashSet<>(cont.keySet()); + } + + public static final class Singleton extends ProbabilityCollection { + private final T single; + + public Singleton(T single) { + this.single = single; + cont.put(single, new MutableInteger(1)); + } + + @Override + public ProbabilityCollection add(T item, int probability) { + throw new UnsupportedOperationException(); + } + + @Override + public ProbabilityCollection map(Function mapper, boolean carryNull) { + if(carryNull && single == null) return new Singleton<>(null); + return new Singleton<>(mapper.apply(single)); + } + + @Override + public T get(Random r) { + return single; + } + + @Override + public T get(NoiseSampler n, double x, double y, double z) { + return single; + } + + @Override + public T get(NoiseSampler n, double x, double z) { + return single; + } + + @Override + public int getTotalProbability() { + return 1; + } + + @Override + public int size() { + return 1; + } + + @Override + public Set getContents() { + return Collections.singleton(single); + } + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java deleted file mode 100644 index 2dfb3e158..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollectionImpl.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.dfsek.terra.api.util.collections; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.mutable.MutableInteger; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.function.Function; - -@SuppressWarnings("unchecked") -public class ProbabilityCollectionImpl implements ProbabilityCollection { - protected final Map cont = new HashMap<>(); - private Object[] array = new Object[0]; - private int size; - - @Override - public ProbabilityCollection add(E item, int probability) { - if(!cont.containsKey(item)) size++; - cont.computeIfAbsent(item, i -> new MutableInteger(0)).increment(); - int oldLength = array.length; - Object[] newArray = new Object[array.length + probability]; - System.arraycopy(array, 0, newArray, 0, array.length); // Expand array. - array = newArray; - for(int i = oldLength; i < array.length; i++) array[i] = item; - return this; - } - - @Override - public E get(Random r) { - if(array.length == 0) return null; - return (E) array[r.nextInt(array.length)]; - } - - @Override - public E get(NoiseSampler n, double x, double y, double z) { - if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.getNoise(x, y, z), array.length)]; - } - - @Override - public E get(NoiseSampler n, double x, double z) { - if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.getNoise(x, z), array.length)]; - } - - @Override - public ProbabilityCollection map(Function mapper, boolean carryNull) { - ProbabilityCollectionImpl newCollection = new ProbabilityCollectionImpl<>(); - newCollection.array = new Object[array.length]; - - for(int i = 0; i < array.length; i++) { - if(carryNull && array[i] == null) continue; - newCollection.array[i] = mapper.apply((E) array[i]); - } - return newCollection; - } - - @Override - public int getTotalProbability() { - return array.length; - } - - @Override - public int getProbability(E item) { - MutableInteger integer = cont.get(item); - return integer == null ? 0 : integer.get(); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder("["); - - cont.forEach((item, prob) -> builder.append(item).append(": ").append(prob).append(", ")); - - return builder.append("]").toString(); - } - - @Override - public int size() { - return size; - } - - @Override - public boolean isEmpty() { - return array.length == 0; - } - - @Override - public boolean contains(Object o) { - return cont.containsKey(o); - } - - @NotNull - @Override - public Iterator iterator() { - return cont.keySet().iterator(); - } - - @NotNull - @Override - public Object[] toArray() { - return cont.keySet().toArray(); - } - - @SuppressWarnings("SuspiciousToArrayCall") - @NotNull - @Override - public T[] toArray(@NotNull T[] a) { - return cont.keySet().toArray(a); - } - - /** - * Adds an item with probability of 1. - */ - @Override - public boolean add(E e) { - add(e, 1); - return true; // Since this adds the item with a probability, the collection will always have changed. - } - - @Override - public boolean remove(Object o) { - throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); - } - - @Override - public boolean containsAll(@NotNull Collection c) { - return cont.keySet().containsAll(c); - } - - @Override - public boolean addAll(@NotNull Collection c) { - c.forEach(this::add); - return true; - } - - @Override - public boolean removeAll(@NotNull Collection c) { - throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); - } - - @Override - public boolean retainAll(@NotNull Collection c) { - throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!"); - } - - @Override - public void clear() { - cont.clear(); - array = new Object[0]; - } - - @Override - public Set getContents() { - return new HashSet<>(cont.keySet()); - } - - public static final class Singleton extends ProbabilityCollectionImpl { - private final T single; - - public Singleton(T single) { - this.single = single; - cont.put(single, new MutableInteger(1)); - } - - @Override - public ProbabilityCollectionImpl add(T item, int probability) { - throw new UnsupportedOperationException(); - } - - @Override - public ProbabilityCollectionImpl map(Function mapper, boolean carryNull) { - if(carryNull && single == null) return new Singleton<>(null); - return new Singleton<>(mapper.apply(single)); - } - - @Override - public T get(Random r) { - return single; - } - - @Override - public T get(NoiseSampler n, double x, double y, double z) { - return single; - } - - @Override - public T get(NoiseSampler n, double x, double z) { - return single; - } - - @Override - public int getTotalProbability() { - return 1; - } - - @Override - public int size() { - return 1; - } - - @Override - public Set getContents() { - return Collections.singleton(single); - } - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 7b990abeb..8aec1f63e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -15,7 +14,7 @@ import java.util.Map; public class ProbabilityCollectionLoader implements TypeLoader> { @Override public ProbabilityCollection load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - ProbabilityCollection collection = new ProbabilityCollectionImpl<>(); + ProbabilityCollection collection = new ProbabilityCollection<>(); if(type instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) type; @@ -35,7 +34,7 @@ public class ProbabilityCollectionLoader implements TypeLoader(configLoader.loadType(generic, o)); + return new ProbabilityCollection.Singleton<>(configLoader.loadType(generic, o)); } else { throw new LoadException("Malformed Probability Collection: " + o); } diff --git a/common/implementation/src/test/java/noise/ColorConfigTemplate.java b/common/implementation/src/test/java/noise/ColorConfigTemplate.java index 4383dfbc1..dfffb8c80 100644 --- a/common/implementation/src/test/java/noise/ColorConfigTemplate.java +++ b/common/implementation/src/test/java/noise/ColorConfigTemplate.java @@ -3,11 +3,11 @@ package noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class ColorConfigTemplate implements ConfigTemplate { @Value("colors") - private ProbabilityCollectionImpl colors; + private ProbabilityCollection colors; @Value("enable") @Default @@ -17,7 +17,7 @@ public class ColorConfigTemplate implements ConfigTemplate { return enable; } - public ProbabilityCollectionImpl getColors() { + public ProbabilityCollection getColors() { return colors; } } From f61883547e99fb7cc95a47ad7fc700f3fa7169d8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 9 Jul 2021 08:21:30 -0700 Subject: [PATCH 0152/1529] add gradle stuff to automatically build addons --- .../kotlin/com/dfsek/terra/AddonConfig.kt | 25 +++++++++++++++++++ common/implementation/build.gradle.kts | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt new file mode 100644 index 000000000..8a1d9221e --- /dev/null +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -0,0 +1,25 @@ +package com.dfsek.terra + +import org.gradle.api.Project +import org.gradle.kotlin.dsl.withType +import org.gradle.language.jvm.tasks.ProcessResources +import java.io.File + + +fun Project.runDir(dir: File) { + tasks.withType { + doFirst { + + } + } +} + +fun Project.configureAddons() { + tasks.withType { + project(":common:addons").subprojects.forEach { + it.afterEvaluate { + dependsOn(it.tasks.getByName("build")) // Depend on addon JARs + } + } + } +} \ No newline at end of file diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 13e9d27d0..7f9ea794e 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -1,5 +1,6 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddons plugins { `java-library` @@ -9,6 +10,7 @@ plugins { configureCompilation() configureDependencies() +configureAddons() group = "com.dfsek.terra.common" From 3dc564c0f75d8fc9da0787a001e21029e914ead7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 9 Jul 2021 13:06:29 -0700 Subject: [PATCH 0153/1529] move compiled addons to run directories --- .../kotlin/com/dfsek/terra/AddonConfig.kt | 34 +++++++++++++++++-- common/addons/config-biome/build.gradle.kts | 4 --- platforms/fabric/build.gradle.kts | 3 ++ platforms/fabric/gradle.properties | 1 - 4 files changed, 34 insertions(+), 8 deletions(-) delete mode 100644 platforms/fabric/gradle.properties diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt index 8a1d9221e..e13c1692e 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -1,19 +1,47 @@ package com.dfsek.terra import org.gradle.api.Project +import org.gradle.api.Task import org.gradle.kotlin.dsl.withType import org.gradle.language.jvm.tasks.ProcessResources import java.io.File +import java.util.* +import java.util.function.Predicate +import kotlin.streams.asStream -fun Project.runDir(dir: File) { - tasks.withType { - doFirst { +/** + * Configures a directory where addons will be put. + */ +fun Project.addonDir(dir: File, task: Task) { + task.doFirst { + dir.parentFile.mkdirs() + matchingAddons(dir) { + it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon. + }.forEach { + println("Deleting old addon: " + it.absolutePath) + it.delete() + } + project(":common:addons").subprojects.forEach { addonProject -> + val jar = (addonProject.tasks.named("jar").get() as org.gradle.jvm.tasks.Jar); + val target = File(dir, jar.archiveFileName.get()) + + val base = "${jar.archiveBaseName.get()}-${project.version}" + + println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base") + + jar.archiveFile.orNull?.asFile?.copyTo(target) } } } +fun matchingAddons(dir: File, matcher: Predicate): Set { + val matching = HashSet(); + dir.walk().maxDepth(1).asStream().filter(matcher).forEach(matching::add) + return matching; +} + fun Project.configureAddons() { tasks.withType { project(":common:addons").subprojects.forEach { diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 1c9ec0096..d6f23e57a 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -33,10 +33,6 @@ dependencies { "testImplementation"("com.google.guava:guava:30.0-jre") } -tasks.named("jar") { - archiveBaseName.set("Terra-biome") -} - publishing { publications { create("mavenJava") { diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index d5e097181..9336df9c0 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -1,3 +1,4 @@ +import com.dfsek.terra.addonDir import com.dfsek.terra.configureCommon import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.modrinth.minotaur.TaskModrinthUpload @@ -12,6 +13,8 @@ plugins { } configureCommon() +addonDir(project.rootProject.file("./run/config/Terra/addons"), tasks.named("runClient").get()) +addonDir(project.rootProject.file("./run/config/Terra/addons"), tasks.named("runServer").get()) tasks.named("shadowJar") { relocate("org.json", "com.dfsek.terra.lib.json") diff --git a/platforms/fabric/gradle.properties b/platforms/fabric/gradle.properties deleted file mode 100644 index 95b4763a8..000000000 --- a/platforms/fabric/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -org.gradle.jvmargs=-Xmx4G From 3f539b1e3093d794b52c5420bc71788a7f864789 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 21:17:21 -0700 Subject: [PATCH 0154/1529] bundle addons in JAR --- .../kotlin/com/dfsek/terra/AddonConfig.kt | 17 ++------ .../com/dfsek/terra/DistributionConfig.kt | 41 +++++++++++++++++++ common/implementation/build.gradle.kts | 2 - 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt index e13c1692e..0d51f0a89 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -2,6 +2,7 @@ package com.dfsek.terra import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.withType import org.gradle.language.jvm.tasks.ProcessResources import java.io.File @@ -23,7 +24,7 @@ fun Project.addonDir(dir: File, task: Task) { it.delete() } project(":common:addons").subprojects.forEach { addonProject -> - val jar = (addonProject.tasks.named("jar").get() as org.gradle.jvm.tasks.Jar); + val jar = (addonProject.tasks.named("jar").get() as Jar) val target = File(dir, jar.archiveFileName.get()) @@ -37,17 +38,7 @@ fun Project.addonDir(dir: File, task: Task) { } fun matchingAddons(dir: File, matcher: Predicate): Set { - val matching = HashSet(); + val matching = HashSet() dir.walk().maxDepth(1).asStream().filter(matcher).forEach(matching::add) - return matching; + return matching } - -fun Project.configureAddons() { - tasks.withType { - project(":common:addons").subprojects.forEach { - it.afterEvaluate { - dependsOn(it.tasks.getByName("build")) // Depend on addon JARs - } - } - } -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index 179feee76..06a8c4284 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -4,12 +4,17 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.plugins.BasePluginConvention +import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getPlugin import org.gradle.kotlin.dsl.named import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream import java.net.URL +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream fun Project.configureDistribution() { apply(plugin = "java-library") @@ -26,7 +31,43 @@ fun Project.configureDistribution() { downloadPack(netherPackUrl, project) } } + + val installAddons = tasks.create("installAddons") { + group = "terra" + project(":common:addons").subprojects.forEach { + it.afterEvaluate { + dependsOn(it.tasks.getByName("build")) // Depend on addon JARs + } + } + + doFirst { + // The addons are copied into a JAR because of a ShadowJar bug + // which expands *all* JARs, even resource ones, into the fat JAR. + // To get around this, we copy all addon JARs into a *new* JAR, + // then, ShadowJar expands the newly created JAR, putting the original + // JARs where they should go. + // + // https://github.com/johnrengelman/shadow/issues/196 + val dest = File(buildDir, "/resources/main/addons.jar") + dest.parentFile.mkdirs() + + val zip = ZipOutputStream(FileOutputStream(dest)) + + project(":common:addons").subprojects.forEach { addonProject -> + val jar = (addonProject.tasks.named("jar").get() as Jar) + println("Packaging addon ${jar.archiveFileName.get()} to ${dest.absolutePath}.") + + val entry = ZipEntry("addons/${jar.archiveFileName.get()}") + zip.putNextEntry(entry) + FileInputStream(jar.archiveFile.get().asFile).copyTo(zip) + zip.closeEntry() + } + zip.close() + } + } + tasks["processResources"].dependsOn(downloadDefaultPacks) + tasks["processResources"].dependsOn(installAddons) tasks.named("shadowJar") { // Tell shadow to download the packs diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 7f9ea794e..13e9d27d0 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -1,6 +1,5 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies -import com.dfsek.terra.configureAddons plugins { `java-library` @@ -10,7 +9,6 @@ plugins { configureCompilation() configureDependencies() -configureAddons() group = "com.dfsek.terra.common" From d09ef5052a64a1080a49f350afef014e43895fd2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 21:19:57 -0700 Subject: [PATCH 0155/1529] correct link to ShadowJar issue --- buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index 06a8c4284..e5c1a9bb9 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -47,7 +47,7 @@ fun Project.configureDistribution() { // then, ShadowJar expands the newly created JAR, putting the original // JARs where they should go. // - // https://github.com/johnrengelman/shadow/issues/196 + // https://github.com/johnrengelman/shadow/issues/111 val dest = File(buildDir, "/resources/main/addons.jar") dest.parentFile.mkdirs() From 519956dc11a4f40480100e817aa4464f521d4f05 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 21:44:38 -0700 Subject: [PATCH 0156/1529] refactor implementation --- .../dfsek/terra/commands/TerraCommandManager.java | 2 +- .../dfsek/terra/config/fileloaders/LoaderImpl.java | 2 +- .../config/loaders/config/GridSpawnLoader.java | 2 +- .../terra/{api => }/event/EventManagerImpl.java | 4 +++- .../dfsek/terra/{api => }/inject/InjectorImpl.java | 2 +- .../com/dfsek/terra/{api => }/math/GridSpawn.java | 6 +++--- .../dfsek/terra/registry/master/AddonRegistry.java | 2 +- .../terra/{api => }/transform/MapTransform.java | 3 ++- .../terra/{api => }/transform/TransformerImpl.java | 5 ++++- .../com/dfsek/terra/{api => }/util/FastRandom.java | 2 +- .../com/dfsek/terra/{api => }/util/GlueList.java | 13 +++++++------ .../terra/{api => }/util/logging/DebugLogger.java | 2 +- .../terra/{api => }/util/logging/JavaLogger.java | 2 +- .../com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 6 +++--- .../terra/bukkit/listeners/CommonListener.java | 6 +++--- .../terra/bukkit/population/PopulationManager.java | 2 +- .../com/dfsek/terra/bukkit/world/BukkitAdapter.java | 4 ++-- .../com/dfsek/terra/fabric/TerraFabricPlugin.java | 4 ++-- .../generation/FabricChunkGeneratorWrapper.java | 2 +- .../main/java/com/dfsek/terra/StandalonePlugin.java | 6 +++--- .../com/dfsek/terra/sponge/TerraSpongePlugin.java | 4 ++-- 21 files changed, 44 insertions(+), 37 deletions(-) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/event/EventManagerImpl.java (97%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/inject/InjectorImpl.java (98%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/math/GridSpawn.java (94%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/transform/MapTransform.java (90%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/transform/TransformerImpl.java (92%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/util/FastRandom.java (97%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/util/GlueList.java (98%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/util/logging/DebugLogger.java (94%) rename common/implementation/src/main/java/com/dfsek/terra/{api => }/util/logging/JavaLogger.java (92%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 3b08b8a27..29df61c39 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -21,7 +21,7 @@ import com.dfsek.terra.api.command.exception.SwitchFormatException; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.InjectorImpl; +import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.util.ReflectionUtil; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index 389124872..575831fa6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.util.function.ExceptionalConsumer; -import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.util.GlueList; import java.io.IOException; import java.io.InputStream; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java index a990459ff..19245dab1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.math.GridSpawn; import com.dfsek.terra.api.structure.StructureSpawn; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java rename to common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index d4d281b54..43b606cfc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -1,7 +1,9 @@ -package com.dfsek.terra.api.event; +package com.dfsek.terra.event; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.EventListener; +import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.Cancellable; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java b/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java rename to common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java index f36af83b9..25f991b52 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/inject/InjectorImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.inject; +package com.dfsek.terra.inject; import com.dfsek.terra.api.injection.Injector; import com.dfsek.terra.api.injection.annotations.Inject; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java rename to common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java index 110330c2c..8c3db603c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.api.math; +package com.dfsek.terra.math; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.util.FastRandom; +import com.dfsek.terra.util.GlueList; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 42ce4284c..18594d9a4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -6,7 +6,7 @@ import com.dfsek.terra.addon.PreLoadAddon; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.inject.InjectorImpl; +import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.registry.OpenRegistryImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java b/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java similarity index 90% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java rename to common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java index 718e822e5..216fe94c6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/MapTransform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java @@ -1,5 +1,6 @@ -package com.dfsek.terra.api.transform; +package com.dfsek.terra.transform; +import com.dfsek.terra.api.transform.Transform; import com.dfsek.terra.api.transform.exception.TransformException; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java rename to common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java index 43287fc64..17bb61ec8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/transform/TransformerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java @@ -1,5 +1,8 @@ -package com.dfsek.terra.api.transform; +package com.dfsek.terra.transform; +import com.dfsek.terra.api.transform.Transform; +import com.dfsek.terra.api.transform.Transformer; +import com.dfsek.terra.api.transform.Validator; import com.dfsek.terra.api.transform.exception.AttemptsFailedException; import com.dfsek.terra.api.transform.exception.TransformException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java b/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java rename to common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java index c1521b6e2..044b65ad0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/FastRandom.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.util; import org.apache.commons.rng.core.source64.XoRoShiRo128PlusPlus; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java b/common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java similarity index 98% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java rename to common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java index 1ae19ef29..9dd85fb32 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/GlueList.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.dfsek.terra.api.util; +package com.dfsek.terra.util; +import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -709,11 +710,11 @@ public class GlueList extends AbstractList implements List, Cloneable, public Object clone() { try { - com.dfsek.terra.api.util.GlueList clone = (com.dfsek.terra.api.util.GlueList) super.clone(); + GlueList clone = (GlueList) super.clone(); clone.first = clone.last = null; - int capacity = min(MAX_ARRAY_SIZE, max(clone.size, max(clone.initialCapacity, DEFAULT_CAPACITY))); + int capacity = FastMath.min(MAX_ARRAY_SIZE, FastMath.max(clone.size, FastMath.max(clone.initialCapacity, DEFAULT_CAPACITY))); Node initNode = new Node<>(null, null, 0, capacity); @@ -902,7 +903,7 @@ public class GlueList extends AbstractList implements List, Cloneable, checkForComodification(); try { - com.dfsek.terra.api.util.GlueList.this.set(lastReturn, t); + GlueList.this.set(lastReturn, t); } catch(IndexOutOfBoundsException e) { throw new ConcurrentModificationException(); } @@ -916,7 +917,7 @@ public class GlueList extends AbstractList implements List, Cloneable, try { int temp = j; - com.dfsek.terra.api.util.GlueList.this.add(temp, t); + GlueList.this.add(temp, t); j = temp + 1; @@ -1025,7 +1026,7 @@ public class GlueList extends AbstractList implements List, Cloneable, checkForComodification(); try { - com.dfsek.terra.api.util.GlueList.this.remove(lastReturn); + GlueList.this.remove(lastReturn); j = lastReturn; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java b/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java rename to common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java index fee065a77..d7d87d3d2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/DebugLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util.logging; +package com.dfsek.terra.util.logging; import com.dfsek.terra.api.Logger; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java b/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java similarity index 92% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java rename to common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java index 4ee2cba24..c1095716d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/logging/JavaLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util.logging; +package com.dfsek.terra.util.logging; import com.dfsek.terra.api.Logger; 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 282400c48..9e142f520 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 @@ -14,15 +14,15 @@ import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.util.logging.JavaLogger; +import com.dfsek.terra.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 5aed5e708..b8ce1133d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -2,9 +2,9 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.transform.MapTransform; -import com.dfsek.terra.api.transform.TransformerImpl; -import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.transform.MapTransform; +import com.dfsek.terra.transform.TransformerImpl; +import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 92f704701..63b5bb71a 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 3cc786e3e..965c4db63 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -10,8 +10,8 @@ import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.transform.MapTransform; -import com.dfsek.terra.api.transform.TransformerImpl; +import com.dfsek.terra.transform.MapTransform; +import com.dfsek.terra.transform.TransformerImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; 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 d7dad12e2..620058d48 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 @@ -19,7 +19,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; @@ -31,7 +31,7 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; 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 5d2c2bac1..759070aaa 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 @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; 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 582daee49..fb97dca84 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -7,15 +7,15 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.api.util.logging.JavaLogger; +import com.dfsek.terra.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 1098c5431..977c133d3 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -6,14 +6,14 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.EventManagerImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.config.PluginConfigImpl; From 9664e003c649a0df955d9fca17f4a097ac6d2a66 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 21:45:49 -0700 Subject: [PATCH 0157/1529] remove GlueList --- .../terra/config/fileloaders/LoaderImpl.java | 6 +- .../java/com/dfsek/terra/math/GridSpawn.java | 4 +- .../java/com/dfsek/terra/util/GlueList.java | 1051 ----------------- 3 files changed, 5 insertions(+), 1056 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index 575831fa6..f523a8329 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -4,10 +4,10 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.util.function.ExceptionalConsumer; -import com.dfsek.terra.util.GlueList; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -23,7 +23,7 @@ public abstract class LoaderImpl implements Loader { */ @Override public Loader then(ExceptionalConsumer> consumer) throws ConfigException { - List list = new GlueList<>(); + List list = new ArrayList<>(); streams.forEach((id, stream) -> { list.add(new Configuration(stream, id)); }); @@ -33,7 +33,7 @@ public abstract class LoaderImpl implements Loader { @Override public Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException { - consumer.accept(new GlueList<>(streams.keySet())); + consumer.accept(new ArrayList<>(streams.keySet())); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java index 8c3db603c..903047f44 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java @@ -1,10 +1,10 @@ package com.dfsek.terra.math; import com.dfsek.terra.util.FastRandom; -import com.dfsek.terra.util.GlueList; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -26,7 +26,7 @@ public class GridSpawn implements com.dfsek.terra.api.structure.StructureSpawn { public Vector3 getNearestSpawn(int x, int z, long seed) { int structureChunkX = x / (width + 2 * separation); int structureChunkZ = z / (width + 2 * separation); - List zones = new GlueList<>(); + List zones = new ArrayList<>(9); for(int xi = structureChunkX - 1; xi <= structureChunkX + 1; xi++) { for(int zi = structureChunkZ - 1; zi <= structureChunkZ + 1; zi++) { zones.add(getChunkSpawn(xi, zi, seed)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java b/common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java deleted file mode 100644 index 9dd85fb32..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/util/GlueList.java +++ /dev/null @@ -1,1051 +0,0 @@ -/* - * Copyright 2015 Ertuğrul Çetin - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.dfsek.terra.util; - -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.util.AbstractList; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.ConcurrentModificationException; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.NoSuchElementException; -import java.util.Objects; - -import static net.jafama.FastMath.*; - - -/** - * GlueList is a brand new List implementation which is way faster than ArrayList and LinkedList. - * This implementation inspired from ArrayList and LinkedList working mechanism. - *
- * Nodes holding data in arrays, in the beginning the world just like ArrayList ,inserts data into array one by one when there is no space for insertion to array - * new Node will be created and linked with the last Node. - *
- * The array which belongs to newly created node has half of the size of list , just like ArrayList. - * In ArrayList when there is no space for it it creates new array with double of old size and inserts old data into new one. - * Unlike ArrayList GlueList does it dynamically way with creating new node so old data does NOT have to be moved to another array. - * You can think that GlueList is dynamic version of ArrayList. - *
- * Adding and removing operations much faster than ArrayList and LinkedList. - * Searching operations nearly same with ArrayList and way better than LinkedList. - *

- * Best Case
- * Add O(1)
- * Remove O(1)
- * Search O(1)
- * Access O(1) - *

- * "m" number of created nodes.
- * "n" size of node array.
- * If you insert 10_000_000 record into List there will be just 36 nodes.

- * Worst Case
- * Add O(n*m)
- * Remove O(n*m)
- * Search O(m)
- * Access O(m) - *

- * version v1.0 - *

- * Date: 03.11.2015 - * - * @param the type of elements held in this collection - * @author Ertuğrul Çetin ~ ertu.ctn@gmail.com - * @see Collection - * @see List - * @see LinkedList - * @see ArrayList - */ -@SuppressWarnings({"ManualMinMaxCalculation", "ConstantConditions", "ManualArrayToCollectionCopy"}) -public class GlueList extends AbstractList implements List, Cloneable, Serializable { - - private static final long serialVersionUID = -4339173882660322249L; - private transient Node first; - private transient Node last; - - private int size; - - private int initialCapacity; - - private static final int DEFAULT_CAPACITY = 10; - - private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; - - public GlueList() { - - Node initNode = new Node<>(null, null, 0, DEFAULT_CAPACITY); - - first = initNode; - last = initNode; - } - - public GlueList(int initialCapacity) { - - this.initialCapacity = (initialCapacity > MAX_ARRAY_SIZE) ? MAX_ARRAY_SIZE : initialCapacity; - - Node initNode = new Node<>(null, null, 0, initialCapacity); - - first = initNode; - last = initNode; - } - - public GlueList(Collection c) { - - Objects.requireNonNull(c); - - Object[] arr = c.toArray(); - - int len = arr.length; - - if(len != 0) { - - Node initNode = new Node<>(null, null, 0, len); - - first = initNode; - last = initNode; - - System.arraycopy(arr, 0, last.elementData, 0, len); - - last.elementDataPointer += len; - } else { - - Node initNode = new Node<>(null, null, 0, DEFAULT_CAPACITY); - - first = initNode; - last = initNode; - } - - modCount++; - size += len; - } - - @Override - public boolean add(T element) { - - Node l = last; - - if(l.isAddable()) { - l.add(element); - } else { - Node newNode = new Node<>(l, null, size); - newNode.add(element); - last = newNode; - l.next = last; - } - - modCount++; - size++; - - return true; - } - - @SuppressWarnings("unchecked") - @Override - public void add(int index, T element) { - - rangeCheckForAdd(index); - - Node node = getNodeForAdd(index); - - if(node == null) { - - Node l = last; - - Node newNode = new Node<>(l, null, size); - - last = newNode; - - l.next = last; - - node = newNode; - } - - //if it is last and has extra space for element... - if(node == last && node.elementData.length - node.elementDataPointer > 0) { - - int nodeArrIndex = index - node.startingIndex; - - System.arraycopy(node.elementData, nodeArrIndex, node.elementData, nodeArrIndex + 1, node.elementDataPointer - nodeArrIndex); - - node.elementData[nodeArrIndex] = element; - - if(nodeArrIndex > 0) { - System.arraycopy(node.elementData, 0, node.elementData, 0, nodeArrIndex); - } - - node.elementDataPointer++; - } else { - - int newLen = node.elementData.length + 1; - T[] newElementData = (T[]) new Object[newLen]; - - int nodeArrIndex = index - node.startingIndex; - - System.arraycopy(node.elementData, nodeArrIndex, newElementData, nodeArrIndex + 1, node.elementDataPointer - nodeArrIndex); - - newElementData[nodeArrIndex] = element; - - if(nodeArrIndex > 0) { - System.arraycopy(node.elementData, 0, newElementData, 0, nodeArrIndex); - } - - node.elementData = newElementData; - node.endingIndex++; - node.elementDataPointer++; - } - - updateNodesAfterAdd(node); - - modCount++; - size++; - } - - private void rangeCheckForAdd(int index) { - - if(index > size || index < 0) { - throw new ArrayIndexOutOfBoundsException(index); - } - } - - private void updateNodesAfterAdd(Node nodeFrom) { - - for(Node node = nodeFrom.next; node != null; node = node.next) { - - node.startingIndex++; - node.endingIndex++; - } - } - - @SuppressWarnings("unchecked") - @Override - public boolean addAll(@NotNull Collection c) { - - Objects.requireNonNull(c); - - Object[] collection = c.toArray(); - - int len = collection.length; - - if(len == 0) { - return false; - } - - if(size == 0) { - - if(initialCapacity >= len) { - System.arraycopy(collection, 0, last.elementData, 0, len); - } else { - last.elementData = Arrays.copyOf((T[]) collection, len); - last.endingIndex = len - 1; - } - - last.elementDataPointer += len; - - modCount++; - size += len; - - return true; - } - - int elementDataLen = last.elementData.length; - int elementSize = last.elementDataPointer; - - int remainedStorage = elementDataLen - elementSize; - - if(remainedStorage == 0) { - - Node l = last; - - int newLen = (size >>> 1); - int initialLen = (len > newLen) ? len : newLen; - - Node newNode = new Node<>(l, null, size, initialLen); - - System.arraycopy(collection, 0, newNode.elementData, 0, len); - - newNode.elementDataPointer += len; - - last = newNode; - l.next = last; - - modCount++; - size += len; - - return true; - } - - if(len <= remainedStorage) { - - System.arraycopy(collection, 0, last.elementData, elementSize, len); - - last.elementDataPointer += len; - - modCount++; - size += len; - - return true; - } - - if(len > remainedStorage) { - - System.arraycopy(collection, 0, last.elementData, elementSize, remainedStorage); - - last.elementDataPointer += remainedStorage; - size += remainedStorage; - - int newLen = (size >>> 1); - int remainedDataLen = len - remainedStorage; - - int initialLen = (newLen > remainedDataLen) ? newLen : remainedDataLen; - - Node l = last; - - Node newNode = new Node<>(l, null, size, initialLen); - - System.arraycopy(collection, remainedStorage, newNode.elementData, 0, remainedDataLen); - - newNode.elementDataPointer += remainedDataLen; - - last = newNode; - l.next = last; - - modCount++; - size += remainedDataLen; - - return true; - } - - return false; - } - - @Override - public T set(int index, T element) { - - rangeCheck(index); - - Node node = getNode(index); - - int nodeArrIndex = index - node.startingIndex; - - T oldValue = node.elementData[nodeArrIndex]; - - node.elementData[nodeArrIndex] = element; - - return oldValue; - } - - @Override - public T get(int index) { - - rangeCheck(index); - - Node node = getNode(index); - - return node.elementData[index - node.startingIndex]; - } - - @Override - public int indexOf(Object o) { - - int index = 0; - - if(o == null) { - - for(Node node = first; node != null; node = node.next) { - for(int i = 0; i < node.elementDataPointer; i++) { - if(node.elementData[i] == null) { - return index; - } - index++; - } - } - } else { - - for(Node node = first; node != null; node = node.next) { - for(int i = 0; i < node.elementDataPointer; i++) { - if(o.equals(node.elementData[i])) { - return index; - } - index++; - } - } - } - - return -1; - } - - @Override - public int lastIndexOf(Object o) { - - int index = size - 1; - - if(o == null) { - for(Node node = last; node != null; node = node.pre) { - for(int i = node.elementDataPointer - 1; i >= 0; i--) { - if(node.elementData[i] == null) { - return index; - } - index--; - } - } - } else { - - for(Node node = last; node != null; node = node.pre) { - for(int i = node.elementDataPointer - 1; i >= 0; i--) { - if(o.equals(node.elementData[i])) { - return index; - } - index--; - } - } - } - - return -1; - } - - @Override - public boolean contains(Object o) { - return indexOf(o) != -1; - } - - @Override - public T remove(int index) { - - rangeCheck(index); - - Node node; - - if(size == 2 && first != last) { - - Node newNode = new Node<>(null, null, 0, 2); - newNode.add(first.elementData[0]); - newNode.add(last.elementData[0]); - - node = first = last = newNode; - } else { - node = getNode(index); - } - - T[] elementData = node.elementData; - - int elementSize = node.elementDataPointer; - - int nodeArrIndex = index - node.startingIndex; - - T oldValue = elementData[nodeArrIndex]; - - int numMoved = elementSize - nodeArrIndex - 1; - - if(numMoved > 0) { - System.arraycopy(node.elementData, nodeArrIndex + 1, node.elementData, nodeArrIndex, numMoved); - } - - if(first == last || node == last) { - node.elementData[elementSize - 1] = null; - } else { - node.elementData = Arrays.copyOf(node.elementData, elementSize - 1); - node.endingIndex = (--node.endingIndex < 0) ? 0 : node.endingIndex; - } - - node.elementDataPointer--; - - updateNodesAfterRemove(node); - - if(node.elementDataPointer == 0 && first != last) { - - Node next = node.next; - Node prev = node.pre; - - if(prev == null) { - first = next; - } else { - prev.next = next; - node.pre = null; - } - - if(next == null) { - last = prev; - } else { - next.pre = prev; - node.next = null; - } - - node.elementData = null; - } - - size--; - modCount++; - - return oldValue; - } - - @Override - public boolean removeAll(@NotNull Collection c) { - - Objects.requireNonNull(c); - - Object[] arr = c.toArray(); - if(arr.length == 0) { - return false; - } - - boolean isModified = false; - - for(Object o : arr) { - isModified |= remove(o); - } - - return isModified; - } - - @Override - public boolean retainAll(@NotNull Collection c) { - - Objects.requireNonNull(c); - - Object[] arr = c.toArray(); - if(arr.length == 0) { - return false; - } - - boolean isModified = false; - - Object[] elements = toArray(); - - for(Object element : elements) { - - if(!c.contains(element)) { - isModified |= remove(element); - } - } - - return isModified; - } - - @Override - public boolean remove(Object o) { - - int index = indexOf(o); - - if(index != -1) { - remove(index); - return true; - } else { - return false; - } - } - - private void updateNodesAfterRemove(Node fromNode) { - - for(Node node = fromNode.next; node != null; node = node.next) { - - node.startingIndex = (--node.startingIndex < 0) ? 0 : node.startingIndex; - node.endingIndex = (--node.endingIndex < 0) ? 0 : node.endingIndex; - } - } - - private Node getNode(int index) { - - int firstStartingIndex = first.startingIndex; - int firstEndingIndex = first.endingIndex; - - int firstMinDistance = min(abs(index - firstStartingIndex), abs(index - firstEndingIndex)); - - int lastStartingIndex = last.startingIndex; - int lastEndingIndex = last.endingIndex; - - int lastMinDistance = min(abs(index - lastStartingIndex), abs(index - lastEndingIndex)); - - if(firstMinDistance <= lastMinDistance) { - - Node node = first; - do { - - if(node.startingIndex <= index && index <= node.endingIndex) { - return node; - } - - node = node.next; - } while(true); - } else { - - Node node = last; - do { - - if(node.startingIndex <= index && index <= node.endingIndex) { - return node; - } - - node = node.pre; - } while(true); - } - } - - private Node getNodeForAdd(int index) { - - if(index == size && !(last.startingIndex <= index && index <= last.endingIndex)) { - return null; - } - - return getNode(index); - } - - private void rangeCheck(int index) { - - if(index >= size || index < 0) { - throw new ArrayIndexOutOfBoundsException(index); - } - } - - @Override - public void clear() { - - for(Node node = first; node != null; ) { - - Node next = node.next; - - node.next = null; - node.pre = null; - node.elementData = null; - - node = next; - } - - first = last = null; - - int capacity = min(MAX_ARRAY_SIZE, max(size, max(initialCapacity, DEFAULT_CAPACITY))); - - Node initNode = new Node<>(null, null, 0, capacity); - - initialCapacity = capacity; - - first = initNode; - last = initNode; - - modCount++; - size = 0; - } - - public void trimToSize() { - - int pointer = last.elementDataPointer; - int arrLen = last.elementData.length; - - if(pointer < arrLen && arrLen > 2) { - - if(pointer < 2) { - last.elementData = Arrays.copyOf(last.elementData, 2); - last.endingIndex -= arrLen - 2; - } else { - last.elementData = Arrays.copyOf(last.elementData, pointer); - last.endingIndex -= arrLen - pointer; - } - } - } - - @Override - public @NotNull List subList(int fromIndex, int toIndex) { - return super.subList(fromIndex, toIndex); - } - - @Override - public Object[] toArray() { - - Object[] objects = new Object[size]; - - int i = 0; - for(Node node = first; node != null; node = node.next) { - - int len = node.elementDataPointer; - - if(len > 0) { - System.arraycopy(node.elementData, 0, objects, i, len); - } - - i += len; - } - - return objects; - } - - @SuppressWarnings("unchecked") - @Override - public E[] toArray(E[] a) { - return (E[]) Arrays.copyOf(toArray(), size, a.getClass()); - } - - public boolean isEmpty() { - return size == 0; - } - - @Override - public @NotNull Iterator iterator() { - return new Itr(); - } - - @SuppressWarnings("unchecked") - @Override - public Object clone() { - - try { - GlueList clone = (GlueList) super.clone(); - - clone.first = clone.last = null; - - int capacity = FastMath.min(MAX_ARRAY_SIZE, FastMath.max(clone.size, FastMath.max(clone.initialCapacity, DEFAULT_CAPACITY))); - - Node initNode = new Node<>(null, null, 0, capacity); - - clone.initialCapacity = capacity; - - clone.first = clone.last = initNode; - - clone.modCount = 0; - clone.size = 0; - - for(Node node = first; node != null; node = node.next) { - - for(int i = 0; i < node.elementDataPointer; i++) { - clone.add(node.elementData[i]); - } - } - - return clone; - } catch(CloneNotSupportedException e) { - throw new InternalError(); - } - } - - @Override - public @NotNull ListIterator listIterator(int index) { - - checkPositionIndex(index); - - return new ListItr(index); - } - - private void checkPositionIndex(int index) { - - if(!(index >= 0 && index <= size)) { - throw new ArrayIndexOutOfBoundsException(index); - } - } - - @Override - public @NotNull ListIterator listIterator() { - return new ListItr(0); - } - - protected static class Node { - - protected Node pre; - protected Node next; - - protected int listSize; - - protected int startingIndex; - protected int endingIndex; - - protected T[] elementData; - protected int elementDataPointer; - - @SuppressWarnings("unchecked") - Node(Node pre, Node next, int listSize) { - this.pre = pre; - this.next = next; - this.listSize = listSize; - this.elementData = (T[]) new Object[listSize >>> 1]; - this.startingIndex = listSize; - this.endingIndex = listSize + elementData.length - 1; - } - - Node(Node pre, Node next, int listSize, int initialCapacity) { - this.pre = pre; - this.next = next; - this.listSize = listSize; - this.elementData = createElementData(initialCapacity); - this.startingIndex = listSize; - this.endingIndex = listSize + elementData.length - 1; - } - - @SuppressWarnings("unchecked") - T[] createElementData(int capacity) { - - if(capacity == 0 || capacity == 1) { - return (T[]) new Object[DEFAULT_CAPACITY]; - } else if(capacity > 1) { - return (T[]) new Object[capacity]; - } else { - throw new IllegalArgumentException("Illegal Capacity: " + capacity); - } - } - - boolean isAddable() { - return elementDataPointer < elementData.length; - } - - void add(T element) { - elementData[elementDataPointer++] = element; - } - - @Override - public String toString() { - return String.format("[sIndex: %d - eIndex: %d | elementDataPointer: %d | elementDataLength: %d]", startingIndex, endingIndex, elementDataPointer, elementData.length); - } - } - - @Override - public int size() { - return size; - } - - private class ListItr extends Itr implements ListIterator { - - public ListItr(int index) { - node = (index == size) ? last : getNode(index); - j = index; - i = index - node.startingIndex; - elementDataPointer = node.elementDataPointer; - } - - @Override - public boolean hasPrevious() { - return j != 0; - } - - @Override - public T previous() { - - checkForComodification(); - - int temp = j - 1; - - if(temp < 0) { - throw new NoSuchElementException(); - } - - if(temp >= last.endingIndex + 1) { - throw new ConcurrentModificationException(); - } - - if(j == size) { - - node = last; - - elementDataPointer = node.elementDataPointer; - - i = elementDataPointer; - } - - int index = j - node.startingIndex; - if(index == 0) { - - node = node.pre; - - elementDataPointer = node.elementDataPointer; - - i = elementDataPointer; - } - - T val = node.elementData[--i]; - - if(i < 0) { - node = node.pre; - i = (node != null) ? node.elementDataPointer : 0; - } - - j = temp; - - lastReturn = j; - - return val; - } - - @Override - public int nextIndex() { - return j; - } - - @Override - public int previousIndex() { - return j - 1; - } - - @Override - public void set(T t) { - - if(lastReturn < 0) { - throw new IllegalStateException(); - } - - checkForComodification(); - - try { - GlueList.this.set(lastReturn, t); - } catch(IndexOutOfBoundsException e) { - throw new ConcurrentModificationException(); - } - } - - @Override - public void add(T t) { - - checkForComodification(); - - try { - int temp = j; - - GlueList.this.add(temp, t); - - j = temp + 1; - - lastReturn = -1; - - i++; - elementDataPointer = (node != null) ? node.elementDataPointer : 0; - - expectedModCount = modCount; - } catch(IndexOutOfBoundsException e) { - throw new ConcurrentModificationException(); - } - } - } - - private void writeObject(ObjectOutputStream s) throws IOException { - - int expectedModCount = modCount; - - s.defaultWriteObject(); - - s.writeInt(size); - - for(Node node = first; node != null; node = node.next) { - for(int i = 0; i < node.elementDataPointer; i++) { - s.writeObject(node.elementData[i]); - } - } - - if(modCount != expectedModCount) { - throw new ConcurrentModificationException(); - } - } - - - @SuppressWarnings("unchecked") - private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { - - clear(); - - s.defaultReadObject(); - - int size = s.readInt(); - - for(int i = 0; i < size; i++) { - last.add((T) s.readObject()); - } - } - - private class Itr implements Iterator { - - protected Node node = first; - - protected int i = 0;//inner-array index - protected int j = 0;//total index -> cursor - - protected int lastReturn = -1; - - protected int expectedModCount = modCount; - protected int elementDataPointer = node.elementDataPointer; - - @Override - public boolean hasNext() { - return j != size; - } - - @Override - public T next() { - - checkForComodification(); - - if(j >= size) { - throw new NoSuchElementException(); - } - - if(j >= last.endingIndex + 1) { - throw new ConcurrentModificationException(); - } - - if(j == 0) {// it's for listIterator.when node becomes null. - node = first; - elementDataPointer = node.elementDataPointer; - i = 0; - } - - T val = node.elementData[i++]; - - if(i >= elementDataPointer) { - node = node.next; - i = 0; - elementDataPointer = (node != null) ? node.elementDataPointer : 0; - } - - lastReturn = j++; - - return val; - } - - @Override - public void remove() { - - if(lastReturn < 0) { - throw new IllegalStateException(); - } - - checkForComodification(); - - try { - GlueList.this.remove(lastReturn); - - j = lastReturn; - - lastReturn = -1; - - i = (--i < 0) ? 0 : i; - - elementDataPointer = (node != null) ? node.elementDataPointer : 0; - - expectedModCount = modCount; - } catch(IndexOutOfBoundsException e) { - throw new ConcurrentModificationException(); - } - } - - void checkForComodification() { - if(modCount != expectedModCount) { - throw new ConcurrentModificationException(); - } - } - } -} \ No newline at end of file From 0ba02719c0117dac38af6656361171bfe1db6670 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 22:37:59 -0700 Subject: [PATCH 0158/1529] create FloraLayer --- .../terra/addons/flora/flora/FloraLayer.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java new file mode 100644 index 000000000..112b6ede7 --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java @@ -0,0 +1,43 @@ +package com.dfsek.terra.addons.flora.flora; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.Flora; + +public class FloraLayer { + protected final double density; + protected final Range level; + protected final ProbabilityCollection layer; + protected final NoiseSampler noise; + + public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + this.density = density; + this.level = level; + this.layer = layer; + this.noise = noise; + } + + public NoiseSampler getNoise() { + return noise; + } + + public double getDensity() { + return density; + } + + public Range getLevel() { + return level; + } + + public ProbabilityCollection getLayer() { + return layer; + } + + public void place(Chunk chunk, Vector2 coords) { + Flora item = layer.get(noise, (chunk.getX() << 4) + coords.getX(), (chunk.getZ() << 4) + coords.getZ()); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block, chunk.getWorld())); + } +} From 43f77f15312868285d8a17e25b86c18383232965 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 10 Jul 2021 22:41:07 -0700 Subject: [PATCH 0159/1529] implement TreeLayer --- .../terra/addons/tree/tree/TreeLayer.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java new file mode 100644 index 000000000..04dec1dc3 --- /dev/null +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java @@ -0,0 +1,55 @@ +package com.dfsek.terra.addons.tree.tree; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.Tree; + +public class TreeLayer { + protected final double density; + protected final Range level; + protected final ProbabilityCollection layer; + protected final NoiseSampler noise; + + public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + this.density = density; + this.level = level; + this.layer = layer; + this.noise = noise; + } + + public NoiseSampler getNoise() { + return noise; + } + + public double getDensity() { + return density; + } + + public Range getLevel() { + return level; + } + + public ProbabilityCollection getLayer() { + return layer; + } + + public void place(Chunk chunk, Vector2 coords) { + Tree item = layer.get(noise, coords.getX(), coords.getZ()); + BlockState current; + int i = 0; + for(int ignored : level) { + current = chunk.getBlock((int) coords.getX(), level.getMax()-i, (int) coords.getZ()); + if(item.getSpawnable().contains(current.getBlockType())) { + item.plant(new Vector3((int) coords.getX(), level.getMax()-i, (int) coords.getZ()), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); + } + i--; + } + } +} From 52295af5a7acc2ae9c87f420f94c1b8a7447dd76 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 10:59:53 -0700 Subject: [PATCH 0160/1529] clean up tectonic dependency --- .../biome-provider-image/build.gradle.kts | 1 - .../biome-provider-pipeline/build.gradle.kts | 1 - .../biome-provider-single/build.gradle.kts | 1 - .../chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - .../config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - .../addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - .../build.gradle.kts | 1 - common/api/build.gradle.kts | 24 ------------------- common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 17 files changed, 40 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index ca834dd81..f19a8d9fa 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -31,27 +31,3 @@ dependencies { "testImplementation"("com.google.guava:guava:30.0-jre") } -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 13e9d27d0..f081caa49 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -21,7 +21,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index d6f23e57a..3ec816d1c 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") From 113568da9b16e2d58c1c8d222bea3bb660a40754 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 11:04:30 -0700 Subject: [PATCH 0161/1529] clean up snakeyaml dependency --- common/addons/biome-provider-image/build.gradle.kts | 2 -- common/addons/biome-provider-pipeline/build.gradle.kts | 2 -- common/addons/biome-provider-single/build.gradle.kts | 2 -- common/addons/chunk-generator-noise-3d/build.gradle.kts | 2 -- common/addons/config-biome/build.gradle.kts | 2 -- common/addons/config-carver/build.gradle.kts | 2 -- common/addons/config-flora/build.gradle.kts | 2 -- common/addons/config-noise-function/build.gradle.kts | 2 -- common/addons/config-ore/build.gradle.kts | 2 -- common/addons/config-palette/build.gradle.kts | 2 -- common/addons/config-structure/build.gradle.kts | 2 -- common/addons/config-tree/build.gradle.kts | 2 -- common/addons/structure-terrascript-loader/build.gradle.kts | 2 -- common/api/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 2 -- common/loader/addon/build.gradle.kts | 2 -- common/loader/config/build.gradle.kts | 2 -- 17 files changed, 33 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index f19a8d9fa..1d687e1f8 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -24,7 +24,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index f081caa49..4074b1e99 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -22,12 +22,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 3ec816d1c..38cab9a0b 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -20,12 +20,10 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - "shadedApi"("org.yaml:snakeyaml:1.27") "compileOnly"("com.google.guava:guava:30.0-jre") From 9b6247dcb87b3ee366f31ffef9b99ea0318863e2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 11:05:44 -0700 Subject: [PATCH 0162/1529] remove duplicate ioutils dependency --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/api/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 17 files changed, 17 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 1d687e1f8..5ddcf5904 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -14,7 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.dfsek:Tectonic:1.4.0") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 4074b1e99..34c078b12 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"(project(":common:loader:addon")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 38cab9a0b..9301960a8 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -16,7 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.4") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("net.jafama:jafama:2.3.2") From cfaa2f33ae04f606024857facc204f929c5a85d2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 11:22:50 -0700 Subject: [PATCH 0163/1529] jafama dependency changes --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 16 files changed, 16 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 34c078b12..0ed4ed9e0 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 9301960a8..cc548993b 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") From 6f7b7a2336e16c61fdc00fa6e72376152bb2ec2a Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 11:25:08 -0700 Subject: [PATCH 0164/1529] asm dependency changes --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 16 files changed, 16 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 0ed4ed9e0..f3031d364 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index cc548993b..fa50138a2 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("org.ow2.asm:asm:9.0") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") From cf88c51fda531baaf49381aa05da40285786e75a Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 12:30:04 -0700 Subject: [PATCH 0165/1529] commons IO dependency changes --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/api/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 15 files changed, 15 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 5ddcf5904..fe5cd30f9 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index fa50138a2..7cadb1fb0 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") From 3be90cab5358da4ffbc1cb625a8078666a05df69 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 12:32:24 -0700 Subject: [PATCH 0166/1529] paralithic dependency stuff --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/api/build.gradle.kts | 1 + common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 17 files changed, 1 insertion(+), 16 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index fa50138a2..398baa6ef 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index fe5cd30f9..d2b5d36df 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.dfsek:Tectonic:1.4.0") + "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index f3031d364..30d006519 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("commons-io:commons-io:2.6") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 7cadb1fb0..1b55eb50a 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") From 61d03a702259769338e4aa08e820c691c11a99dd Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 12:39:23 -0700 Subject: [PATCH 0167/1529] org.json dependency stuff --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/api/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 16 files changed, 16 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 398baa6ef..3232cab08 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index d2b5d36df..36812ddb5 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -22,7 +22,6 @@ dependencies { "shadedApi"("org.yaml:snakeyaml:1.27") "shadedApi"("org.ow2.asm:asm:9.0") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 30d006519..f9ed421d9 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -21,7 +21,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 1b55eb50a..e60133b11 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -18,7 +18,6 @@ dependencies { "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") "compileOnly"("com.google.guava:guava:30.0-jre") From dea68d0ede783ab8d2ff76d10ec48b7b810c1c2d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 12:45:49 -0700 Subject: [PATCH 0168/1529] apache rng dependency stuff --- common/addons/biome-provider-image/build.gradle.kts | 1 - common/addons/biome-provider-pipeline/build.gradle.kts | 1 - common/addons/biome-provider-single/build.gradle.kts | 1 - common/addons/chunk-generator-noise-3d/build.gradle.kts | 1 - common/addons/config-biome/build.gradle.kts | 1 - common/addons/config-carver/build.gradle.kts | 1 - common/addons/config-flora/build.gradle.kts | 1 - common/addons/config-noise-function/build.gradle.kts | 1 - common/addons/config-ore/build.gradle.kts | 1 - common/addons/config-palette/build.gradle.kts | 1 - common/addons/config-structure/build.gradle.kts | 1 - common/addons/config-tree/build.gradle.kts | 1 - common/addons/structure-terrascript-loader/build.gradle.kts | 1 - common/api/build.gradle.kts | 1 - common/loader/addon/build.gradle.kts | 1 - common/loader/config/build.gradle.kts | 1 - 16 files changed, 16 deletions(-) diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 1b55eb50a..5293a5cc2 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 3232cab08..65b7b4ac3 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 36812ddb5..efa3c3d9c 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -13,7 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("com.dfsek:Paralithic:0.3.2") "shadedApi"("com.dfsek:Tectonic:1.4.0") diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index e60133b11..7030094e7 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -15,7 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "shadedApi"("org.apache.commons:commons-rng-core:1.3") From 589158ee71d204d157d4a54c455caf8e3f164860 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 14:24:33 -0700 Subject: [PATCH 0169/1529] reformat --- .../kotlin/com/dfsek/terra/AddonConfig.kt | 3 -- common/addons/README.md | 3 +- .../biome-provider-image/build.gradle.kts | 4 -- .../biome/image/ImageBiomeProvider.java | 2 +- .../biome/image/ImageProviderTemplate.java | 4 +- .../biome-provider-pipeline/build.gradle.kts | 4 -- .../biome/pipeline/BiomeHolderImpl.java | 6 +-- .../biome/pipeline/BiomePipelineImpl.java | 4 +- .../config/BiomePipelineTemplate.java | 2 +- .../config/BiomeProviderTemplate.java | 2 +- .../pipeline/config/NoiseSourceTemplate.java | 4 +- .../config/stage/StageBuilderLoader.java | 4 +- .../pipeline/config/stage/StageTemplate.java | 4 +- .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListMutatorTemplate.java | 4 +- .../stage/mutator/BorderMutatorTemplate.java | 2 +- .../stage/mutator/MutatorStageTemplate.java | 2 +- .../mutator/ReplaceListMutatorTemplate.java | 4 +- .../stage/mutator/ReplaceMutatorTemplate.java | 2 +- .../pipeline/expand/FractalExpander.java | 2 +- .../pipeline/mutator/BorderListMutator.java | 2 +- .../biome/pipeline/mutator/BorderMutator.java | 2 +- .../pipeline/mutator/ReplaceListMutator.java | 2 +- .../pipeline/mutator/ReplaceMutator.java | 2 +- .../biome/pipeline/mutator/SmoothMutator.java | 2 +- .../biome-provider-single/build.gradle.kts | 4 -- .../biome/single/SingleBiomeProvider.java | 2 +- .../single/SingleBiomeProviderTemplate.java | 4 +- .../chunk-generator-noise-3d/build.gradle.kts | 4 -- .../generators/NoiseChunkGenerator3D.java | 40 ++++++++-------- .../interpolation/ChunkInterpolator3D.java | 8 ++-- .../generation/math/samplers/Sampler3D.java | 4 +- common/addons/config-biome/build.gradle.kts | 4 -- .../terra/addons/biome/BiomeConfigType.java | 2 - .../terra/addons/biome/BiomeTemplate.java | 8 ++-- .../biome/command/biome/AsyncBiomeFinder.java | 3 +- common/addons/config-carver/build.gradle.kts | 4 -- .../terra/addons/carver/CarverPalette.java | 2 +- .../terra/addons/carver/CavePopulator.java | 2 +- .../addons/carver/UserDefinedCarver.java | 2 +- common/addons/config-flora/build.gradle.kts | 4 -- .../terra/addons/flora/flora/TerraFlora.java | 2 +- .../config-noise-function/build.gradle.kts | 4 -- .../dfsek/terra/addons/noise/NoiseAddon.java | 4 +- .../addons/noise/NoiseConfigPackTemplate.java | 1 - .../noise/ExpressionFunctionTemplate.java | 6 +-- .../defined/UserDefinedFunction.java | 17 ++++--- .../noise/samplers/noise/CellularSampler.java | 2 +- .../noise/samplers/noise/NoiseFunction.java | 20 ++++---- common/addons/config-ore/build.gradle.kts | 4 -- .../dfsek/terra/addons/ore/OreFactory.java | 4 +- .../dfsek/terra/addons/ore/OreTemplate.java | 4 +- .../com/dfsek/terra/addons/ore/ores/Ore.java | 4 +- .../terra/addons/ore/ores/VanillaOre.java | 4 +- common/addons/config-palette/build.gradle.kts | 4 -- .../addons/palette/PaletteConfigType.java | 2 - .../addons/palette/palette/PaletteImpl.java | 2 +- .../palette/palette/PaletteLayerLoader.java | 7 +-- .../addons/structure/TerraStructure.java | 2 +- .../command/AsyncStructureFinder.java | 3 +- .../structure/StructureExportCommand.java | 2 +- .../structure/structures/loot/Entry.java | 6 +-- common/addons/config-tree/build.gradle.kts | 4 -- .../dfsek/terra/addons/tree/TreeFactory.java | 2 +- .../terra/addons/tree/tree/TreeLayer.java | 5 +- .../addons/terrascript/parser/lang/Block.java | 28 +++++------ .../lang/constants/NumericConstant.java | 2 +- .../parser/lang/constants/StringConstant.java | 2 +- .../script/TerraImplementationArguments.java | 2 +- .../script/builders/BiomeFunctionBuilder.java | 2 +- .../script/builders/BlockFunctionBuilder.java | 2 +- .../script/builders/CheckFunctionBuilder.java | 2 +- .../builders/EntityFunctionBuilder.java | 2 +- .../script/builders/LootFunctionBuilder.java | 2 +- .../script/builders/PullFunctionBuilder.java | 2 +- .../script/builders/StateFunctionBuilder.java | 2 +- .../builders/StructureFunctionBuilder.java | 6 +-- .../script/functions/BiomeFunction.java | 4 +- .../script/functions/BlockFunction.java | 4 +- .../functions/DynamicBlockFunction.java | 2 +- .../script/functions/EntityFunction.java | 8 ++-- .../script/functions/LootFunction.java | 4 +- .../script/functions/PullFunction.java | 8 ++-- .../script/functions/StateFunction.java | 4 +- .../script/functions/StructureFunction.java | 4 +- .../properties/base/BooleanProperty.java | 10 ++-- .../state/properties/base/EnumProperty.java | 1 + .../state/properties/base/IntProperty.java | 10 ++-- .../state/properties/enums/Direction.java | 2 +- .../dfsek/terra/api/config/ConfigPack.java | 6 +-- .../dfsek/terra/api/config/ConfigType.java | 2 - .../world/generation/LootPopulateEvent.java | 2 +- .../dfsek/terra/api/noise/NoiseSampler.java | 48 +++++++++---------- .../api/registry/meta/RegistryFactory.java | 4 +- .../api/structure/ConfiguredStructure.java | 2 +- .../terra/api/tectonic/LoaderHolder.java | 3 +- .../dfsek/terra/api/transform/Validator.java | 4 +- .../dfsek/terra/api/util/ReflectionUtil.java | 1 - .../dfsek/terra/api/util/RotationUtil.java | 2 - .../dfsek/terra/api/util/generic/Lazy.java | 8 ++-- .../api/util/generic/pair/ImmutablePair.java | 15 +++--- .../terra/api/util/seeded/NoiseSeeded.java | 10 ++-- .../com/dfsek/terra/api/vector/Vector2.java | 10 ++-- .../com/dfsek/terra/api/vector/Vector3.java | 1 - .../com/dfsek/terra/api/world/Carver.java | 3 -- .../dfsek/terra/api/world/ChunkAccess.java | 6 +-- .../java/com/dfsek/terra/api/world/World.java | 2 +- .../terra/api/world/biome/Generator.java | 2 +- .../terra/commands/TerraCommandManager.java | 2 +- .../dfsek/terra/config/GenericLoaders.java | 2 +- .../dfsek/terra/config/dummy/DummyWorld.java | 2 +- .../loaders/config/GridSpawnLoader.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 16 ++++++- .../terra/config/pack/ConfigPackTemplate.java | 4 -- .../java/com/dfsek/terra/math/GridSpawn.java | 2 +- .../dfsek/terra/profiler/ProfilerImpl.java | 7 ++- .../terra/registry/OpenRegistryImpl.java | 2 +- .../terra/registry/RegistryFactoryImpl.java | 1 + .../registry/config/ConfigTypeRegistry.java | 1 + .../terra/registry/master/AddonRegistry.java | 2 +- .../com/dfsek/terra/world/TerraWorldImpl.java | 2 +- .../population/items/PlaceableLayer.java | 2 +- .../src/test/java/command/CommandTest.java | 2 +- common/loader/addon/build.gradle.kts | 4 -- .../com/dfsek/terra/addon/PreLoadAddon.java | 2 +- common/loader/config/build.gradle.kts | 4 -- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 36 ++++++-------- .../bukkit/listeners/CommonListener.java | 17 ++++--- .../bukkit/population/PopulationManager.java | 15 +++--- .../terra/bukkit/world/BukkitAdapter.java | 10 ++-- .../dfsek/terra/bukkit/world/BukkitWorld.java | 2 +- .../world/block/BukkitBlockTypeAndItem.java | 2 +- .../world/block/data/BukkitBlockState.java | 14 +----- .../world/block/state/BukkitBlockEntity.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 33 +++++-------- .../terra/fabric/block/FabricBlockState.java | 7 +-- .../FabricChunkGeneratorWrapper.java | 2 +- .../fabric/handle/FabricWorldHandle.java | 1 + .../block/BlockEntityMixin.java | 2 +- .../implementations/block/BlockMixin.java | 2 +- .../block/state/SignBlockEntityMixin.java | 6 +-- .../world/ChunkRegionMixin.java | 2 +- .../world/ServerWorldMixin.java | 2 +- .../terra/fabric/util/FabricAdapter.java | 2 +- .../dfsek/terra/fabric/util/FabricUtil.java | 6 --- .../ForgeChunkGeneratorWrapper.java | 15 +++--- .../com/dfsek/terra/StandalonePlugin.java | 6 +-- .../terra/platform/DirectBlockEntity.java | 2 +- .../com/dfsek/terra/platform/DirectWorld.java | 2 +- .../java/com/dfsek/terra/platform/State.java | 2 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 4 +- .../world/block/data/SpongeBlockState.java | 2 +- 152 files changed, 342 insertions(+), 445 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt index 0d51f0a89..71c6f587e 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -3,10 +3,7 @@ package com.dfsek.terra import org.gradle.api.Project import org.gradle.api.Task import org.gradle.jvm.tasks.Jar -import org.gradle.kotlin.dsl.withType -import org.gradle.language.jvm.tasks.ProcessResources import java.io.File -import java.util.* import java.util.function.Predicate import kotlin.streams.asStream diff --git a/common/addons/README.md b/common/addons/README.md index 4ab2b4931..cea224814 100644 --- a/common/addons/README.md +++ b/common/addons/README.md @@ -1,4 +1,3 @@ # Core Addons -This directory contains the modularized "core addons" that implement -Terra's default behavior. \ No newline at end of file +This directory contains the modularized "core addons" that implement Terra's default behavior. \ No newline at end of file diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 313d4c074..f7a5a794f 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.biome.image; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import net.jafama.FastMath; import java.awt.*; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index e53cae45e..e71cac1b5 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -2,13 +2,13 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; import java.util.stream.Collectors; -public class ImageProviderTemplate /*extends BiomeProviderTemplate */{ +public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { private final Registry biomes; @Value("image.name") private BufferedImage image; diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java index 7c2ba34ac..57e81917f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -1,17 +1,17 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class BiomeHolderImpl implements BiomeHolder { private final Vector2 origin; private final int width; - private TerraBiome[][] biomes; private final int offset; + private TerraBiome[][] biomes; public BiomeHolderImpl(int width, Vector2 origin) { width += 4; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index 3608cb975..516e5ca01 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.util.ArrayList; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index dca3f0c80..80708faef 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -3,10 +3,10 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index e263bb0ff..748219b3d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("resolution") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 31fa51779..1b478c3c0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; public class NoiseSourceTemplate extends SourceTemplate { @Value("noise") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java index 56f2da266..21a242789 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java @@ -4,14 +4,14 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index 8d70c998a..bf3349fa0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -2,10 +2,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; 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.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededBuilder; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index a99eed4cd..e42f44f56 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; public class ExpanderStageTemplate extends StageTemplate { @Override diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 23768d311..7a1348734 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index da91f4967..4632b735d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; @SuppressWarnings("unused") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index 3ddd46923..e5abaa54e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; public abstract class MutatorStageTemplate extends StageTemplate { public abstract BiomeMutator build(long seed); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index dac5e82b5..bbd1b2a3a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index cb957ccbf..365da2c42 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; @SuppressWarnings("unused") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java index 394c7cc87..fa9532737 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.expand; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; public class FractalExpander implements BiomeExpander { private final NoiseSampler sampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java index 6fe89460b..b99c2e841 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java index a0e97e3dd..e09b0e17b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; public class BorderMutator implements BiomeMutator { private final String border; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java index cbe562980..029a9b668 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java index ea63765a9..59899c322 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java index be88ddf41..a62966a67 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import java.util.Objects; diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 25fae9429..e819c075f 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.biome.single; +import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; public class SingleBiomeProvider implements BiomeProvider, BiomeProviderBuilder { private final TerraBiome biome; diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 97c6e855b..ae22f7e5d 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,11 +2,11 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; -public class SingleBiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { +public class SingleBiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("biome") private BiomeBuilder biome; diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 2a242580d..91cf14595 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -17,8 +17,8 @@ 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.Sampler; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -35,6 +35,24 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { this.main = main; } + @SuppressWarnings({"try"}) + static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, TerraPlugin main) { + try(ProfileFrame ignore = main.getProfiler().profile("biomes")) { + int xOrig = (chunkX << 4); + int zOrig = (chunkZ << 4); + BiomeProvider grid = main.getWorld(world).getBiomeProvider(); + for(int x = 0; x < 4; x++) { + for(int z = 0; z < 4; z++) { + int cx = xOrig + (x << 2); + int cz = zOrig + (z << 2); + TerraBiome b = grid.getBiome(cx, cz); + + biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator(world).getBiomeNoise(), cx, 0, cz)); + } + } + } + } + @Override public ConfigPack getConfigPack() { return configPack; @@ -85,7 +103,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { justSet = false; paletteLevel = 0; - } */else { + } */ else { justSet = false; paletteLevel = 0; @@ -116,24 +134,6 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { return false; } - @SuppressWarnings({"try"}) - static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, TerraPlugin main) { - try(ProfileFrame ignore = main.getProfiler().profile("biomes")) { - int xOrig = (chunkX << 4); - int zOrig = (chunkZ << 4); - BiomeProvider grid = main.getWorld(world).getBiomeProvider(); - for(int x = 0; x < 4; x++) { - for(int z = 0; z < 4; z++) { - int cx = xOrig + (x << 2); - int cz = zOrig + (z << 2); - TerraBiome b = grid.getBiome(cx, cz); - - biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator(world).getBiomeNoise(), cx, 0, cz)); - } - } - } - } - @Override public void generateBiomes(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome) { biomes(world, chunkX, chunkZ, biome, main); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index d9879eaed..0af1ab52e 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -82,14 +82,14 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } } - public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3(x, y, z)); - } - private static int reRange(int value, int high) { return FastMath.max(FastMath.min(value, high), 0); } + public double computeNoise(Generator generator, double x, double y, double z) { + return noiseGetter.apply(generator, new Vector3(x, y, z)); + } + /** * Gets the noise at a pair of internal chunk coordinates. * diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index 1a915cb6d..ec4215f63 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; +import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D; +import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; 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.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/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index f1d764975..556faf169 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; @@ -10,7 +9,6 @@ import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import java.lang.reflect.Type; import java.util.function.Supplier; public class BiomeConfigType implements ConfigType { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 4dd9ea343..71a091bfb 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -168,6 +168,10 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). + public BiomeTemplate(ConfigPack pack, TerraPlugin main) { + this.pack = pack; + } + public List getExtended() { return extended; } @@ -208,10 +212,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return doSlabs; } - public BiomeTemplate(ConfigPack pack, TerraPlugin main) { - this.pack = pack; - } - public Map getSlabPalettes() { return slabPalettes; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index d2db36540..c6278a50a 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -21,9 +21,9 @@ public class AsyncBiomeFinder implements Runnable { protected final int centerX; protected final int centerZ; protected final World world; + protected final TerraPlugin main; private final Consumer callback; protected int searchSize = 1; - protected final TerraPlugin main; public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { this.provider = provider; @@ -52,6 +52,7 @@ public class AsyncBiomeFinder implements Runnable { public Vector3 finalizeVector(Vector3 orig) { return orig.multiply(main.getTerraConfig().getBiomeSearchResolution()); } + @Override public void run() { int x = centerX; diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index e8eb869eb..6ebf2f49a 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.carver; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import net.jafama.FastMath; diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 11898b6cd..518def630 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 9af198e27..7270e4f53 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -120,10 +120,10 @@ public class UserDefinedCarver extends Carver { private class UserDefinedWorm extends Worm { private final Vector3 direction; private final Vector3 origin; + private final long seed; private int steps; private int nextDirection = 0; private double[] currentRotation = new double[3]; - private final long seed; public UserDefinedWorm(int length, Random r, Vector3 origin, int topCut, int bottomCut, long seed) { super(length, r, origin); diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 407c1cdbe..8c1a62418 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; 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.util.collection.MaterialSet; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 89fb67680..40c1ad850 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -60,13 +60,13 @@ public class NoiseAddon extends TerraAddon implements EventListener { .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)); } - + @SuppressWarnings("deprecation") public void packPreLoad(ConfigPackPreLoadEvent event) { CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); event.getPack() .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)); - + noiseRegistry.registerUnchecked("LINEAR", LinearNormalizerTemplate::new); noiseRegistry.registerUnchecked("NORMAL", NormalNormalizerTemplate::new); noiseRegistry.registerUnchecked("CLAMP", ClampNormalizerTemplate::new); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index 98a19876c..f25164422 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.Map; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 1ba19bbdf..b3ed21c5a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -24,23 +24,19 @@ import java.util.Map; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class ExpressionFunctionTemplate extends SamplerTemplate implements ValidatedConfigTemplate { + private final Map otherFunctions; @Value("variables") @Default private Map vars = new HashMap<>(); - @Value("equation") private String equation; - @Value("functions") @Default private LinkedHashMap functions = new LinkedHashMap<>(); - @Value("expressions") @Default private LinkedHashMap expressions = new LinkedHashMap<>(); - private final Map otherFunctions; - public ExpressionFunctionTemplate(Map otherFunctions) { this.otherFunctions = otherFunctions; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index 0f7f79cbf..33d93112b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -17,6 +17,14 @@ public class UserDefinedFunction implements DynamicFunction { this.args = args; } + public static UserDefinedFunction newInstance(FunctionTemplate template, Parser parser, Scope parent) throws ParseException { + + Scope functionScope = new Scope().withParent(parent); + + template.getArgs().forEach(functionScope::addInvocationVariable); + + return new UserDefinedFunction(parser.parse(template.getFunction(), functionScope), template.getArgs().size()); + } @Override public double eval(double... args) { @@ -32,13 +40,4 @@ public class UserDefinedFunction implements DynamicFunction { public int getArgNumber() { return args; } - - public static UserDefinedFunction newInstance(FunctionTemplate template, Parser parser, Scope parent) throws ParseException { - - Scope functionScope = new Scope().withParent(parent); - - template.getArgs().forEach(functionScope::addInvocationVariable); - - return new UserDefinedFunction(parser.parse(template.getFunction(), functionScope), template.getArgs().size()); - } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index ea447dfb4..509440db3 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.noise.samplers.noise; +import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; /** * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index 57c20a59b..cd7acb646 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -9,7 +9,15 @@ public abstract class NoiseFunction implements NoiseSampler { protected static final int PRIME_X = 501125321; protected static final int PRIME_Y = 1136930381; protected static final int PRIME_Z = 1720413743; + static final int precision = 100; + static final int modulus = 360 * precision; + static final double[] sin = new double[360 * 100]; // lookup table + static { + for(int i = 0; i < sin.length; i++) { + sin[i] = (float) Math.sin((double) (i) / (precision)); + } + } protected double frequency = 0.02d; protected int seed; @@ -22,8 +30,6 @@ public abstract class NoiseFunction implements NoiseSampler { return f >= 0 ? (int) f : (int) f - 1; } - static final int precision = 100; - protected static int hash(int seed, int xPrimed, int yPrimed, int zPrimed) { int hash = seed ^ xPrimed ^ yPrimed ^ zPrimed; @@ -38,8 +44,6 @@ public abstract class NoiseFunction implements NoiseSampler { return hash; } - static final int modulus = 360 * precision; - protected static int fastRound(double f) { return f >= 0 ? (int) (f + 0.5f) : (int) (f - 0.5); } @@ -77,14 +81,6 @@ public abstract class NoiseFunction implements NoiseSampler { return FastMath.sqrt(f); } - static final double[] sin = new double[360 * 100]; // lookup table - - static { - for(int i = 0; i < sin.length; i++) { - sin[i] = (float) Math.sin((double) (i) / (precision)); - } - } - protected static int fastCeil(double f) { int i = (int) f; if(i < f) i++; diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java index 2a90b9a8b..010ffa867 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.ore; +import com.dfsek.terra.addons.ore.ores.Ore; +import com.dfsek.terra.addons.ore.ores.VanillaOre; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.addons.ore.ores.Ore; -import com.dfsek.terra.addons.ore.ores.VanillaOre; public class OreFactory implements ConfigFactory { @Override diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index 4337855c3..eb6b7dbf5 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -3,11 +3,11 @@ package com.dfsek.terra.addons.ore; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.MaterialSet; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index 6c4339e46..b6583b752 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; @@ -15,8 +15,8 @@ public abstract class Ore { private final BlockState material; private final MaterialSet replaceable; private final boolean applyGravity; - protected TerraPlugin main; private final Map materials; + protected TerraPlugin main; public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main, Map materials) { this.material = material; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index e6eac727b..030bf4858 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import net.jafama.FastMath; diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 0ccdbcf60..cfb172959 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.palette; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.addons.palette.palette.PaletteImpl; import com.dfsek.terra.api.TerraPlugin; @@ -11,7 +10,6 @@ import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.world.generator.Palette; -import java.lang.reflect.Type; import java.util.function.Supplier; public class PaletteConfigType implements ConfigType { diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 86185b395..b034c49f4 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -54,8 +54,8 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator */ public static class PaletteLayer { private final boolean col; // Is layer using a collection? - private ProbabilityCollection collection; private final NoiseSampler sampler; + private ProbabilityCollection collection; private BlockState m; /** diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 6e1d3a243..b8e8093d2 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -14,17 +14,18 @@ import java.util.Map; @SuppressWarnings("unchecked") public class PaletteLayerLoader implements TypeLoader { private static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; - @SuppressWarnings("unused") - private ProbabilityCollection blockStateProbabilityCollection; static { try { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getGenericType(); + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getGenericType(); } catch(NoSuchFieldException e) { throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e); } } + @SuppressWarnings("unused") + private ProbabilityCollection blockStateProbabilityCollection; + @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 560872bfb..7dd9134ce 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -3,8 +3,8 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class TerraStructure implements ConfiguredStructure { private final ProbabilityCollection structure; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index 821cb74b4..85fded7b7 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -17,9 +17,10 @@ public class AsyncStructureFinder implements Runnable { protected final int centerX; protected final int centerZ; protected final World world; + protected final TerraPlugin main; private final Consumer callback; protected int searchSize = 1; - protected final TerraPlugin main; + public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); this.provider = provider; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java index e0e658449..7ea9e0969 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.structure.command.structure; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Sign; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index 20546ef95..42eecd8a0 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.structure.structures.loot; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.ItemStack; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/addons/config-tree/build.gradle.kts +++ b/common/addons/config-tree/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java index eff88f97c..e41d765a8 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.tree; +import com.dfsek.terra.addons.tree.tree.TerraTree; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.addons.tree.tree.TerraTree; public class TreeFactory implements ConfigFactory { @Override diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java index 04dec1dc3..34d2e1bf1 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Tree; public class TreeLayer { @@ -45,9 +44,9 @@ public class TreeLayer { BlockState current; int i = 0; for(int ignored : level) { - current = chunk.getBlock((int) coords.getX(), level.getMax()-i, (int) coords.getZ()); + current = chunk.getBlock((int) coords.getX(), level.getMax() - i, (int) coords.getZ()); if(item.getSpawnable().contains(current.getBlockType())) { - item.plant(new Vector3((int) coords.getX(), level.getMax()-i, (int) coords.getZ()), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); + item.plant(new Vector3((int) coords.getX(), level.getMax() - i, (int) coords.getZ()), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); } i--; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java index fe9e70930..320bac664 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java @@ -42,6 +42,20 @@ public class Block implements Item> { return position; } + public enum ReturnLevel { + NONE(false), BREAK(false), CONTINUE(false), RETURN(true), FAIL(true); + + private final boolean returnFast; + + ReturnLevel(boolean returnFast) { + this.returnFast = returnFast; + } + + public boolean isReturnFast() { + return returnFast; + } + } + public static class ReturnInfo { private final ReturnLevel level; private final T data; @@ -59,18 +73,4 @@ public class Block implements Item> { return data; } } - - public enum ReturnLevel { - NONE(false), BREAK(false), CONTINUE(false), RETURN(true), FAIL(true); - - private final boolean returnFast; - - ReturnLevel(boolean returnFast) { - this.returnFast = returnFast; - } - - public boolean isReturnFast() { - return returnFast; - } - } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java index 09b408a99..d82c3c280 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class NumericConstant extends ConstantExpression { public NumericConstant(Number constant, Position position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java index 364ae62c7..83e397358 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class StringConstant extends ConstantExpression { public StringConstant(String constant, Position position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java index 3c5782ce7..4bb0dac53 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.terrascript.script; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.api.world.World; import java.util.Random; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java index 2a8cf3cfb..5352c7040 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index f0e22e5bd..80c30e236 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -1,6 +1,5 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; @@ -9,6 +8,7 @@ import com.dfsek.terra.addons.terrascript.script.functions.AbstractBlockFunction import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; import com.dfsek.terra.addons.terrascript.script.functions.DynamicBlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java index d77a38c3c..5d058b679 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index 519a6b61d..3fc8200a0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java index 5821edea1..6a9a1e1fe 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java @@ -1,13 +1,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index 2af112567..e68514ade 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index 5bfdb46bb..b55deb282 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index ae7e665ea..5f993e334 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -1,13 +1,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.Structure; import java.util.List; import java.util.stream.Collectors; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 04cb5a08f..f1bfa3094 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -2,11 +2,11 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index cfd7e2ce4..e41d2b782 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -3,12 +3,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java index bbc77f238..3a3ec57e3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java @@ -4,9 +4,9 @@ import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index e9c8ddde6..1bd03c399 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -4,13 +4,13 @@ import com.dfsek.terra.addons.terrascript.buffer.items.BufferedEntity; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 72ae130b0..04d0e83ef 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -3,14 +3,14 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.buffer.items.BufferedLootApplication; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index f1e731183..c56af421a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -4,13 +4,13 @@ import com.dfsek.terra.addons.terrascript.buffer.items.BufferedPulledBlock; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index a0cabc253..bec4e7e8c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -3,11 +3,11 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.buffer.items.BufferedStateManipulator; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index f238232ad..b0537906f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -3,14 +3,14 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.buffer.IntermediateBuffer; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java index 9ee43d9da..f58a9307a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java @@ -6,11 +6,6 @@ import java.util.Arrays; import java.util.Collection; public interface BooleanProperty extends Property { - @Override - default Class getType() { - return Boolean.class; - } - static BooleanProperty of(String name) { return new BooleanProperty() { private static final Collection BOOLEANS = Arrays.asList(true, false); @@ -26,4 +21,9 @@ public interface BooleanProperty extends Property { } }; } + + @Override + default Class getType() { + return Boolean.class; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 75f95caac..7e658a259 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -10,6 +10,7 @@ public interface EnumProperty> extends Property { static > EnumProperty of(String name, Class clazz) { return new EnumProperty() { private final Lazy> constants = Lazy.of(() -> Arrays.asList(clazz.getEnumConstants())); + @Override public Class getType() { return clazz; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java index 3dd25d8be..ab4cb39c6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java @@ -8,11 +8,6 @@ import java.util.Collection; import java.util.List; public interface IntProperty extends Property { - @Override - default Class getType() { - return Integer.class; - } - static IntProperty of(String name, int min, int max) { return new IntProperty() { private final Collection collection = Construct.construct(() -> { @@ -34,4 +29,9 @@ public interface IntProperty extends Property { } }; } + + @Override + default Class getType() { + return Integer.class; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index 7b95496a8..ac32fdb4a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -32,7 +32,7 @@ public enum Direction { case DOWN: return this; default: - return rotations[(this.rotation + rotation.getDegrees()/90) % 4]; + return rotations[(this.rotation + rotation.getDegrees() / 90) % 4]; } } 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 d842a799f..ae4b491eb 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 @@ -1,13 +1,13 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -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.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import java.util.Map; diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 46aa2de98..49e60ba6e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -1,7 +1,5 @@ package com.dfsek.terra.api.config; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.OpenRegistry; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 3b2641cbc..4ccf5302b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -15,9 +15,9 @@ import org.jetbrains.annotations.NotNull; */ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, Cancellable { private final Container container; - private LootTable table; private final ConfigPack pack; private final Structure structure; + private LootTable table; public LootPopulateEvent(Container container, LootTable table, ConfigPack pack, Structure structure) { this.container = container; diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index be8b19097..ad1de8b74 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -5,6 +5,30 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; public interface NoiseSampler { + static NoiseSampler zero() { + return new NoiseSampler() { + @Override + public double getNoise(double x, double y) { + return 0; + } + + @Override + public double getNoise(double x, double y, double z) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y) { + return 0; + } + + @Override + public double getNoiseSeeded(int seed, double x, double y, double z) { + return 0; + } + }; + } + /** * 2D noise at given position using current settings *

@@ -30,28 +54,4 @@ public interface NoiseSampler { double getNoiseSeeded(int seed, double x, double y); double getNoiseSeeded(int seed, double x, double y, double z); - - static NoiseSampler zero() { - return new NoiseSampler() { - @Override - public double getNoise(double x, double y) { - return 0; - } - - @Override - public double getNoise(double x, double y, double z) { - return 0; - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { - return 0; - } - - @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { - return 0; - } - }; - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java index bc041c4f5..70dece781 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java @@ -11,6 +11,7 @@ import java.util.function.Function; public interface RegistryFactory { /** * Create a generic OpenRegistry. + * * @param Type of registry. * @return New OpenRegistry */ @@ -18,8 +19,9 @@ public interface RegistryFactory { /** * Create an OpenRegistry with custom {@link TypeLoader} + * * @param loader Function to create loader. - * @param Type of registry. + * @param Type of registry. * @return New OpenRegistry. */ OpenRegistry create(Function, TypeLoader> loader); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java index d8248eda6..0d192ca29 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.structure; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; public interface ConfiguredStructure { ProbabilityCollection getStructure(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java index 3bbd10ecc..08e6cbab1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java @@ -5,15 +5,16 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.lang.reflect.Type; -import java.util.function.Supplier; public interface LoaderHolder { LoaderHolder applyLoader(Type type, TypeLoader loader); + default LoaderHolder applyLoader(Class type, TypeLoader loader) { return applyLoader((Type) type, loader); } LoaderHolder applyLoader(Type type, TemplateProvider> loader); + default LoaderHolder applyLoader(Class type, TemplateProvider> loader) { return applyLoader((Type) type, loader); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java b/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java index d52c40c97..5f9d29db7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/transform/Validator.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.transform.exception.TransformException; import java.util.Objects; public interface Validator { - boolean validate(T value) throws TransformException; - static Validator notNull() { return Objects::nonNull; } + + boolean validate(T value) throws TransformException; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java index 754fc1793..1614bac0d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java @@ -6,7 +6,6 @@ import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.lang.reflect.Type; import java.util.Arrays; import java.util.function.Consumer; import java.util.stream.Stream; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 2d949d3e0..46107669d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -37,8 +37,6 @@ public final class RotationUtil { } - - public static Axis getRotatedAxis(Axis orig, Rotation r) { Axis other = orig; final boolean shouldSwitch = r.equals(Rotation.CW_90) || r.equals(Rotation.CCW_90); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java index b48129685..e35376662 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java @@ -11,6 +11,10 @@ public final class Lazy { this.valueSupplier = valueSupplier; } + public static Lazy of(Supplier valueSupplier) { + return new Lazy<>(valueSupplier); + } + public T value() { if(!got && value == null) { got = true; @@ -18,8 +22,4 @@ public final class Lazy { } return value; } - - public static Lazy of(Supplier valueSupplier) { - return new Lazy<>(valueSupplier); - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java index 132196686..6002ab41f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java @@ -6,11 +6,10 @@ import org.jetbrains.annotations.NotNull; import java.util.Objects; public final class ImmutablePair { + private static final ImmutablePair NULL = new ImmutablePair<>(null, null); private final L left; private final R right; - private static final ImmutablePair NULL = new ImmutablePair<>(null, null); - private ImmutablePair(L left, R right) { this.left = left; this.right = right; @@ -21,6 +20,12 @@ public final class ImmutablePair { return new ImmutablePair<>(left, right); } + @Contract("-> new") + @SuppressWarnings("unchecked") + public static ImmutablePair ofNull() { + return (ImmutablePair) NULL; + } + public R getRight() { return right; } @@ -29,12 +34,6 @@ public final class ImmutablePair { return left; } - @Contract("-> new") - @SuppressWarnings("unchecked") - public static ImmutablePair ofNull() { - return (ImmutablePair) NULL; - } - @NotNull @Contract("-> new") public Pair mutable() { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java index 56fb983f9..6df4adedc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java @@ -3,11 +3,6 @@ package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.noise.NoiseSampler; public interface NoiseSeeded extends SeededBuilder { - @Override - NoiseSampler apply(Long seed); - - int getDimensions(); - static NoiseSeeded zero(int dimensions) { return new NoiseSeeded() { @Override @@ -21,4 +16,9 @@ public interface NoiseSeeded extends SeededBuilder { } }; } + + @Override + NoiseSampler apply(Long seed); + + int getDimensions(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java index c7a10706b..b44fceb64 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector2.java @@ -30,6 +30,11 @@ public class Vector2 implements Cloneable { return x; } + public Vector2 setX(double x) { + this.x = x; + return this; + } + public Vector2 clone() { try { return (Vector2) super.clone(); @@ -38,11 +43,6 @@ public class Vector2 implements Cloneable { } } - public Vector2 setX(double x) { - this.x = x; - return this; - } - /** * Get Z component * diff --git a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java index 69a40b39a..af6c313f1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/vector/Vector3.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.vector; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java b/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java index 9697243d4..ec711c6e5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java @@ -1,8 +1,5 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.world.ChunkAccess; -import com.dfsek.terra.api.world.World; - public interface Carver { void carve(World world, int chunkX, int chunkZ, ChunkAccess chunk); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index dffbcc34e..f60490ce2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -10,9 +10,9 @@ public interface ChunkAccess extends Handle { *

* Setting blocks outside the chunk's bounds does nothing. * - * @param x the x location in the chunk from 0-15 inclusive - * @param y the y location in the chunk from 0 (inclusive) - maxHeight (exclusive) - * @param z the z location in the chunk from 0-15 inclusive + * @param x the x location in the chunk from 0-15 inclusive + * @param y the y location in the chunk from 0 (inclusive) - maxHeight (exclusive) + * @param z the z location in the chunk from 0-15 inclusive * @param blockState the type to set the block to */ void setBlock(int x, int y, int z, @NotNull BlockState blockState); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index b8f4d0860..f50731eff 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,8 +1,8 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index 7358da114..710fbdeb9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.generator.Palette; public interface Generator { /** @@ -30,6 +29,7 @@ public interface Generator { double getWeight(); PaletteSettings getPaletteSettings(); + NoiseSampler getBiomeNoise(); double getElevationWeight(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 29df61c39..8438b9de0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -21,9 +21,9 @@ import com.dfsek.terra.api.command.exception.SwitchFormatException; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.inject.InjectorImpl; import net.jafama.FastMath; import java.lang.reflect.Field; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index b822ba723..4c6b447d5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.tectonic.LoaderRegistrar; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index b3c250912..33adc7438 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.dummy; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java index 19245dab1..f30b77814 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java @@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.math.GridSpawn; import com.dfsek.terra.api.structure.StructureSpawn; +import com.dfsek.terra.math.GridSpawn; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ef93540ee..fe8452618 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -13,7 +13,11 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.config.*; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -41,7 +45,15 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.Type; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index 47b89f178..396dec72c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -3,16 +3,12 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Set; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class ConfigPackTemplate implements ConfigTemplate { diff --git a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java index 903047f44..2526e86e9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java @@ -1,8 +1,8 @@ package com.dfsek.terra.math; -import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.util.FastRandom; import java.util.ArrayList; import java.util.List; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index 981dfc763..ee2c3b045 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -14,12 +14,11 @@ import java.util.Stack; public class ProfilerImpl implements Profiler { private static final ThreadLocal> THREAD_STACK = ThreadLocal.withInitial(Stack::new); private static final ThreadLocal>> TIMINGS = ThreadLocal.withInitial(HashMap::new); - private final List>> accessibleThreadMaps = new ArrayList<>(); - private volatile boolean running = false; - private static boolean instantiated = false; - private static final ThreadLocal SAFE = ThreadLocal.withInitial(() -> false); private static final ThreadLocal STACK_SIZE = ThreadLocal.withInitial(() -> new MutableInteger(0)); + private static boolean instantiated = false; + private final List>> accessibleThreadMaps = new ArrayList<>(); + private volatile boolean running = false; public ProfilerImpl() { if(instantiated) throw new IllegalStateException("Only one instance of Profiler may exist!"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 2dfb6ebbd..5fd1d6968 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -21,8 +21,8 @@ import java.util.stream.Collectors; * @param */ public class OpenRegistryImpl implements OpenRegistry { - private final Map> objects; private static final Entry NULL = new Entry<>(null); + private final Map> objects; public OpenRegistryImpl() { objects = new HashMap<>(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java index d9c0d6e81..bf84be146 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java @@ -20,6 +20,7 @@ public class RegistryFactoryImpl implements RegistryFactory { public OpenRegistry create(Function, TypeLoader> loader) { return new OpenRegistryImpl<>() { private final Lazy> loaderCache = Lazy.of(() -> loader.apply(this)); + @Override public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { return loaderCache.value().load(type, o, configLoader); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 03e75e1bd..9963508bb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -11,6 +11,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { private final BiConsumer> callback; private final TerraPlugin main; + public ConfigTypeRegistry(TerraPlugin main, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 18594d9a4..e8490d644 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -6,9 +6,9 @@ import com.dfsek.terra.addon.PreLoadAddon; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.api.injection.exception.InjectionException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index c7c1e023f..76e487387 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -72,7 +72,7 @@ public class TerraWorldImpl implements TerraWorld { return palette.get(level, x, y, z); } /* else if(y <= biome.getConfig().getSeaLevel()) { return biome.getConfig().getOceanPalette().get(biome.getConfig().getSeaLevel() - y, x, y, z); - } */else return air; + } */ else return air; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index d795b82c1..ab1ed2323 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,8 +1,8 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; diff --git a/common/implementation/src/test/java/command/CommandTest.java b/common/implementation/src/test/java/command/CommandTest.java index 3b6665a6b..1bd744621 100644 --- a/common/implementation/src/test/java/command/CommandTest.java +++ b/common/implementation/src/test/java/command/CommandTest.java @@ -2,7 +2,6 @@ package command; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; @@ -15,6 +14,7 @@ import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.command.exception.InvalidArgumentsException; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.entity.CommandSender; +import com.dfsek.terra.commands.TerraCommandManager; import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java index 41c99a269..379ca5e35 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addon; -import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.addon.exception.CircularDependencyException; +import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Depends; diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 7030094e7..07542d899 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -14,10 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - - - - "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") 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 9e142f520..df69e303f 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 @@ -14,15 +14,12 @@ import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.util.logging.DebugLogger; -import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; @@ -45,11 +42,14 @@ 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; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; +import com.dfsek.terra.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.world.TerraWorldImpl; import io.papermc.lib.PaperLib; import org.bstats.bukkit.Metrics; @@ -68,23 +68,6 @@ import java.util.Objects; public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { - private final Map generatorMap = new HashMap<>(); - private final Map worldMap = new HashMap<>(); - private final Map worlds = new HashMap<>(); - - private final Profiler profiler = new ProfilerImpl(); - - private final ConfigRegistry registry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(registry); - - private final PluginConfig config = new PluginConfigImpl(); - private final ItemHandle itemHandle = new BukkitItemHandle(); - private WorldHandle handle = new BukkitWorldHandle(); - private final GenericLoaders genericLoaders = new GenericLoaders(this); - private DebugLogger debugLogger; - - - private final EventManager eventManager = new EventManagerImpl(this); public static final BukkitVersion BUKKIT_VERSION; static { @@ -97,9 +80,20 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { else BUKKIT_VERSION = BukkitVersion.UNKNOWN; } + private final Map generatorMap = new HashMap<>(); + private final Map worldMap = new HashMap<>(); + private final Map worlds = new HashMap<>(); + private final Profiler profiler = new ProfilerImpl(); + private final ConfigRegistry registry = new ConfigRegistry(); + private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(registry); + private final PluginConfig config = new PluginConfigImpl(); + private final ItemHandle itemHandle = new BukkitItemHandle(); + private final GenericLoaders genericLoaders = new GenericLoaders(this); + private final EventManager eventManager = new EventManagerImpl(this); private final AddonRegistry addonRegistry = new AddonRegistry(new BukkitAddon(this), this); private final LockedRegistryImpl addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); - + private WorldHandle handle = new BukkitWorldHandle(); + private DebugLogger debugLogger; public boolean reload() { config.load(this); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index b8ce1133d..cf337d6b0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -2,13 +2,13 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.transform.MapTransform; -import com.dfsek.terra.transform.TransformerImpl; -import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; +import com.dfsek.terra.transform.MapTransform; +import com.dfsek.terra.transform.TransformerImpl; +import com.dfsek.terra.util.FastRandom; import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -22,12 +22,6 @@ import org.bukkit.event.world.StructureGrowEvent; * Listener for events on all implementations. */ public class CommonListener implements Listener { - private final TerraPlugin main; - - public CommonListener(TerraPlugin main) { - this.main = main; - } - private static final TransformerImpl TREE_TYPE_STRING_TRANSFORMER = new TransformerImpl.Builder() .addTransform(new MapTransform() .add(TreeType.COCOA_TREE, "JUNGLE_COCOA") @@ -38,6 +32,11 @@ public class CommonListener implements Listener { .add(TreeType.MEGA_REDWOOD, "MEGA_SPRUCE") .add(TreeType.SWAMP, "SWAMP_OAK")) .addTransform(TreeType::toString).build(); + private final TerraPlugin main; + + public CommonListener(TerraPlugin main) { + this.main = main; + } @EventHandler(priority = EventPriority.HIGHEST) public void onSaplingGrow(StructureGrowEvent e) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 63b5bb71a..7c8bb5712 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.population; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; @@ -10,6 +9,7 @@ import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitWorld; +import com.dfsek.terra.util.FastRandom; import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; @@ -31,6 +31,12 @@ public class PopulationManager extends BlockPopulator { this.main = main; } + public static File getDataFolder(World w) { + File f = new File(((BukkitWorld) w).getWorldFolder(), "gaea"); + f.mkdirs(); + return f; + } + @SuppressWarnings("unchecked") public synchronized void saveBlocks(World w) throws IOException { File f = new File(getDataFolder(w), "chunks.bin"); @@ -44,13 +50,6 @@ public class PopulationManager extends BlockPopulator { needsPop.addAll((HashSet) SerializationUtil.fromFile(f)); } - public static File getDataFolder(World w) { - File f = new File(((BukkitWorld) w).getWorldFolder(), "gaea"); - f.mkdirs(); - return f; - } - - // Synchronize to prevent chunks from being queued for population multiple times. public synchronized void checkNeighbors(int x, int z, World world) { BukkitWorld w = (BukkitWorld) world; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 965c4db63..93c046414 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,17 +1,15 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.enums.Axis; import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.RailShape; -import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.transform.MapTransform; -import com.dfsek.terra.transform.TransformerImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; @@ -22,6 +20,8 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; +import com.dfsek.terra.transform.MapTransform; +import com.dfsek.terra.transform.TransformerImpl; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index e7b1ddc3f..28fc701f5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 13eef05f3..7ff0a80aa 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index 888257dd8..5f3a4460f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -1,21 +1,9 @@ package com.dfsek.terra.bukkit.world.block.data; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.bukkit.TerraBukkitPlugin; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Material; -import org.bukkit.block.data.AnaloguePowerable; -import org.bukkit.block.data.Directional; -import org.bukkit.block.data.MultipleFacing; -import org.bukkit.block.data.Orientable; -import org.bukkit.block.data.Rail; -import org.bukkit.block.data.Rotatable; -import org.bukkit.block.data.Waterlogged; -import org.bukkit.block.data.type.RedstoneWire; -import org.bukkit.block.data.type.Slab; -import org.bukkit.block.data.type.Stairs; -import org.bukkit.block.data.type.Wall; public class BukkitBlockState implements BlockState { private org.bukkit.block.data.BlockData delegate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 6b03e33ce..a879a0358 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.world.block.state; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; 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 620058d48..07dd85f99 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 @@ -19,7 +19,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; @@ -31,7 +30,6 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; @@ -41,6 +39,7 @@ 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; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; @@ -57,6 +56,7 @@ import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; +import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.world.TerraWorldImpl; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; @@ -86,24 +86,17 @@ import java.util.Map; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { - private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); private static TerraFabricPlugin instance; + private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); private final Map> worldMap = new HashMap<>(); private final Map> loaders = new HashMap<>(); private final Map>> objectLoaders = new HashMap<>(); - - public Map> getWorldMap() { - return worldMap; - } - private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); - private final Profiler profiler = new ProfilerImpl(); - private final Logger logger = new Logger() { @Override public void info(String message) { @@ -120,18 +113,25 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { log4jLogger.error(message); } }; - private final DebugLogger debugLogger = new DebugLogger(logger); private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); private final ConfigRegistry configRegistry = new ConfigRegistry(); private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(configRegistry); - private final FabricAddon fabricAddon = new FabricAddon(); private final AddonRegistry addonRegistry = new AddonRegistry(fabricAddon, this); private final com.dfsek.terra.api.registry.Registry addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); - private final PluginConfig config = new PluginConfigImpl(); + private final CommandManager manager = new TerraCommandManager(this); + private File dataFolder; + + public static TerraFabricPlugin getInstance() { + return instance; + } + + public Map> getWorldMap() { + return worldMap; + } private ProtoBiome parseBiome(String id) throws LoadException { Identifier identifier = Identifier.tryParse(id); @@ -139,17 +139,10 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return new ProtoBiome(identifier); } - private File dataFolder; - private final CommandManager manager = new TerraCommandManager(this); - public CommandManager getManager() { return manager; } - public static TerraFabricPlugin getInstance() { - return instance; - } - @Override public WorldHandle getWorldHandle() { return worldHandle; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java index 3f2e6926f..a4d58fe40 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java @@ -1,17 +1,13 @@ package com.dfsek.terra.fabric.block; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.Property; import com.dfsek.terra.api.block.state.properties.base.Properties; -import com.dfsek.terra.api.block.state.properties.enums.Axis; -import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.util.generic.Construct; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.fabric.mixin.access.StateAccessor; import com.dfsek.terra.fabric.util.FabricAdapter; -import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.block.Blocks; import net.minecraft.block.enums.BlockHalf; import net.minecraft.block.enums.RailShape; @@ -19,7 +15,6 @@ import net.minecraft.block.enums.WallShape; import net.minecraft.block.enums.WireConnection; import net.minecraft.util.math.Direction; import net.minecraft.util.registry.Registry; -import scala.collection.immutable.Stream; import java.util.HashMap; import java.util.Map; 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 759070aaa..ae25b2471 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 @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.util.FastRandom; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; @@ -11,6 +10,7 @@ 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.util.FastRandom; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 08c64b28a..efa13a123 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -21,6 +21,7 @@ import java.util.Locale; public class FabricWorldHandle implements WorldHandle { private static final com.dfsek.terra.api.block.state.BlockState AIR = FabricAdapter.adapt(Blocks.AIR.getDefaultState()); + @Override public FabricBlockState createBlockData(String data) { BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index e8431affb..29a0bde0a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index e09b3f1b6..99b591d8d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.fabric.util.FabricAdapter; import net.minecraft.block.Block; import net.minecraft.block.Blocks; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java index 2f0c36e8f..9e3a9fb3a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java @@ -15,13 +15,13 @@ import org.spongepowered.asm.mixin.Shadow; @Mixin(SignBlockEntity.class) @Implements(@Interface(iface = Sign.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class SignBlockEntityMixin { - @Shadow - public abstract void setTextOnRow(int row, Text text); - @Shadow @Final private Text[] texts; + @Shadow + public abstract void setTextOnRow(int row, Text text); + public @NotNull String[] terra$getLines() { String[] lines = new String[texts.length]; for(int i = 0; i < texts.length; i++) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 5beea9e15..c30547d6d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 04c75ab9e..c71badb2a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 71a134203..443af6128 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.Axis; +import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.block.state.properties.enums.RailShape; import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.block.state.properties.enums.WallHeight; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index ef68a3130..63def136b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -5,11 +5,8 @@ import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; -import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; import net.minecraft.block.entity.LootableContainerBlockEntity; @@ -27,11 +24,8 @@ import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.carver.ConfiguredCarver; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.ConfiguredStructureFeature; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Locale; import java.util.Map; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java index f00e19a6d..382df94e7 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java @@ -49,9 +49,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { - private final long seed; - private final DefaultChunkGenerator3D delegate; - private final TerraBiomeSource biomeSource; public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID()) ).apply(config, config.stable(TerraForgePlugin.getInstance().getConfigRegistry()::get)))); @@ -60,12 +57,10 @@ public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements Genera Codec.LONG.fieldOf("seed").stable().forGetter(generator -> generator.seed), PACK_CODEC.fieldOf("pack").stable().forGetter(generator -> generator.pack)) .apply(instance, instance.stable(ForgeChunkGeneratorWrapper::new))); + private final long seed; + private final DefaultChunkGenerator3D delegate; + private final TerraBiomeSource biomeSource; private final ConfigPack pack; - - public ConfigPack getPack() { - return pack; - } - private DimensionType dimensionType; public ForgeChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { @@ -79,6 +74,10 @@ public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements Genera this.seed = seed; } + public ConfigPack getPack() { + return pack; + } + @Override protected @NotNull Codec 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 fb97dca84..50b9dcd87 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -7,15 +7,12 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.util.logging.DebugLogger; -import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; @@ -23,6 +20,7 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LanguageImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; import com.dfsek.terra.profiler.ProfilerImpl; @@ -30,6 +28,8 @@ import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; +import com.dfsek.terra.util.logging.DebugLogger; +import com.dfsek.terra.util.logging.JavaLogger; import com.dfsek.terra.world.TerraWorldImpl; import java.io.File; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java index a4a9cc0d1..9cd98c01d 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectBlockEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.vector.Vector3; public class DirectBlockEntity implements BlockEntity { diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 0d87e5dde..fc99eaebe 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -1,8 +1,8 @@ package com.dfsek.terra.platform; import com.dfsek.terra.DirectUtils; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java index 95492c9e6..fd102bfb1 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java @@ -1,7 +1,7 @@ package com.dfsek.terra.platform; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; import net.querz.nbt.tag.CompoundTag; public class State implements BlockState, BlockType { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 977c133d3..d9ff86d23 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -6,21 +6,21 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LanguageImpl; +import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; +import com.dfsek.terra.util.logging.DebugLogger; import com.google.inject.Inject; import org.slf4j.Logger; import org.spongepowered.api.config.ConfigDir; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java index fe9c1a5e9..4fb0a2cf2 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java @@ -1,7 +1,7 @@ package com.dfsek.terra.sponge.world.block.data; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; public class SpongeBlockState implements BlockState { private final org.spongepowered.api.block.BlockState delegate; From 27d9716c5daf4318f1ce3b6d9ce530e58fa7edcf Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 14:26:37 -0700 Subject: [PATCH 0170/1529] update to Tectonic 2.0.0 --- common/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index efa3c3d9c..a4ce7d7ce 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -15,7 +15,7 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek:Tectonic:1.4.0") + "implementation"("com.dfsek.tectonic:common:2.0.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") From 0dfde174adbf6d174c1b9cb7094a501dffb5af9d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 15:23:28 -0700 Subject: [PATCH 0171/1529] begin tectonic update process --- .../config/BiomeProviderBuilderLoader.java | 5 +-- .../pipeline/config/SourceBuilderLoader.java | 7 +++-- .../config/stage/StageBuilderLoader.java | 19 ++++++------ .../terra/addons/biome/BiomeConfigType.java | 2 +- .../terra/addons/biome/BiomeTemplate.java | 31 +++---------------- .../biome/holder/PaletteHolderLoader.java | 5 +-- .../terra/addons/carver/CarverTemplate.java | 26 ++-------------- .../terra/addons/flora/FloraTemplate.java | 13 ++------ .../config/NoiseSamplerBuilderLoader.java | 8 ++--- .../dfsek/terra/addons/ore/OreTemplate.java | 10 ++---- .../addons/palette/PaletteConfigType.java | 2 +- .../terra/addons/palette/PaletteTemplate.java | 5 ++- .../palette/palette/PaletteLayerLoader.java | 9 +++--- .../addons/structure/StructureTemplate.java | 6 ++-- .../dfsek/terra/addons/tree/TreeTemplate.java | 6 ++-- common/api/build.gradle.kts | 2 +- .../terra/api/tectonic/LoaderHolder.java | 6 ++-- .../terra/config/pack/ConfigPackImpl.java | 3 +- .../terra/registry/CheckedRegistryImpl.java | 3 +- .../terra/registry/LockedRegistryImpl.java | 3 +- .../terra/registry/OpenRegistryImpl.java | 5 +-- .../terra/registry/RegistryFactoryImpl.java | 3 +- 22 files changed, 63 insertions(+), 116 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java index 2e95f8784..bbd40e302 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -5,11 +5,12 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; public class BiomeProviderBuilderLoader implements TypeLoader { @Override - public BiomeProviderBuilder load(Type t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadClass(BiomePipelineTemplate.class, c); // TODO: actually implement this lol + public BiomeProviderBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + return loader.loadType(BiomePipelineTemplate.class, c); // TODO: actually implement this lol } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java index 8b79abd8b..bb0a082de 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java @@ -6,19 +6,20 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") public class SourceBuilderLoader implements TypeLoader { @Override - public SourceSeeded load(Type t, Object c, ConfigLoader loader) throws LoadException { + public SourceSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map source = (Map) c; - BiomeSource.Type type = loader.loadClass(BiomeSource.Type.class, source.get("type")); + BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); if(type == BiomeSource.Type.NOISE) { - return loader.loadClass(NoiseSourceTemplate.class, source); + return loader.loadType(NoiseSourceTemplate.class, source); } throw new LoadException("No such loader type: " + type); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java index 21a242789..762e0eb66 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java @@ -13,13 +13,14 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorT import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") public class StageBuilderLoader implements TypeLoader { @Override - public StageSeeded load(Type t, Object c, ConfigLoader loader) throws LoadException { + public StageSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map raw = (Map) c; if(raw.size() != 1) throw new LoadException("Illegal stage map size: " + raw.size()); @@ -33,22 +34,22 @@ public class StageBuilderLoader implements TypeLoader { Map mutator = (Map) entry.getValue(); if(entry.getKey().equals("expand")) { - ExpanderStage.Type stageType = loader.loadClass(ExpanderStage.Type.class, mutator.get("type")); + ExpanderStage.Type stageType = loader.loadType(ExpanderStage.Type.class, mutator.get("type")); if(stageType.equals(ExpanderStage.Type.FRACTAL)) { - return loader.loadClass(ExpanderStageTemplate.class, mutator); + return loader.loadType(ExpanderStageTemplate.class, mutator); } else throw new LoadException("No such expander \"" + stageType + "\""); } else if(entry.getKey().equals("mutate")) { - switch(loader.loadClass(MutatorStage.Type.class, mutator.get("type"))) { + switch(loader.loadType(MutatorStage.Type.class, mutator.get("type"))) { case SMOOTH: - return loader.loadClass(SmoothMutatorTemplate.class, mutator); + return loader.loadType(SmoothMutatorTemplate.class, mutator); case REPLACE: - return loader.loadClass(ReplaceMutatorTemplate.class, mutator); + return loader.loadType(ReplaceMutatorTemplate.class, mutator); case REPLACE_LIST: - return loader.loadClass(ReplaceListMutatorTemplate.class, mutator); + return loader.loadType(ReplaceListMutatorTemplate.class, mutator); case BORDER: - return loader.loadClass(BorderMutatorTemplate.class, mutator); + return loader.loadType(BorderMutatorTemplate.class, mutator); case BORDER_LIST: - return loader.loadClass(BorderListMutatorTemplate.class, mutator); + return loader.loadType(BorderListMutatorTemplate.class, mutator); default: throw new LoadException("No such mutator type \"" + mutator.get("type")); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 556faf169..5e255b2d4 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -41,7 +41,7 @@ public class BiomeConfigType implements ConfigType if(c.equals("SELF")) return null; BiomeBuilder obj = registry.get((String) c); if(obj == null) - throw new LoadException("No such " + t.getTypeName() + " matching \"" + c + "\" was found in this registry."); + throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); return obj; }); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 71a091bfb..8ac3e1ad4 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; @@ -32,139 +32,116 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl private final ConfigPack pack; @Value("id") + @Final private String id; @Value("extends") + @Final @Default private List extended = Collections.emptyList(); @Value("variables") - @Abstractable @Default private Map variables = new HashMap<>(); @Value("beta.carving.equation") - @Abstractable @Default private NoiseSeeded carvingEquation = NoiseSeeded.zero(3); @Value("palette") - @Abstractable private PaletteHolder palette; @Value("slant") - @Abstractable @Default private SlantHolder slant = null; @Value("vanilla") - @Abstractable private ProbabilityCollection vanilla; @Value("biome-noise") @Default - @Abstractable private NoiseSeeded biomeNoise = NoiseSeeded.zero(2); @Value("blend.distance") - @Abstractable @Default private int blendDistance = 3; @Value("blend.weight") - @Abstractable @Default private double blendWeight = 1; @Value("blend.step") - @Abstractable @Default private int blendStep = 4; @Value("structures") - @Abstractable @Default private List structures = new ArrayList<>(); @Value("noise") - @Abstractable private NoiseSeeded noiseEquation; /*@Value("ores") - @Abstractable @Default private OreHolder oreHolder = new OreHolder();*/ @Value("ocean.level") - @Abstractable @Default private int seaLevel = 62; @Value("ocean.palette") - @Abstractable private Palette oceanPalette; @Value("elevation.equation") @Default - @Abstractable private NoiseSeeded elevationEquation = NoiseSeeded.zero(2); @Value("elevation.weight") @Default - @Abstractable private double elevationWeight = 1; /*@Value("flora") - @Abstractable @Default private List flora = new ArrayList<>(); @Value("trees") - @Abstractable @Default private List trees = new ArrayList<>();*/ @Value("slabs.enable") - @Abstractable @Default private boolean doSlabs = false; @Value("slabs.threshold") - @Abstractable @Default private double slabThreshold = 0.0075D; @Value("slabs.palettes") - @Abstractable @Default private Map slabPalettes; @Value("slabs.stair-palettes") - @Abstractable @Default private Map stairPalettes; @Value("interpolate-elevation") - @Abstractable @Default private boolean interpolateElevation = true; @Value("color") + @Final @Default private int color = 0; @Value("tags") @Default - @Abstractable private Set tags = new HashSet<>(); /*@Value("carving") - @Abstractable @Default private Map carvers = new HashMap<>();*/ @Value("colors") - @Abstractable @Default private Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java index 28a99780c..332c0bb44 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.world.generator.Palette; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.List; import java.util.Map; @@ -12,12 +13,12 @@ import java.util.Map; public class PaletteHolderLoader implements TypeLoader { @SuppressWarnings("unchecked") @Override - public PaletteHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public PaletteHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { List> palette = (List>) o; PaletteHolderBuilder builder = new PaletteHolderBuilder(); for(Map layer : palette) { for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); + builder.add(entry.getValue(), configLoader.loadType(Palette.class, entry.getKey())); } } return builder.build(); diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index f648190ec..dfa58e0a5 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -1,7 +1,8 @@ package com.dfsek.terra.addons.carver; -import com.dfsek.tectonic.annotations.Abstractable; + import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -15,100 +16,79 @@ import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class CarverTemplate implements AbstractableTemplate { @Value("id") + @Final private String id; @Value("step") - @Abstractable @Default private int step = 2; @Value("recalculate-magnitude") @Default - @Abstractable private double recaclulateMagnitude = 4; @Value("recalculate-direction") - @Abstractable @Default private Range recalc = new ConstantRange(8, 10); @Value("length") - @Abstractable private Range length; @Value("start.x") - @Abstractable private double startX; @Value("start.y") - @Abstractable private double startY; @Value("start.z") - @Abstractable private double startZ; @Value("start.radius.x") - @Abstractable private String radMX; @Value("start.radius.y") - @Abstractable private String radMY; @Value("start.radius.z") - @Abstractable private String radMZ; @Value("start.height") - @Abstractable private Range height; @Value("cut.bottom") - @Abstractable @Default private int cutBottom = 0; @Value("cut.top") - @Abstractable @Default private int cutTop = 0; @Value("mutate.x") - @Abstractable private double mutateX; @Value("mutate.y") - @Abstractable private double mutateY; @Value("mutate.z") - @Abstractable private double mutateZ; @Value("palette.top") - @Abstractable private CarverPalette top; @Value("palette.bottom") - @Abstractable private CarverPalette bottom; @Value("palette.outer") - @Abstractable private CarverPalette outer; @Value("palette.inner") - @Abstractable private CarverPalette inner; @Value("shift") - @Abstractable @Default private Map shift = new HashMap<>(); @Value("update") - @Abstractable @Default private MaterialSet update = new MaterialSet(); diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index e718ed4a1..e8a597174 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.flora; -import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -10,55 +10,46 @@ import com.dfsek.terra.api.util.collection.MaterialSet; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class FloraTemplate implements AbstractableTemplate { @Value("id") + @Final private String id; @Value("spawnable") - @Abstractable private MaterialSet spawnable; @Value("spawn-blacklist") - @Abstractable @Default private boolean spawnBlacklist = false; @Value("replaceable") - @Abstractable @Default private MaterialSet replaceable = MaterialSet.empty(); @Value("irrigable") - @Abstractable @Default private MaterialSet irrigable = null; @Value("rotatable") - @Abstractable @Default private MaterialSet rotatable = MaterialSet.empty(); @Value("physics") - @Abstractable @Default private boolean doPhysics = false; @Value("ceiling") - @Abstractable @Default private boolean ceiling = false; @Value("search") @Default - @Abstractable private TerraFlora.Search search = TerraFlora.Search.UP; @Value("max-placements") @Default - @Abstractable private int maxPlacements = -1; @Value("irrigable-offset") - @Abstractable @Default private int irrigableOffset; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 630b29556..ec6fcebec 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.noise.config; -import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.config.MapConfiguration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.seeded.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import java.lang.reflect.Type; +import java.lang.reflect.AnnotatedType; import java.util.Locale; import java.util.Map; @@ -23,14 +23,14 @@ public class NoiseSamplerBuilderLoader implements TypeLoader { } @Override - public NoiseSeeded load(Type t, Object c, ConfigLoader loader) throws LoadException { + public NoiseSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map map = (Map) c; try { if(!noiseRegistry.contains((String) map.get("type"))) { throw new LoadException("No such noise function: " + map.get("type")); } ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); - loader.load(normalizerTemplate, new Configuration(map)); + loader.load(normalizerTemplate, new MapConfiguration(map)); return normalizerTemplate.get(); } catch(ConfigException e) { throw new LoadException("Unable to load noise function: ", e); diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index eb6b7dbf5..ee5023639 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.ore; -import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -15,37 +15,31 @@ import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class OreTemplate implements AbstractableTemplate { @Value("id") + @Final private String id; @Value("material") - @Abstractable private BlockState material; @Value("material-overrides") @Default - @Abstractable private Map materials = new HashMap<>(); @Value("replace") - @Abstractable private MaterialSet replaceable; @Value("physics") - @Abstractable @Default private boolean physics = false; @Value("size") - @Abstractable private Range size; @Value("deform") - @Abstractable @Default private double deform = 0.75D; @Value("deform-frequency") - @Abstractable @Default private double deformFrequency = 0.1D; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index cfb172959..8e05d56c5 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -44,7 +44,7 @@ public class PaletteConfigType implements ConfigType { return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. Palette obj = registry.get((String) c); if(obj == null) - throw new LoadException("No such " + t.getTypeName() + " matching \"" + c + "\" was found in this registry."); + throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); return obj; }); } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index cf3326cb6..6dc9e03e2 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.palette; -import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -12,15 +12,14 @@ import java.util.List; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class PaletteTemplate implements AbstractableTemplate { @Value("noise") - @Abstractable @Default private NoiseSeeded noise = NoiseSeeded.zero(2); @Value("id") + @Final private String id; @Value("layers") - @Abstractable private List palette; public String getID() { diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index b8e8093d2..90b7146f2 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -8,16 +8,17 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") public class PaletteLayerLoader implements TypeLoader { - private static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; + private static final AnnotatedType BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; static { try { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getGenericType(); + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getAnnotatedType(); } catch(NoSuchFieldException e) { throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e); } @@ -27,13 +28,13 @@ public class PaletteLayerLoader implements TypeLoader { private ProbabilityCollection blockStateProbabilityCollection; @Override - public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public PaletteLayerHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { - sampler = configLoader.loadClass(NoiseSeeded.class, map.get("noise")).apply(2403L); + sampler = configLoader.loadType(NoiseSeeded.class, map.get("noise")).apply(2403L); } if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index dfb23f8ed..7bde46e31 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure; -import com.dfsek.tectonic.annotations.Abstractable; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -12,18 +12,16 @@ import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { @Value("id") + @Final private String id; @Value("scripts") - @Abstractable private ProbabilityCollection structure; @Value("spawn.start") - @Abstractable private Range y; @Value("spawn") - @Abstractable private StructureSpawn spawn; public String getID() { diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java index 61b213859..e10aedd46 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.tree; -import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.structure.Structure; @@ -11,19 +11,17 @@ import com.dfsek.terra.api.util.collection.ProbabilityCollection; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate implements AbstractableTemplate { @Value("scripts") - @Abstractable private ProbabilityCollection structure; @Value("id") + @Final private String id; @Value("y-offset") - @Abstractable @Default private int yOffset = 0; @Value("spawnable") - @Abstractable private MaterialSet spawnable; public ProbabilityCollection getStructures() { diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index a4ce7d7ce..942d4654f 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -15,7 +15,7 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") - "implementation"("com.dfsek.tectonic:common:2.0.0") + "shadedApi"("com.dfsek.tectonic:common:2.0.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") diff --git a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java index 08e6cbab1..21339a150 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.tectonic; -import com.dfsek.tectonic.abstraction.TemplateProvider; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.lang.reflect.Type; +import java.util.function.Supplier; public interface LoaderHolder { LoaderHolder applyLoader(Type type, TypeLoader loader); @@ -13,9 +13,9 @@ public interface LoaderHolder { return applyLoader((Type) type, loader); } - LoaderHolder applyLoader(Type type, TemplateProvider> loader); + LoaderHolder applyLoader(Type type, Supplier> loader); - default LoaderHolder applyLoader(Class type, TemplateProvider> loader) { + default LoaderHolder applyLoader(Class type, Supplier> loader) { return applyLoader((Type) type, loader); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index fe8452618..fb2db617c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -54,6 +54,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.function.Supplier; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -204,7 +205,7 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public ConfigPackImpl applyLoader(Type type, TemplateProvider> loader) { + public ConfigPackImpl applyLoader(Type type, Supplier> loader) { abstractConfigLoader.registerLoader(type, loader); selfLoader.registerLoader(type, loader); return this; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index e1858281e..2df4d2b38 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Collection; import java.util.Set; @@ -66,7 +67,7 @@ public class CheckedRegistryImpl implements CheckedRegistry { } @Override - public T load(Type t, Object c, ConfigLoader loader) throws LoadException { + public T load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return registry.load(t, c, loader); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java index c98062a53..76f6cf955 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.Registry; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Collection; import java.util.Set; @@ -53,7 +54,7 @@ public class LockedRegistryImpl implements Registry { } @Override - public T load(Type t, Object c, ConfigLoader loader) throws LoadException { + public T load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return registry.load(t, c, loader); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 5fd1d6968..acb0fbde2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Collection; import java.util.HashMap; @@ -33,10 +34,10 @@ public class OpenRegistryImpl implements OpenRegistry { } @Override - public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { T obj = get((String) o); if(obj == null) - throw new LoadException("No such " + type.getTypeName() + " matching \"" + o + "\" was found in this registry."); + throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + "\" was found in this registry."); return obj; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java index bf84be146..dab4171e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.Lazy; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.function.Function; @@ -22,7 +23,7 @@ public class RegistryFactoryImpl implements RegistryFactory { private final Lazy> loaderCache = Lazy.of(() -> loader.apply(this)); @Override - public T load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { return loaderCache.value().load(type, o, configLoader); } }; From f12d23b4cb08c5d3f1aa6927ed05fecb60df3bae Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 15:25:46 -0700 Subject: [PATCH 0172/1529] create ConfigurationLoadEvent --- .../events/config/ConfigurationLoadEvent.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java new file mode 100644 index 000000000..8565c7c17 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.api.event.events.config; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.event.events.PackEvent; + +import java.util.function.Consumer; + +public class ConfigurationLoadEvent implements PackEvent { + private final ConfigPack pack; + private final Loader loader; + + private final Consumer consumer; + + public ConfigurationLoadEvent(ConfigPack pack, Loader loader, Consumer consumer) { + this.pack = pack; + this.loader = loader; + this.consumer = consumer; + } + + @Override + public ConfigPack getPack() { + return pack; + } + + public Loader getLoader() { + return loader; + } + + public void register(Configuration config) { + consumer.accept(config); + } +} From d2aa7cf5d55da671bc0a5bae210ec1b5fb9e720d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 15:28:29 -0700 Subject: [PATCH 0173/1529] create language-yaml addons --- common/addons/language-yaml/build.gradle.kts | 47 ++++++++++++++++++++ settings.gradle.kts | 1 + 2 files changed, 48 insertions(+) create mode 100644 common/addons/language-yaml/build.gradle.kts diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts new file mode 100644 index 000000000..075399c88 --- /dev/null +++ b/common/addons/language-yaml/build.gradle.kts @@ -0,0 +1,47 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "shadedApi"("com.dfsek.tectonic:yaml:2.0.0") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 3c6f40872..6056f412e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -32,6 +32,7 @@ include("common:addons:config-tree") include("common:addons:structure-terrascript-loader") +include("common:addons:language-yaml") From c21038a21e74df6ad30c1eb159c27407b11fdcbc Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 15:47:19 -0700 Subject: [PATCH 0174/1529] implement YAML addon --- .../dfsek/terra/addons/yaml/YamlAddon.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java new file mode 100644 index 000000000..116cb5e70 --- /dev/null +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.yaml; + +import com.dfsek.tectonic.yaml.YamlConfiguration; +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.ConfigurationLoadEvent; +import com.dfsek.terra.api.injection.annotations.Inject; + +@Addon("language-yaml") +@Version("1.0.0") +@Author("Terra") +public class YamlAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void loadYamlConfigs(ConfigurationLoadEvent event) { + event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> event.register(new YamlConfiguration(entry.getValue(), entry.getKey())))); + } +} From 19672b10830f043a69457fa86a06aa3c34537ddb Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 20:37:53 -0700 Subject: [PATCH 0175/1529] update to tectonic 2.0.0 --- common/addons/language-yaml/build.gradle.kts | 2 -- common/api/build.gradle.kts | 5 +++-- .../com/dfsek/terra/api/config/Loader.java | 6 ------ .../dfsek/terra/config/PluginConfigImpl.java | 3 ++- .../terra/config/fileloaders/LoaderImpl.java | 16 --------------- .../dfsek/terra/config/lang/LanguageImpl.java | 3 ++- .../config/loaders/LinkedHashMapLoader.java | 12 ++++++----- .../config/loaders/MaterialSetLoader.java | 5 +++-- .../loaders/ProbabilityCollectionLoader.java | 10 ++++++---- .../terra/config/loaders/RangeLoader.java | 3 ++- .../loaders/config/BufferedImageLoader.java | 3 ++- .../loaders/config/GridSpawnLoader.java | 3 ++- .../terra/config/pack/ConfigPackImpl.java | 20 ++++++++++--------- .../dfsek/terra/fabric/TerraFabricPlugin.java | 10 +++++----- 14 files changed, 45 insertions(+), 56 deletions(-) diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 075399c88..07542d899 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -16,8 +16,6 @@ dependencies { "shadedApi"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") - "shadedApi"("com.dfsek.tectonic:yaml:2.0.0") - "testImplementation"("com.google.guava:guava:30.0-jre") } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 942d4654f..43ffb3413 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -13,9 +13,10 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek.tectonic:common:2.0.0") + + "shadedApi"("com.dfsek.tectonic:common:2.1.0") + "shadedApi"("com.dfsek.tectonic:yaml:2.1.0") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java index 6efc507f3..59cec4008 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -11,12 +11,6 @@ import java.util.Map; import java.util.Set; public interface Loader { - /** - * Do something with the InputStreams. - * - * @param consumer Something to do with the streams. - */ - Loader then(ExceptionalConsumer> consumer) throws ConfigException; Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index d7b1adecc..6951103c9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.JarUtil; @@ -80,7 +81,7 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con logger.info("Loading config values"); try(FileInputStream file = new FileInputStream(new File(main.getDataFolder(), "config.yml"))) { ConfigLoader loader = new ConfigLoader(); - loader.load(this, file); + loader.load(this, new YamlConfiguration(file, "config.yml")); if(dumpDefaultConfig) { // Don't dump default config if already loaded. try(JarFile jar = main.getModJar()) { JarUtil.copyResourcesToDirectory(jar, "packs", new File(main.getDataFolder(), "packs").toString()); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index f523a8329..8f1c17fa2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -1,6 +1,5 @@ package com.dfsek.terra.config.fileloaders; -import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.util.function.ExceptionalConsumer; @@ -16,21 +15,6 @@ import java.util.Set; public abstract class LoaderImpl implements Loader { protected final Map streams = new HashMap<>(); - /** - * Do something with the InputStreams. - * - * @param consumer Something to do with the streams. - */ - @Override - public Loader then(ExceptionalConsumer> consumer) throws ConfigException { - List list = new ArrayList<>(); - streams.forEach((id, stream) -> { - list.add(new Configuration(stream, id)); - }); - consumer.accept(list); - return this; - } - @Override public Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException { consumer.accept(new ArrayList<>(streams.keySet())); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java index 2227c2269..1b35fc82e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java @@ -2,6 +2,7 @@ package com.dfsek.terra.config.lang; import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.lang.Message; @@ -16,7 +17,7 @@ public class LanguageImpl implements com.dfsek.terra.api.lang.Language { private final Configuration configuration; public LanguageImpl(File file) throws IOException { - configuration = new Configuration(new FileInputStream(file)); + configuration = new YamlConfiguration(new FileInputStream(file), file.getName()); } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java index 5de7cbe9b..bfee3f438 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java @@ -4,6 +4,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; +import java.lang.reflect.AnnotatedParameterizedType; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.LinkedHashMap; @@ -12,13 +14,13 @@ import java.util.Map; @SuppressWarnings("unchecked") public class LinkedHashMapLoader implements TypeLoader> { @Override - public LinkedHashMap load(Type t, Object c, ConfigLoader loader) throws LoadException { + public LinkedHashMap load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map config = (Map) c; LinkedHashMap map = new LinkedHashMap<>(); - if(t instanceof ParameterizedType) { - ParameterizedType pType = (ParameterizedType) t; - Type key = pType.getActualTypeArguments()[0]; - Type value = pType.getActualTypeArguments()[1]; + if(t instanceof AnnotatedParameterizedType) { + AnnotatedParameterizedType pType = (AnnotatedParameterizedType) t; + AnnotatedType key = pType.getAnnotatedActualTypeArguments()[0]; + AnnotatedType value = pType.getAnnotatedActualTypeArguments()[1]; for(Map.Entry entry : config.entrySet()) { map.put(loader.loadType(key, entry.getKey()), loader.loadType(value, entry.getValue())); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index a397e1d77..67bb00628 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -6,19 +6,20 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collection.MaterialSet; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.List; @SuppressWarnings("unchecked") public class MaterialSetLoader implements TypeLoader { @Override - public MaterialSet load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public MaterialSet load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { List stringData = (List) o; MaterialSet set = new MaterialSet(); for(String string : stringData) { try { - set.add(configLoader.loadClass(BlockType.class, string)); + set.add(configLoader.loadType(BlockType.class, string)); } catch(NullPointerException e) { throw new LoadException("Invalid data identifier \"" + string + "\"", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 8aec1f63e..741c9d730 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -5,6 +5,8 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import java.lang.reflect.AnnotatedParameterizedType; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; @@ -13,12 +15,12 @@ import java.util.Map; @SuppressWarnings("unchecked") public class ProbabilityCollectionLoader implements TypeLoader> { @Override - public ProbabilityCollection load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public ProbabilityCollection load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { ProbabilityCollection collection = new ProbabilityCollection<>(); - if(type instanceof ParameterizedType) { - ParameterizedType pType = (ParameterizedType) type; - Type generic = pType.getActualTypeArguments()[0]; + if(type instanceof AnnotatedParameterizedType) { + AnnotatedParameterizedType pType = (AnnotatedParameterizedType) type; + AnnotatedType generic = pType.getAnnotatedActualTypeArguments()[0]; if(o instanceof Map) { Map map = (Map) o; for(Map.Entry entry : map.entrySet()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index bec15d16d..8ab1d7530 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -6,13 +6,14 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") public class RangeLoader implements TypeLoader { @Override - public Range load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + public Range load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; return new ConstantRange(map.get("min"), map.get("max")); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java index 0b450ea67..f50dc395f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.config.Loader; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.IOException; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; public class BufferedImageLoader implements TypeLoader { @@ -18,7 +19,7 @@ public class BufferedImageLoader implements TypeLoader { } @Override - public BufferedImage load(Type t, Object c, ConfigLoader loader) throws LoadException { + public BufferedImage load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { try { return ImageIO.read(files.get((String) c)); } catch(IOException e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java index f30b77814..d316718bb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java @@ -5,13 +5,14 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.math.GridSpawn; +import java.lang.reflect.AnnotatedType; import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") public class GridSpawnLoader implements TypeLoader { @Override - public StructureSpawn load(Type type, Object o, ConfigLoader configLoader) { + public StructureSpawn load(AnnotatedType type, Object o, ConfigLoader configLoader) { Map map = (Map) o; return new GridSpawn(map.get("width"), map.get("padding"), map.getOrDefault("salt", 0)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index fb2db617c..abbf7a0fb 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.tectonic.abstraction.AbstractConfigLoader; -import com.dfsek.tectonic.abstraction.TemplateProvider; +import com.dfsek.tectonic.abstraction.AbstractConfiguration; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; @@ -11,15 +11,16 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @@ -106,7 +107,7 @@ public class ConfigPackImpl implements ConfigPack { File pack = new File(folder, "pack.yml"); try { - configuration = new Configuration(new FileInputStream(pack)); + this.configuration = new YamlConfiguration(new FileInputStream(pack), "pack.yml"); ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate(); selfLoader.load(addonsTemplate, configuration); @@ -120,7 +121,7 @@ public class ConfigPackImpl implements ConfigPack { load(l, main); ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); - selfLoader.load(packPostTemplate, new FileInputStream(pack)); + selfLoader.load(packPostTemplate, configuration); biomeProviderBuilder = packPostTemplate.getProviderBuilder(); biomeProviderBuilder.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); @@ -162,7 +163,7 @@ public class ConfigPackImpl implements ConfigPack { if(pack == null) throw new LoadException("No pack.yml file found in " + file.getName()); - configuration = new Configuration(file.getInputStream(pack)); + this.configuration = new YamlConfiguration(file.getInputStream(pack), "pack.yml"); ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate(); selfLoader.load(addonsTemplate, configuration); @@ -178,7 +179,7 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); - selfLoader.load(packPostTemplate, file.getInputStream(pack)); + selfLoader.load(packPostTemplate, configuration); biomeProviderBuilder = packPostTemplate.getProviderBuilder(); biomeProviderBuilder.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); @@ -225,7 +226,7 @@ public class ConfigPackImpl implements ConfigPack { List configurations = new ArrayList<>(); - loader.open("", ".yml").thenEntries(entries -> entries.forEach(stream -> configurations.add(new Configuration(stream.getValue(), stream.getKey())))); + main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add)); Map, List> configs = new HashMap<>(); @@ -236,9 +237,10 @@ public class ConfigPackImpl implements ConfigPack { } for(ConfigType configType : configTypeRegistry.entries()) { - for(AbstractableTemplate config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()), () -> configType.getTemplate(this, main))) { + CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); + for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { - ((CheckedRegistry) getCheckedRegistry(configType.getTypeClass())).register(config.getID(), ((ConfigFactory) configType.getFactory()).build(config, main)); + registry.register(config.getID(), ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } 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 07dd85f99..6784991d5 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 @@ -1,6 +1,5 @@ package com.dfsek.terra.fabric; -import com.dfsek.tectonic.abstraction.TemplateProvider; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeLoader; @@ -83,6 +82,7 @@ import java.io.InputStream; import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @@ -93,7 +93,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final Map> worldMap = new HashMap<>(); private final Map> loaders = new HashMap<>(); - private final Map>> objectLoaders = new HashMap<>(); + private final Map>> objectLoaders = new HashMap<>(); private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); private final Profiler profiler = new ProfilerImpl(); @@ -244,7 +244,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return identifier; }); loaders.forEach(registry::registerLoader); - objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider>) ((Object) l))); + objectLoaders.forEach((t, l) -> registry.registerLoader(t, (Supplier>) ((Object) l))); } @Override @@ -301,8 +301,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @SuppressWarnings("unchecked") @Override - public TerraFabricPlugin applyLoader(Type type, TemplateProvider> loader) { - objectLoaders.put(type, (TemplateProvider>) ((Object) loader)); + public TerraFabricPlugin applyLoader(Type type, Supplier> loader) { + objectLoaders.put(type, (Supplier>) ((Object) loader)); return this; } From 26d91a715ca0b33d94d144efce8768b483fe26a4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 20:42:42 -0700 Subject: [PATCH 0176/1529] biome addon READMEs --- common/addons/biome-provider-image/README.md | 6 ++++++ common/addons/biome-provider-pipeline/README.md | 7 +++++++ common/addons/biome-provider-single/README.md | 4 ++++ 3 files changed, 17 insertions(+) create mode 100644 common/addons/biome-provider-image/README.md create mode 100644 common/addons/biome-provider-pipeline/README.md create mode 100644 common/addons/biome-provider-single/README.md diff --git a/common/addons/biome-provider-image/README.md b/common/addons/biome-provider-image/README.md new file mode 100644 index 000000000..f659e1bb1 --- /dev/null +++ b/common/addons/biome-provider-image/README.md @@ -0,0 +1,6 @@ +# biome-provider-image + +Implements and registers the `IMAGE` biome provider, a biome provider which generates +biomes from an image, using the `color` attribute of biomes. + +This addon registers the provider type, and all associated config options. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md new file mode 100644 index 000000000..0326bcf6e --- /dev/null +++ b/common/addons/biome-provider-pipeline/README.md @@ -0,0 +1,7 @@ +# biome-provider-pipeline + +Implements the Biome Pipeline, a procedural biome provider that uses a series +of "stages" to apply "mutations" to a 2D grid of biomes. + + +This addon registers the `PIPELINE` biome provider type, and all associated configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-single/README.md b/common/addons/biome-provider-single/README.md new file mode 100644 index 000000000..3bea8cbb5 --- /dev/null +++ b/common/addons/biome-provider-single/README.md @@ -0,0 +1,4 @@ +# biome-provider-single + +Registers and configures the `SINGLE` biome provider, a biome provider which +accepts a single biome to generate continuously. \ No newline at end of file From 2745bb8ba369fae501789ac317fc07c9b947b9f4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 20:44:14 -0700 Subject: [PATCH 0177/1529] chunk generator README --- common/addons/chunk-generator-noise-3d/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 common/addons/chunk-generator-noise-3d/README.md diff --git a/common/addons/chunk-generator-noise-3d/README.md b/common/addons/chunk-generator-noise-3d/README.md new file mode 100644 index 000000000..b235df2e6 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/README.md @@ -0,0 +1,4 @@ +# chunk-generator-noise-3d + +Registers the `NOISE_3D` chunk generator, a chunk generator which uses biomes' +samplers in 3D to generate chunk data. \ No newline at end of file From bac555787334e9675fc1a3c2a4bf836d9d8e7f21 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 13 Jul 2021 20:47:39 -0700 Subject: [PATCH 0178/1529] finish READMEs --- common/addons/config-biome/README.md | 3 +++ common/addons/config-carver/README.md | 3 +++ common/addons/config-flora/README.md | 3 +++ common/addons/config-noise-function/README.md | 3 +++ common/addons/config-ore/README.md | 3 +++ common/addons/config-palette/README.md | 3 +++ common/addons/config-structure/README.md | 3 +++ common/addons/config-tree/README.md | 3 +++ common/addons/language-yaml/README.md | 3 +++ common/addons/structure-terrascript-loader/README.md | 4 ++++ 10 files changed, 31 insertions(+) create mode 100644 common/addons/config-biome/README.md create mode 100644 common/addons/config-carver/README.md create mode 100644 common/addons/config-flora/README.md create mode 100644 common/addons/config-noise-function/README.md create mode 100644 common/addons/config-ore/README.md create mode 100644 common/addons/config-palette/README.md create mode 100644 common/addons/config-structure/README.md create mode 100644 common/addons/config-tree/README.md create mode 100644 common/addons/language-yaml/README.md create mode 100644 common/addons/structure-terrascript-loader/README.md diff --git a/common/addons/config-biome/README.md b/common/addons/config-biome/README.md new file mode 100644 index 000000000..4070828ac --- /dev/null +++ b/common/addons/config-biome/README.md @@ -0,0 +1,3 @@ +# config-biome + +Registers the default configuration for Terra Biomes, `BIOME`. \ No newline at end of file diff --git a/common/addons/config-carver/README.md b/common/addons/config-carver/README.md new file mode 100644 index 000000000..f5075b916 --- /dev/null +++ b/common/addons/config-carver/README.md @@ -0,0 +1,3 @@ +# config-carver + +Registers the default configuration for Terra Carvers, `CARVER`. \ No newline at end of file diff --git a/common/addons/config-flora/README.md b/common/addons/config-flora/README.md new file mode 100644 index 000000000..6ce6deaa8 --- /dev/null +++ b/common/addons/config-flora/README.md @@ -0,0 +1,3 @@ +# config-flora + +Registers the default configuration for Terra Flora, `FLORA`. \ No newline at end of file diff --git a/common/addons/config-noise-function/README.md b/common/addons/config-noise-function/README.md new file mode 100644 index 000000000..435757b55 --- /dev/null +++ b/common/addons/config-noise-function/README.md @@ -0,0 +1,3 @@ +# config-noise-function + +Registers the default noise functions. \ No newline at end of file diff --git a/common/addons/config-ore/README.md b/common/addons/config-ore/README.md new file mode 100644 index 000000000..1b72835ea --- /dev/null +++ b/common/addons/config-ore/README.md @@ -0,0 +1,3 @@ +# config-ore + +Registers the default configuration for Terra Ores, `ORE`. \ No newline at end of file diff --git a/common/addons/config-palette/README.md b/common/addons/config-palette/README.md new file mode 100644 index 000000000..7aa0bbe8f --- /dev/null +++ b/common/addons/config-palette/README.md @@ -0,0 +1,3 @@ +# config-palette + +Registers the default configuration for Terra Palettes, `PALETTE`. \ No newline at end of file diff --git a/common/addons/config-structure/README.md b/common/addons/config-structure/README.md new file mode 100644 index 000000000..60e62972a --- /dev/null +++ b/common/addons/config-structure/README.md @@ -0,0 +1,3 @@ +# config-structure + +Registers the default configuration for Terra Structures, `STRUCTURE`. \ No newline at end of file diff --git a/common/addons/config-tree/README.md b/common/addons/config-tree/README.md new file mode 100644 index 000000000..a4244540e --- /dev/null +++ b/common/addons/config-tree/README.md @@ -0,0 +1,3 @@ +# config-tree + +Registers the default configuration for Terra Trees, `TREE`. \ No newline at end of file diff --git a/common/addons/language-yaml/README.md b/common/addons/language-yaml/README.md new file mode 100644 index 000000000..a8c94a331 --- /dev/null +++ b/common/addons/language-yaml/README.md @@ -0,0 +1,3 @@ +# language-yaml + +Allows `*.yml` files to be loaded as Terra configurations. \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/README.md b/common/addons/structure-terrascript-loader/README.md new file mode 100644 index 000000000..1cfd954f7 --- /dev/null +++ b/common/addons/structure-terrascript-loader/README.md @@ -0,0 +1,4 @@ +# structure-terrascript-loader + +Implements the TerraScript structure scripting language, and loads all `*.tesf` files +into the Structure registry. \ No newline at end of file From 7fa2e8251ed7ccb24646a5033a1e7a001469a7e6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 14 Jul 2021 07:15:16 -0700 Subject: [PATCH 0179/1529] create and implement ConfigLoadEvent --- .../event/events/config/ConfigLoadEvent.java | 44 +++++++++++++++++++ .../terra/config/pack/ConfigPackImpl.java | 2 + 2 files changed, 46 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java new file mode 100644 index 000000000..9e188d381 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java @@ -0,0 +1,44 @@ +package com.dfsek.terra.api.event.events.config; + +import com.dfsek.tectonic.abstraction.AbstractConfiguration; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.event.events.PackEvent; + +import java.util.function.Consumer; + +/** + * Fired when each individual configuration is loaded. + */ +public class ConfigLoadEvent implements PackEvent { + private final ConfigPack pack; + private final AbstractConfiguration configuration; + private final Consumer loader; + private final ConfigType type; + + public ConfigLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type) { + this.pack = pack; + this.configuration = configuration; + this.loader = loader; + this.type = type; + } + + @Override + public ConfigPack getPack() { + return pack; + } + + public AbstractConfiguration getConfiguration() { + return configuration; + } + + public T load(T template) { + loader.accept(template); + return template; + } + + public ConfigType getType() { + return type; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index abbf7a0fb..4a48fdcfa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -18,6 +18,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.event.events.config.ConfigLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; @@ -241,6 +242,7 @@ public class ConfigPackImpl implements ConfigPack { for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { registry.register(config.getID(), ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main)); + main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, configuration), configType)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } From 7a38284158b38a9f3982abc5f8131ee316779bc4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 14 Jul 2021 07:30:22 -0700 Subject: [PATCH 0180/1529] implement flora populator --- .../addons/flora/BiomeFloraTemplate.java | 19 ++++++++++++ .../dfsek/terra/addons/flora/FloraAddon.java | 23 ++++++++++++++- .../terra/addons/flora/FloraLayerLoader.java | 29 +++++++++++++++++++ .../terra/addons/flora/FloraPopulator.java | 18 ++++++++---- .../event/events/config/ConfigLoadEvent.java | 11 ++++++- .../terra/config/pack/ConfigPackImpl.java | 5 ++-- 6 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java new file mode 100644 index 000000000..810ea1e90 --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.flora; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.addons.flora.flora.FloraLayer; + +import java.util.Collections; +import java.util.List; + +public class BiomeFloraTemplate implements ConfigTemplate { + @Value("flora") + @Default + private List flora = Collections.emptyList(); + + public List getFlora() { + return flora; + } +} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 34d599476..cb31c17c9 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -1,16 +1,24 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.terra.addons.flora.flora.FloraLayer; 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.ConfigLoadEvent; 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.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Addon("config-flora") @Author("Terra") @Version("0.1.0") @@ -18,13 +26,26 @@ public class FloraAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; + private final Map> flora = new HashMap<>(); // store Flora layers per biome by biome ID + @Override public void initialize() { main.getEventManager().registerListener(this, this); + main.applyLoader(FloraLayer.class, FloraLayerLoader::new); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main, this)); + } + + public void onBiomeLoad(ConfigLoadEvent event) { + if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { + flora.put(event.getConfiguration().getID(), event.load(new BiomeFloraTemplate()).getFlora()); + } + } + + public List getFlora(TerraBiome biome) { + return flora.get(biome.getID()); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java new file mode 100644 index 000000000..cec57ea8c --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.flora; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.flora.flora.FloraLayer; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.Flora; + +public class FloraLayerLoader implements ObjectTemplate { + @Value("density") + private double density; + + @Value("y") + private Range y; + + @Value("items") + private ProbabilityCollection items; + + @Value("distribution") + private NoiseSeeded distribution; + + + @Override + public FloraLayer get() { + return new FloraLayer(density, y, items, distribution.apply(2403L)); + } +} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index d9dbe3cb0..f0c60343e 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -1,21 +1,32 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + /** * Populates Flora */ public class FloraPopulator implements TerraGenerationStage { private final TerraPlugin main; + private final FloraAddon floraAddon; - public FloraPopulator(TerraPlugin main) { + public FloraPopulator(TerraPlugin main, FloraAddon floraAddon) { this.main = main; + this.floraAddon = floraAddon; } @SuppressWarnings("try") @@ -23,7 +34,6 @@ public class FloraPopulator implements TerraGenerationStage { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("flora")) { - /* if(tw.getConfig().disableFlora()) return; if(!tw.isSafe()) return; @@ -31,9 +41,8 @@ public class FloraPopulator implements TerraGenerationStage { Map> layers = new HashMap<>(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); Vector2 l = new Vector2(x, z); - layers.put(l, biome.getConfig().getFlora()); + layers.put(l, floraAddon.getFlora(provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z))); } } @@ -51,7 +60,6 @@ public class FloraPopulator implements TerraGenerationStage { } iter++; } - */ } } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java index 9e188d381..ee8dbb486 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java @@ -17,11 +17,14 @@ public class ConfigLoadEvent implements PackEvent { private final Consumer loader; private final ConfigType type; - public ConfigLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type) { + private final Object loaded; + + public ConfigLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type, Object loaded) { this.pack = pack; this.configuration = configuration; this.loader = loader; this.type = type; + this.loaded = loaded; } @Override @@ -41,4 +44,10 @@ public class ConfigLoadEvent implements PackEvent { public ConfigType getType() { return type; } + + @SuppressWarnings("unchecked") + public T getLoadedObject(Class clazz) { + if(!clazz.isAssignableFrom(type.getTypeClass())) throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); + return (T) loaded; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 4a48fdcfa..7dd311b49 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -241,8 +241,9 @@ public class ConfigPackImpl implements ConfigPack { CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { - registry.register(config.getID(), ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main)); - main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, configuration), configType)); + Object loaded = ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main); + registry.register(config.getID(), loaded); + main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, configuration), configType, loaded)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } From 089af42623af21bbdeae8771f5d910b2afdf62ba Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 14 Jul 2021 10:27:14 -0700 Subject: [PATCH 0181/1529] working flora populator impl --- .../generators/NoiseChunkGenerator3D.java | 2 +- .../terra/addons/carver/CavePopulator.java | 1 - .../dfsek/terra/addons/flora/FloraAddon.java | 8 ++++-- .../terra/addons/flora/FloraFactory.java | 6 +--- .../terra/addons/flora/FloraPopulator.java | 2 +- .../terra/addons/flora/FloraTemplate.java | 18 ++++++++++++ .../flora/config/BlockLayerTemplate.java | 20 +++++++++++++ .../terra/addons/flora/flora/FloraLayer.java | 6 ++-- .../terra/addons/flora/flora/TerraFlora.java | 28 ++++++++++++++----- .../addons/flora/flora/gen/BlockLayer.java | 22 +++++++++++++++ .../dfsek/terra/addons/ore/OrePopulator.java | 1 - .../addons/structure/StructurePopulator.java | 1 - .../terra/addons/tree/TreePopulator.java | 1 - .../dfsek/terra/api/config/ConfigPack.java | 4 +++ .../dfsek/terra/api/config/WorldConfig.java | 3 +- .../com/dfsek/terra/api/world/TerraWorld.java | 2 -- .../terra/config/pack/ConfigPackImpl.java | 8 +++++- .../terra/config/pack/ConfigPackTemplate.java | 5 ++-- .../terra/config/pack/WorldConfigImpl.java | 6 ++++ .../com/dfsek/terra/world/TerraWorldImpl.java | 7 ----- 20 files changed, 116 insertions(+), 35 deletions(-) create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 91cf14595..4ea9242bf 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -33,6 +33,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; + c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c))); } @SuppressWarnings({"try"}) @@ -70,7 +71,6 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraWorld tw = main.getWorld(world); BiomeProvider grid = tw.getBiomeProvider(); - if(!tw.isSafe()) return chunk; int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 518def630..7eec08cd8 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -34,7 +34,6 @@ public class CavePopulator implements TerraGenerationStage, Chunkified { WorldHandle handle = main.getWorldHandle(); try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); - if(!tw.isSafe()) return; WorldConfig config = tw.getConfig(); if(config.disableCarving()) return; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index cb31c17c9..4b2bf4f1b 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.terra.addons.flora.config.BlockLayerTemplate; import com.dfsek.terra.addons.flora.flora.FloraLayer; +import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -15,6 +17,7 @@ import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,7 +34,8 @@ public class FloraAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(FloraLayer.class, FloraLayerLoader::new); + main.applyLoader(FloraLayer.class, FloraLayerLoader::new) + .applyLoader(BlockLayer.class, BlockLayerTemplate::new); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { @@ -46,6 +50,6 @@ public class FloraAddon extends TerraAddon implements EventListener { } public List getFlora(TerraBiome biome) { - return flora.get(biome.getID()); + return flora.getOrDefault(biome.getID(), Collections.emptyList()); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index 80214ed4a..d879bfe7a 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -8,10 +8,6 @@ import com.dfsek.terra.api.world.Flora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - /*PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); - for(PaletteLayerHolder layer : config.getFloraPalette()) { - palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); - }*/ - return new TerraFlora(null, config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main); + return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().apply(2403L)); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index f0c60343e..7093f5eb6 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; @@ -36,7 +37,6 @@ public class FloraPopulator implements TerraGenerationStage { try(ProfileFrame ignore = main.getProfiler().profile("flora")) { if(tw.getConfig().disableFlora()) return; - if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); Map> layers = new HashMap<>(); for(int x = 0; x < 16; x++) { diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index e8a597174..bb7771535 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -4,8 +4,12 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.flora.flora.TerraFlora; +import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; + +import java.util.List; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class FloraTemplate implements AbstractableTemplate { @@ -53,6 +57,20 @@ public class FloraTemplate implements AbstractableTemplate { @Default private int irrigableOffset; + @Value("layers") + private List layers; + + @Value("layer-distribution") + private NoiseSeeded noiseDistribution; + + public NoiseSeeded getNoiseDistribution() { + return noiseDistribution; + } + + public List getLayers() { + return layers; + } + public int getIrrigableOffset() { return irrigableOffset; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java new file mode 100644 index 000000000..bc709769e --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.flora.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + +public class BlockLayerTemplate implements ObjectTemplate { + @Value("layers") + private int layers; + + @Value("materials") + private ProbabilityCollection data; + + @Override + public BlockLayer get() { + return new BlockLayer(layers, data); + } +} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java index 112b6ede7..bb3c81a96 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java @@ -37,7 +37,9 @@ public class FloraLayer { } public void place(Chunk chunk, Vector2 coords) { - Flora item = layer.get(noise, (chunk.getX() << 4) + coords.getX(), (chunk.getZ() << 4) + coords.getZ()); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block, chunk.getWorld())); + int cx = (chunk.getX() << 4); + int cz = (chunk.getZ() << 4); + Flora item = layer.get(noise, cx + coords.getX(), cz + coords.getZ()); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 8c1a62418..b3b760d98 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -1,16 +1,18 @@ package com.dfsek.terra.addons.flora.flora; +import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.TerraPlugin; 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.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; import java.util.ArrayList; @@ -19,7 +21,7 @@ import java.util.List; import java.util.Random; public class TerraFlora implements Flora { - private final Palette floraPalette; + private final List> layers; private final boolean physics; private final boolean ceiling; @@ -40,8 +42,9 @@ public class TerraFlora implements Flora { private final TerraPlugin main; - public TerraFlora(Palette floraPalette, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, int irrigableOffset, TerraPlugin main) { - this.floraPalette = floraPalette; + private final NoiseSampler distribution; + + public TerraFlora(List layers, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, int irrigableOffset, TerraPlugin main, NoiseSampler distribution) { this.physics = physics; this.testRotation = testRotation; this.spawnBlacklist = spawnBlacklist; @@ -53,11 +56,19 @@ public class TerraFlora implements Flora { this.search = search; this.irrigableOffset = irrigableOffset; this.main = main; + this.distribution = distribution; + + this.layers = new ArrayList<>(); + layers.forEach(layer -> { + for(int i = 0; i < layer.getLayers(); i++) { + this.layers.add(layer.getBlocks()); + } + }); } @Override public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { - int size = floraPalette.getSize(); + int size = layers.size(); Vector3 current = new Vector3(x, search.equals(Search.UP) ? range.getMin() : range.getMax(), z); List blocks = new ArrayList<>(); int cx = chunk.getX() << 4; @@ -90,11 +101,14 @@ public class TerraFlora implements Flora { || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() - 1).getBlockType()); } + private ProbabilityCollection getStateCollection(int layer) { + return layers.get(FastMath.max(FastMath.min(layer, layers.size()-1), 0)); + } @Override public boolean plant(Vector3 location, World world) { boolean doRotation = testRotation.size() > 0; - int size = floraPalette.getSize(); + int size = layers.size(); int c = ceiling ? -1 : 1; EnumSet faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : EnumSet.noneOf(Direction.class); @@ -102,7 +116,7 @@ public class TerraFlora implements Flora { for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor int lvl = (FastMath.abs(i)); - BlockState data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); + BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), location.getZ()).clone(); if(doRotation) { Direction oneFace = new ArrayList<>(faces).get(new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java new file mode 100644 index 000000000..7ebb1adcb --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.flora.flora.gen; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + +public class BlockLayer { + private final int layers; + private final ProbabilityCollection blocks; + + public BlockLayer(int layers, ProbabilityCollection blocks) { + this.layers = layers; + this.blocks = blocks; + } + + public int getLayers() { + return layers; + } + + public ProbabilityCollection getBlocks() { + return blocks; + } +} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index cfc7274ed..d614e656c 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -26,7 +26,6 @@ public class OrePopulator implements TerraGenerationStage { try(ProfileFrame ignore = main.getProfiler().profile("ore")) { if(tw.getConfig().disableOres()) return; - if(!tw.isSafe()) return; for(int cx = -1; cx <= 1; cx++) { for(int cz = -1; cz <= 1; cz++) { Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index d29502cc6..bbe61d03e 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -34,7 +34,6 @@ public class StructurePopulator implements TerraGenerationStage, Chunkified { int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); - if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); WorldConfig config = tw.getConfig(); for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index 434c56c7e..b02ea6d8f 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -32,7 +32,6 @@ public class TreePopulator implements TerraGenerationStage { try(ProfileFrame ignore = main.getProfiler().profile("tree")) { if(tw.getConfig().disableTrees()) return; - if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); Random random = PopulationUtil.getRandom(chunk); for(int x = 0; x < 16; x += 2) { 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 ae4b491eb..febcfce56 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 @@ -9,7 +9,9 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; +import java.util.List; import java.util.Map; import java.util.Set; @@ -20,6 +22,8 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde WorldConfig toWorldConfig(TerraWorld world); + List getStages(); + void registerConfigType(ConfigType type, String id, int priority); Loader getLoader(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 8b8f0144d..f9303c9c2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -4,11 +4,12 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import java.util.List; import java.util.Map; public interface WorldConfig { - @SuppressWarnings("unchecked") Registry getRegistry(Class clazz); TerraWorld getWorld(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index b88f52c7e..8f0110204 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -12,8 +12,6 @@ public interface TerraWorld { WorldConfig getConfig(); - boolean isSafe(); - /** * Get a block at an ungenerated location * diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 7dd311b49..6c96d491c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,6 +30,7 @@ import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; @@ -243,7 +244,7 @@ public class ConfigPackImpl implements ConfigPack { try { Object loaded = ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main); registry.register(config.getID(), loaded); - main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, configuration), configType, loaded)); + main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, config), configType, loaded)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } @@ -306,6 +307,11 @@ public class ConfigPackImpl implements ConfigPack { return new WorldConfigImpl(world, this, main); } + @Override + public List getStages() { + return template.getStages(); + } + @Override public void registerConfigType(ConfigType type, String id, int priority) { Set contained = new HashSet<>(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index 396dec72c..708e47329 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) @@ -56,7 +57,7 @@ public class ConfigPackTemplate implements ConfigTemplate { private boolean disableSaplings = false; @Value("stages") - private LinkedHashMap stages; + private List stages; @Value("version") @Default @@ -89,7 +90,7 @@ public class ConfigPackTemplate implements ConfigTemplate { return generatorProvider; } - public LinkedHashMap getStages() { + public List getStages() { return stages; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 430fa5d46..4b15d26fe 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -8,12 +8,18 @@ import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.GenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.SamplerCache; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.SamplerCacheImpl; +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class WorldConfigImpl implements WorldConfig { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index 76e487387..8e6864d14 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -17,7 +17,6 @@ import net.jafama.FastMath; public class TerraWorldImpl implements TerraWorld { private final BiomeProvider provider; private final WorldConfigImpl config; - private final boolean safe; private final World world; private final BlockState air; @@ -29,7 +28,6 @@ public class TerraWorldImpl implements TerraWorld { this.provider = config.getProvider(); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); this.air = main.getWorldHandle().air(); - safe = true; } @@ -49,11 +47,6 @@ public class TerraWorldImpl implements TerraWorld { return config; } - @Override - public boolean isSafe() { - return safe; - } - @Override public BlockState getUngeneratedBlock(int x, int y, int z) { From 34e78ab55e229b69352955b3aacdb8c2bce86b44 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 14 Jul 2021 14:49:58 -0700 Subject: [PATCH 0182/1529] implement tree populator --- .../terra/addons/tree/BiomeTreeTemplate.java | 19 ++++++++++++ .../dfsek/terra/addons/tree/TreeAddon.java | 25 +++++++++++++++- .../terra/addons/tree/TreePopulator.java | 11 +++---- .../terra/addons/tree/tree/TreeLayer.java | 10 +++---- .../addons/tree/tree/TreeLayerTemplate.java | 29 +++++++++++++++++++ .../script/functions/CheckFunction.java | 6 ++-- .../terra/registry/master/AddonRegistry.java | 6 ++-- 7 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java create mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java new file mode 100644 index 000000000..dc34e10be --- /dev/null +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.tree; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.addons.tree.tree.TreeLayer; + +import java.util.Collections; +import java.util.List; + +public class BiomeTreeTemplate implements ConfigTemplate { + @Value("trees") + @Default + private List trees = Collections.emptyList(); + + public List getTrees() { + return trees; + } +} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index dd1403e0a..9a5af3dbc 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -1,16 +1,26 @@ package com.dfsek.terra.addons.tree; +import com.dfsek.terra.addons.tree.tree.TreeLayer; +import com.dfsek.terra.addons.tree.tree.TreeLayerTemplate; 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.ConfigLoadEvent; 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.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Addon("config-tree") @Author("Terra") @Version("1.0.0") @@ -18,13 +28,26 @@ public class TreeAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; + private final Map> trees = new HashMap<>(); + @Override public void initialize() { main.getEventManager().registerListener(this, this); + main.applyLoader(TreeLayer.class, TreeLayerTemplate::new); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main, this)); + } + + public void onBiomeLoad(ConfigLoadEvent event) { + if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { + trees.put(event.getConfiguration().getID(), event.load(new BiomeTreeTemplate()).getTrees()); + } + } + + public List getTrees(TerraBiome biome) { + return trees.getOrDefault(biome.getID(), Collections.emptyList()); } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index b02ea6d8f..63580a2c7 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.tree; +import com.dfsek.terra.addons.tree.tree.TreeLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -16,9 +18,11 @@ import java.util.Random; public class TreePopulator implements TerraGenerationStage { private final TerraPlugin main; + private final TreeAddon addon; - public TreePopulator(TerraPlugin main) { + public TreePopulator(TerraPlugin main, TreeAddon addon) { this.main = main; + this.addon = addon; } private static int offset(Random r, int i) { @@ -36,14 +40,11 @@ public class TreePopulator implements TerraGenerationStage { Random random = PopulationUtil.getRandom(chunk); for(int x = 0; x < 16; x += 2) { for(int z = 0; z < 16; z += 2) { - /* - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z); - for(TreeLayer layer : biome.getConfig().getTrees()) { + for(TreeLayer layer : addon.getTrees(provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z))) { if(layer.getDensity() >= random.nextDouble() * 100) { layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); } } - */ } } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java index 34d2e1bf1..a45e0246e 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java @@ -42,13 +42,13 @@ public class TreeLayer { public void place(Chunk chunk, Vector2 coords) { Tree item = layer.get(noise, coords.getX(), coords.getZ()); BlockState current; - int i = 0; - for(int ignored : level) { - current = chunk.getBlock((int) coords.getX(), level.getMax() - i, (int) coords.getZ()); + int cx = (chunk.getX()) << 4; + int cz = (chunk.getZ()) << 4; + for(int y : level) { + current = chunk.getBlock((int) coords.getX(), y, (int) coords.getZ()); if(item.getSpawnable().contains(current.getBlockType())) { - item.plant(new Vector3((int) coords.getX(), level.getMax() - i, (int) coords.getZ()), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); + item.plant(new Vector3((int) coords.getX() + cx, y+1, (int) coords.getZ() + cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); } - i--; } } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java new file mode 100644 index 000000000..f595fbf47 --- /dev/null +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.tree.tree; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.Flora; +import com.dfsek.terra.api.world.Tree; + +public class TreeLayerTemplate implements ObjectTemplate { + @Value("density") + private double density; + + @Value("y") + private Range y; + + @Value("items") + private ProbabilityCollection items; + + @Value("distribution") + private NoiseSeeded distribution; + + @Override + public TreeLayer get() { + return new TreeLayer(density, y, items, distribution.apply(2403L)); + } +} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index f79921a6e..b97a7a6d7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -48,6 +48,8 @@ public class CheckFunction implements Function { } private String apply(Vector3 vector, World world) { + int y = vector.getBlockY(); + if(y >= world.getMaxHeight() || y < 0) return "AIR"; TerraWorld tw = main.getWorld(world); SamplerCache cache = tw.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); @@ -57,8 +59,8 @@ public class CheckFunction implements Function { //BiomeProvider provider = tw.getBiomeProvider(); //TerraBiome b = provider.getBiome(vector.getBlockX(), vector.getBlockZ()); - //if(vector.getY() > c.getSeaLevel()) return "AIR"; // Above sea level - return "OCEAN"; // Below sea level + /*if(vector.getY() > c.getSeaLevel())*/ return "AIR"; // Above sea level + //return "OCEAN"; // Below sea level } private double sample(int x, int y, int z, SamplerCache cache) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index e8490d644..0aba01392 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -94,9 +94,9 @@ public class AddonRegistry extends OpenRegistryImpl { registerChecked(loadedAddon.getName(), loadedAddon); } catch(DuplicateEntryException e) { valid = false; - main.logger().severe("Duplicate com.dfsek.terra.addon ID; com.dfsek.terra.addon with ID " + loadedAddon.getName() + " is already loaded."); - main.logger().severe("Existing com.dfsek.terra.addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); - main.logger().severe("Duplicate com.dfsek.terra.addon class: " + addonClass.getCanonicalName()); + main.logger().severe("Duplicate addon ID; addon with ID " + loadedAddon.getName() + " is already loaded."); + main.logger().severe("Existing addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); + main.logger().severe("Duplicate addon class: " + addonClass.getCanonicalName()); } } } catch(AddonLoadException | IOException e) { From 95e6479505f19328ec09457862d4bca03dd77deb Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 13:24:05 -0700 Subject: [PATCH 0183/1529] cleanup --- .../terra/addons/biome/BiomeConfigAddon.java | 4 ++- .../addons/structure/StructureAddon.java | 29 +++++++++++++++++++ .../terra/registry/OpenRegistryImpl.java | 6 +++- .../com/dfsek/terra/StandalonePlugin.java | 15 ++++++++++ .../dfsek/terra/platform/RawWorldHandle.java | 5 ++++ .../java/com/dfsek/terra/platform/State.java | 16 ++++++++++ .../com/dfsek/terra/region/Generator.java | 16 ---------- 7 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index dc25625c2..fccee46cd 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; +import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -21,7 +22,8 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + main.applyLoader(PaletteHolder.class, new PaletteHolderLoader()) + .applyLoader(SlantHolder.class, (t, o, l) -> null); } public void onPackLoad(ConfigPackPreLoadEvent event) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java new file mode 100644 index 000000000..09c80ca26 --- /dev/null +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.structure; + +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.structure.ConfiguredStructure; + +@Addon("config-structure") +@Version("1.0.0") +@Author("Terra") +public class StructureAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + main.applyLoader(ConfiguredStructure.class, (t, o, l) -> null); + } + + public void onConfigLoad(ConfigPackPreLoadEvent event) { + + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index acb0fbde2..3b551e391 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -36,8 +36,12 @@ public class OpenRegistryImpl implements OpenRegistry { @Override public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { T obj = get((String) o); + StringBuilder keys = new StringBuilder("["); + + objects.keySet().forEach(key -> keys.append(key + ", ")); + if(obj == null) - throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + "\" was found in this registry."); + throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + "\" was found in this registry. Registry contains items: " + keys.substring(0, keys.length()-2) + "]"); return obj; } 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 50b9dcd87..de166ed79 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -1,6 +1,8 @@ package com.dfsek.terra; +import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.state.BlockState; @@ -13,6 +15,7 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; @@ -34,6 +37,8 @@ import com.dfsek.terra.world.TerraWorldImpl; import java.io.File; import java.io.IOException; +import java.lang.reflect.Type; +import java.util.function.Supplier; import java.util.logging.Logger; public class StandalonePlugin implements TerraPlugin { @@ -156,4 +161,14 @@ public class StandalonePlugin implements TerraPlugin { public Profiler getProfiler() { return profiler; } + + @Override + public LoaderHolder applyLoader(Type type, TypeLoader loader) { + return null; + } + + @Override + public LoaderHolder applyLoader(Type type, Supplier> loader) { + return null; + } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java index d0a39f1c9..01b549619 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/RawWorldHandle.java @@ -11,6 +11,11 @@ public class RawWorldHandle implements WorldHandle { return new State(data); } + @Override + public BlockState air() { + return null; + } + @Override public EntityType getEntity(String id) { return null; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java index fd102bfb1..bb5621ce6 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/State.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/State.java @@ -2,6 +2,7 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.Property; import net.querz.nbt.tag.CompoundTag; public class State implements BlockState, BlockType { @@ -57,6 +58,21 @@ public class State implements BlockState, BlockType { return false; } + @Override + public boolean has(Property property) { + return false; + } + + @Override + public T get(Property property) { + return null; + } + + @Override + public BlockState set(Property property, T value) { + return null; + } + @Override public BlockState clone() { 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 2d2935876..6a674000e 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 @@ -5,10 +5,6 @@ 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.population.FloraPopulator; -import com.dfsek.terra.world.population.OrePopulator; -import com.dfsek.terra.world.population.StructurePopulator; -import com.dfsek.terra.world.population.TreePopulator; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -18,18 +14,10 @@ import java.util.Map; public class Generator { private final long seed; - FloraPopulator floraPopulator; - StructurePopulator structurePopulator; - TreePopulator treePopulator; - OrePopulator orePopulator; TerraChunkGenerator generator; public Generator(long seed, StandalonePlugin plugin) { plugin.load(); - floraPopulator = new FloraPopulator(plugin); - structurePopulator = new StructurePopulator(plugin); - treePopulator = new TreePopulator(plugin); - orePopulator = new OrePopulator(plugin); //generator = new DefaultChunkGenerator3D(plugin.getConfigRegistry().get("DEFAULT"), plugin); this.seed = seed; } @@ -51,10 +39,6 @@ public class Generator { DirectChunkData chunkData = (DirectChunkData) world.getChunkAt(cx, cz); generator.generateChunkData(world, null, cx, cz, chunkData); - structurePopulator.populate(world, chunkData); - orePopulator.populate(world, chunkData); - floraPopulator.populate(world, chunkData); - treePopulator.populate(world, chunkData); count++; if(count % 200 == 0) { From 8cd2554d3a68640c021cd88d3334670780d86993 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 13:54:01 -0700 Subject: [PATCH 0184/1529] fix registry overwrite issue --- .../terra/config/pack/ConfigPackImpl.java | 30 ++++++++------- .../terra/registry/OpenRegistryImpl.java | 5 +-- .../registry/config/ConfigTypeRegistry.java | 4 +- .../terra/registry/master/AddonRegistry.java | 7 +++- .../dfsek/terra/addon/AddonClassLoader.java | 37 ++++++++++--------- .../com/dfsek/terra/addon/PreLoadAddon.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 6 +-- 7 files changed, 49 insertions(+), 42 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 6c96d491c..2da842a0f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -82,22 +82,18 @@ public class ConfigPackImpl implements ConfigPack { private final BiomeProviderBuilder biomeProviderBuilder; + private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); private final ConfigTypeRegistry configTypeRegistry; - private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); + private final TreeMap>>> configTypes = new TreeMap<>(); public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { - OpenRegistry openRegistry = configType.registrySupplier().get(); - selfLoader.registerLoader(configType.getTypeClass(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); - registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); - }); this.loader = new FolderLoader(folder.toPath()); this.main = main; + this.configTypeRegistry = createRegistry(); long l = System.nanoTime(); register(abstractConfigLoader); @@ -139,14 +135,9 @@ public class ConfigPackImpl implements ConfigPack { public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { try { - this.configTypeRegistry = new ConfigTypeRegistry(main, (id, configType) -> { - OpenRegistry openRegistry = configType.registrySupplier().get(); - selfLoader.registerLoader(configType.getTypeClass(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); - registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); - }); this.loader = new ZIPLoader(file); this.main = main; + this.configTypeRegistry = createRegistry(); long l = System.nanoTime(); register(selfLoader); @@ -196,6 +187,19 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } + private ConfigTypeRegistry createRegistry() { + return new ConfigTypeRegistry(main, (id, configType) -> { + OpenRegistry openRegistry = configType.registrySupplier().get(); + if(registryMap.containsKey(configType.getTypeClass())) { // Someone already registered something; we need to copy things to the new registry. + //noinspection unchecked + registryMap.get(configType.getTypeClass()).getLeft().forEach(((OpenRegistry) openRegistry)::register); + } + selfLoader.registerLoader(configType.getTypeClass(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); + registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); + }); + } + private void checkDeadEntries(TerraPlugin main) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 3b551e391..9c2608057 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -47,10 +46,10 @@ public class OpenRegistryImpl implements OpenRegistry { @Override public boolean register(String identifier, T value) { - return add(identifier, new Entry<>(value)); + return register(identifier, new Entry<>(value)); } - public boolean add(String identifier, Entry value) { + public boolean register(String identifier, Entry value) { boolean exists = objects.containsKey(identifier); objects.put(identifier, value); return exists; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 9963508bb..eb48c2639 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -19,9 +19,9 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { } @Override - public boolean add(String identifier, Entry> value) { + public boolean register(String identifier, Entry> value) { callback.accept(identifier, value.getValue()); main.getDebugLogger().info("Registered config registry with ID " + identifier + " to class " + value.getValue().getTypeClass().getCanonicalName()); - return super.add(identifier, value); + return super.register(identifier, value); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 0aba01392..1965c5792 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -34,7 +34,7 @@ public class AddonRegistry extends OpenRegistryImpl { public boolean register(String identifier, TerraAddon addon) { if(contains(identifier)) throw new IllegalArgumentException("Addon " + identifier + " is already registered."); addon.initialize(); - main.logger().info("Loaded com.dfsek.terra.addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); + main.logger().info("Loaded addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); return super.register(identifier, addon); } @@ -44,6 +44,9 @@ public class AddonRegistry extends OpenRegistryImpl { } public boolean loadAll() { + return loadAll(TerraPlugin.class.getClassLoader()); + } + public boolean loadAll(ClassLoader parent) { InjectorImpl pluginInjector = new InjectorImpl<>(main); pluginInjector.addExplicitTarget(TerraPlugin.class); @@ -56,7 +59,7 @@ public class AddonRegistry extends OpenRegistryImpl { try { for(File jar : addonsFolder.listFiles(file -> file.getName().endsWith(".jar"))) { main.logger().info("Loading Addon(s) from: " + jar.getName()); - for(Class addonClass : AddonClassLoader.fetchAddonClasses(jar)) { + for(Class addonClass : AddonClassLoader.fetchAddonClasses(jar, parent)) { pool.add(new PreLoadAddon(addonClass, jar)); } } diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java index e4258ba31..93631de6f 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java @@ -27,35 +27,36 @@ public class AddonClassLoader extends URLClassLoader { } @SuppressWarnings("unchecked") - public static Set> fetchAddonClasses(File file) throws IOException { + public static Set> fetchAddonClasses(File file, ClassLoader parent) throws IOException { JarFile jarFile = new JarFile(file); Enumeration entries = jarFile.entries(); - AddonClassLoader loader = new AddonClassLoader(new URL[] {file.toURI().toURL()}, AddonClassLoader.class.getClassLoader()); + try(AddonClassLoader loader = new AddonClassLoader(new URL[] {file.toURI().toURL()}, parent)) { - Set> set = new HashSet<>(); - while(entries.hasMoreElements()) { - JarEntry entry = entries.nextElement(); + 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('/', '.'); + 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); + try { + Class clazz = loader.loadClass(className); - Addon addon = clazz.getAnnotation(Addon.class); + Addon addon = clazz.getAnnotation(Addon.class); - if(addon == null) continue; + if(addon == null) continue; - if(!TerraAddon.class.isAssignableFrom(clazz)) - throw new IllegalArgumentException("Addon class \"" + clazz + "\" must extend TerraAddon."); + if(!TerraAddon.class.isAssignableFrom(clazz)) + throw new IllegalArgumentException("Addon class \"" + clazz + "\" must extend TerraAddon."); - set.add((Class) clazz); - } catch(ClassNotFoundException e) { - throw new IllegalStateException(e); // this should literally never happen, if it does something is very wrong + set.add((Class) clazz); + } catch(ClassNotFoundException e) { + throw new IllegalStateException(e); // this should literally never happen, if it does something is very wrong + } } - } - return set; + return set; + } } } diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java index 379ca5e35..f3b1b0482 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java @@ -33,7 +33,7 @@ public class PreLoadAddon { public void rebuildDependencies(AddonPool pool, PreLoadAddon origin, boolean levelG1) throws AddonLoadException { if(this.equals(origin) && !levelG1) - throw new CircularDependencyException("Detected circular dependency in com.dfsek.terra.addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); + throw new CircularDependencyException("Detected circular dependency in addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); for(String dependency : dependencies) { PreLoadAddon preLoadAddon = pool.get(dependency); 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 6784991d5..7a7e692e2 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 @@ -260,7 +260,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { debugLogger.setDebug(config.isDebugLogging()); if(config.isDebugProfiler()) profiler.start(); - if(!addonRegistry.loadAll()) { + if(!addonRegistry.loadAll(getClass().getClassLoader())) { throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); } logger.info("Loaded addons."); @@ -317,10 +317,10 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { eventManager.registerListener(this, this); } - @Priority(Priority.LOWEST) + @Priority(Priority.HIGHEST) @Global public void injectTrees(ConfigPackPreLoadEvent event) { - CheckedRegistry treeRegistry = event.getPack().getCheckedRegistry(Tree.class); + CheckedRegistry treeRegistry = event.getPack().getOrCreateRegistry(Tree.class); injectTree(treeRegistry, "BROWN_MUSHROOM", ConfiguredFeatures.HUGE_BROWN_MUSHROOM); injectTree(treeRegistry, "RED_MUSHROOM", ConfiguredFeatures.HUGE_RED_MUSHROOM); injectTree(treeRegistry, "JUNGLE", ConfiguredFeatures.MEGA_JUNGLE_TREE); From b3594b24797a5352a29970c19df22d38d5c98ede Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 13:55:47 -0700 Subject: [PATCH 0185/1529] make DuplicateEntryException unchecked --- .../terra/api/registry/exception/DuplicateEntryException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java b/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java index 4154ecd0f..ce7868c59 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.registry.exception; /** * Thrown when a duplicate entry is found in a registry. */ -public class DuplicateEntryException extends Exception { +public class DuplicateEntryException extends RuntimeException { private static final long serialVersionUID = -7199021672428288780L; public DuplicateEntryException(String message) { From 2705e7d6a25f20fd701d084a3eb1f7348b93490f Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 14:05:44 -0700 Subject: [PATCH 0186/1529] dont implement LoaderHolder in TerraPlugin --- .../biome/pipeline/BiomePipelineAddon.java | 7 ++- .../terra/addons/biome/BiomeConfigAddon.java | 4 +- .../dfsek/terra/addons/flora/FloraAddon.java | 4 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 57 +++++++++---------- .../terra/addons/palette/PaletteAddon.java | 2 +- .../addons/structure/StructureAddon.java | 3 +- .../dfsek/terra/addons/tree/TreeAddon.java | 2 +- .../java/com/dfsek/terra/api/TerraPlugin.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 6 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 18 ------ .../com/dfsek/terra/StandalonePlugin.java | 10 ---- 11 files changed, 45 insertions(+), 70 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 9cfeb3646..a0bed6170 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -19,6 +19,7 @@ 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.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.util.seeded.SourceSeeded; @@ -34,7 +35,11 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { @Override public void initialize() { - main.applyLoader(SourceSeeded.class, new SourceBuilderLoader()) + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().applyLoader(SourceSeeded.class, new SourceBuilderLoader()) .applyLoader(StageSeeded.class, new StageBuilderLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index fccee46cd..ede3bba77 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -22,11 +22,11 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(PaletteHolder.class, new PaletteHolderLoader()) - .applyLoader(SlantHolder.class, (t, o, l) -> null); } public void onPackLoad(ConfigPackPreLoadEvent event) { event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); + event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()) + .applyLoader(SlantHolder.class, (t, o, l) -> null); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 4b2bf4f1b..7d3cc6e03 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -34,13 +34,13 @@ public class FloraAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(FloraLayer.class, FloraLayerLoader::new) - .applyLoader(BlockLayer.class, BlockLayerTemplate::new); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main, this)); + event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new) + .applyLoader(BlockLayer.class, BlockLayerTemplate::new); } public void onBiomeLoad(ConfigLoadEvent event) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 40c1ad850..3a2ecfc99 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -51,7 +51,13 @@ public class NoiseAddon extends TerraAddon implements EventListener { @Override public void initialize() { plugin.getEventManager().registerListener(this, this); - plugin.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + } + + public void packPreLoad(ConfigPackPreLoadEvent event) { + CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); + event.getPack() + .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)) + .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) @@ -59,47 +65,40 @@ public class NoiseAddon extends TerraAddon implements EventListener { .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)); - } - @SuppressWarnings("deprecation") - public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); - event.getPack() - .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)); + noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); - noiseRegistry.registerUnchecked("LINEAR", LinearNormalizerTemplate::new); - noiseRegistry.registerUnchecked("NORMAL", NormalNormalizerTemplate::new); - noiseRegistry.registerUnchecked("CLAMP", ClampNormalizerTemplate::new); + noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); - noiseRegistry.registerUnchecked("IMAGE", ImageSamplerTemplate::new); + noiseRegistry.register("DOMAINWARP", DomainWarpTemplate::new); - noiseRegistry.registerUnchecked("DOMAINWARP", DomainWarpTemplate::new); + noiseRegistry.register("FBM", BrownianMotionTemplate::new); + noiseRegistry.register("PINGPONG", PingPongTemplate::new); + noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.registerUnchecked("FBM", BrownianMotionTemplate::new); - noiseRegistry.registerUnchecked("PINGPONG", PingPongTemplate::new); - noiseRegistry.registerUnchecked("RIDGED", RidgedFractalTemplate::new); - - noiseRegistry.registerUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.registerUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.registerUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.registerUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - noiseRegistry.registerUnchecked("GABOR", GaborNoiseTemplate::new); + noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.register("GABOR", GaborNoiseTemplate::new); - noiseRegistry.registerUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.registerUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - noiseRegistry.registerUnchecked("CELLULAR", CellularNoiseTemplate::new); + noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.registerUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.registerUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - noiseRegistry.registerUnchecked("CONSTANT", ConstantNoiseTemplate::new); + noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); - noiseRegistry.registerUnchecked("KERNEL", KernelTemplate::new); + noiseRegistry.register("KERNEL", KernelTemplate::new); Map packFunctions = new HashMap<>(); - noiseRegistry.registerUnchecked("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); + noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); try { diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 9b7112963..0ee51a855 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -21,10 +21,10 @@ public class PaletteAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); } public void onPackLoad(ConfigPackPreLoadEvent event) { event.getPack().registerConfigType(new PaletteConfigType(event.getPack(), main), "PALETTE", 2); + event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 09c80ca26..686f35029 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -20,10 +20,9 @@ public class StructureAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(ConfiguredStructure.class, (t, o, l) -> null); } public void onConfigLoad(ConfigPackPreLoadEvent event) { - + event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null); } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 9a5af3dbc..d27117b66 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -33,12 +33,12 @@ public class TreeAddon extends TerraAddon implements EventListener { @Override public void initialize() { main.getEventManager().registerListener(this, this); - main.applyLoader(TreeLayer.class, TreeLayerTemplate::new); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main, this)); + event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); } public void onBiomeLoad(ConfigLoadEvent event) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index c77a5a134..ccaa0aa99 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -24,7 +24,7 @@ import java.util.jar.JarFile; /** * Represents a Terra mod/plugin instance. */ -public interface TerraPlugin extends LoaderRegistrar, LoaderHolder { +public interface TerraPlugin extends LoaderRegistrar { WorldHandle getWorldHandle(); TerraWorld getWorld(World world); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 2da842a0f..16ffaea5f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -232,17 +232,17 @@ public class ConfigPackImpl implements ConfigPack { List configurations = new ArrayList<>(); - main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add)); + main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add)); // Create all the configs. Map, List> configs = new HashMap<>(); - for(Configuration configuration : configurations) { + for(Configuration configuration : configurations) { // Sort the configs ProtoConfig config = new ProtoConfig(); selfLoader.load(config, configuration); configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); } - for(ConfigType configType : configTypeRegistry.entries()) { + for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { 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 7a7e692e2..b8d2a2612 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 @@ -91,9 +91,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private static TerraFabricPlugin instance; private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); private final Map> worldMap = new HashMap<>(); - - private final Map> loaders = new HashMap<>(); - private final Map>> objectLoaders = new HashMap<>(); private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); private final Profiler profiler = new ProfilerImpl(); @@ -243,8 +240,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(identifier == null) throw new LoadException("Invalid identifier: " + o); return identifier; }); - loaders.forEach(registry::registerLoader); - objectLoaders.forEach((t, l) -> registry.registerLoader(t, (Supplier>) ((Object) l))); } @Override @@ -293,19 +288,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return profiler; } - @Override - public TerraFabricPlugin applyLoader(Type type, TypeLoader loader) { - loaders.put(type, loader); - return this; - } - - @SuppressWarnings("unchecked") - @Override - public TerraFabricPlugin applyLoader(Type type, Supplier> loader) { - objectLoaders.put(type, (Supplier>) ((Object) loader)); - return this; - } - @Addon("Terra-Fabric") @Author("Terra") @Version("1.0.0") 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 de166ed79..1fe018928 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -161,14 +161,4 @@ public class StandalonePlugin implements TerraPlugin { public Profiler getProfiler() { return profiler; } - - @Override - public LoaderHolder applyLoader(Type type, TypeLoader loader) { - return null; - } - - @Override - public LoaderHolder applyLoader(Type type, Supplier> loader) { - return null; - } } From cb4b537a2fb3b04360aa511e88dd2e6aca6e3038 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 14:34:48 -0700 Subject: [PATCH 0187/1529] document and refactor config events --- .../biome/pipeline/BiomePipelineAddon.java | 2 +- .../NoiseChunkGenerator3DAddon.java | 2 +- .../terra/addons/biome/BiomeConfigAddon.java | 2 +- .../dfsek/terra/addons/flora/FloraAddon.java | 6 +-- .../dfsek/terra/addons/noise/NoiseAddon.java | 2 +- .../com/dfsek/terra/addons/ore/OreAddon.java | 2 +- .../terra/addons/palette/PaletteAddon.java | 2 +- .../addons/structure/StructureAddon.java | 2 +- .../dfsek/terra/addons/tree/TreeAddon.java | 6 +-- .../dfsek/terra/addons/yaml/YamlAddon.java | 4 +- .../addons/terrascript/TerraScriptAddon.java | 2 +- .../event/events/config/ConfigLoadEvent.java | 53 ------------------- .../config/ConfigurationDiscoveryEvent.java | 40 ++++++++++++++ .../events/config/ConfigurationLoadEvent.java | 43 +++++++++++---- .../{ => pack}/ConfigPackLoadEvent.java | 2 +- .../{ => pack}/ConfigPackPostLoadEvent.java | 2 +- .../{ => pack}/ConfigPackPreLoadEvent.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 10 ++-- .../terra/bukkit/listeners/TerraListener.java | 2 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 8 +-- 20 files changed, 100 insertions(+), 94 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java rename common/api/src/main/java/com/dfsek/terra/api/event/events/config/{ => pack}/ConfigPackLoadEvent.java (95%) rename common/api/src/main/java/com/dfsek/terra/api/event/events/config/{ => pack}/ConfigPackPostLoadEvent.java (86%) rename common/api/src/main/java/com/dfsek/terra/api/event/events/config/{ => pack}/ConfigPackPreLoadEvent.java (89%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index a0bed6170..e82f990d0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -19,7 +19,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.util.seeded.SourceSeeded; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 3dbfdd39d..03c2dd66b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -7,7 +7,7 @@ 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.event.events.config.pack.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; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index ede3bba77..ab0740c71 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -9,7 +9,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-biome") diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 7d3cc6e03..9477a1f27 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -9,8 +9,8 @@ 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.ConfigLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; @@ -43,7 +43,7 @@ public class FloraAddon extends TerraAddon implements EventListener { .applyLoader(BlockLayer.class, BlockLayerTemplate::new); } - public void onBiomeLoad(ConfigLoadEvent event) { + public void onBiomeLoad(ConfigurationLoadEvent event) { if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { flora.put(event.getConfiguration().getID(), event.load(new BiomeFloraTemplate()).getFlora()); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 3a2ecfc99..9fbc64aae 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -32,7 +32,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.seeded.NoiseProvider; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 574ab1d3b..3ad6c7474 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -6,7 +6,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.generator.GenerationStageProvider; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 0ee51a855..5e3e2bb5c 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -8,7 +8,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-palette") diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 686f35029..ee14c6a50 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -6,7 +6,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.ConfiguredStructure; diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index d27117b66..378f3c40d 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -8,8 +8,8 @@ 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.ConfigLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; @@ -41,7 +41,7 @@ public class TreeAddon extends TerraAddon implements EventListener { event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); } - public void onBiomeLoad(ConfigLoadEvent event) { + public void onBiomeLoad(ConfigurationLoadEvent event) { if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { trees.put(event.getConfiguration().getID(), event.load(new BiomeTreeTemplate()).getTrees()); } diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index 116cb5e70..a8567658e 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -7,7 +7,7 @@ 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.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("language-yaml") @@ -22,7 +22,7 @@ public class YamlAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void loadYamlConfigs(ConfigurationLoadEvent event) { + public void loadYamlConfigs(ConfigurationDiscoveryEvent event) { event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> event.register(new YamlConfiguration(entry.getValue(), entry.getKey())))); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 38c4aab4f..862e1b287 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -10,7 +10,7 @@ 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.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java deleted file mode 100644 index ee8dbb486..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigLoadEvent.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.api.event.events.config; - -import com.dfsek.tectonic.abstraction.AbstractConfiguration; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.event.events.PackEvent; - -import java.util.function.Consumer; - -/** - * Fired when each individual configuration is loaded. - */ -public class ConfigLoadEvent implements PackEvent { - private final ConfigPack pack; - private final AbstractConfiguration configuration; - private final Consumer loader; - private final ConfigType type; - - private final Object loaded; - - public ConfigLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type, Object loaded) { - this.pack = pack; - this.configuration = configuration; - this.loader = loader; - this.type = type; - this.loaded = loaded; - } - - @Override - public ConfigPack getPack() { - return pack; - } - - public AbstractConfiguration getConfiguration() { - return configuration; - } - - public T load(T template) { - loader.accept(template); - return template; - } - - public ConfigType getType() { - return type; - } - - @SuppressWarnings("unchecked") - public T getLoadedObject(Class clazz) { - if(!clazz.isAssignableFrom(type.getTypeClass())) throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); - return (T) loaded; - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java new file mode 100644 index 000000000..0037dacc2 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java @@ -0,0 +1,40 @@ +package com.dfsek.terra.api.event.events.config; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.event.events.PackEvent; + +import java.util.function.Consumer; + +/** + * Fired when a pack is searched for {@link Configuration}s. + *

+ * Addons should listen to this event if they wish to add + * another configuration format. + */ +public class ConfigurationDiscoveryEvent implements PackEvent { + private final ConfigPack pack; + private final Loader loader; + + private final Consumer consumer; + + public ConfigurationDiscoveryEvent(ConfigPack pack, Loader loader, Consumer consumer) { + this.pack = pack; + this.loader = loader; + this.consumer = consumer; + } + + @Override + public ConfigPack getPack() { + return pack; + } + + public Loader getLoader() { + return loader; + } + + public void register(Configuration config) { + consumer.accept(config); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 8565c7c17..8c6aa5b90 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -1,22 +1,33 @@ package com.dfsek.terra.api.event.events.config; -import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.abstraction.AbstractConfiguration; +import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.PackEvent; import java.util.function.Consumer; +/** + * Fired when each individual configuration is loaded. + *

+ * Addons should listen to this event if they wish to add + * config values to existing {@link ConfigType}s. + */ public class ConfigurationLoadEvent implements PackEvent { private final ConfigPack pack; - private final Loader loader; + private final AbstractConfiguration configuration; + private final Consumer loader; + private final ConfigType type; - private final Consumer consumer; + private final Object loaded; - public ConfigurationLoadEvent(ConfigPack pack, Loader loader, Consumer consumer) { + public ConfigurationLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type, Object loaded) { this.pack = pack; + this.configuration = configuration; this.loader = loader; - this.consumer = consumer; + this.type = type; + this.loaded = loaded; } @Override @@ -24,11 +35,23 @@ public class ConfigurationLoadEvent implements PackEvent { return pack; } - public Loader getLoader() { - return loader; + public AbstractConfiguration getConfiguration() { + return configuration; } - public void register(Configuration config) { - consumer.accept(config); + public T load(T template) { + loader.accept(template); + return template; + } + + public ConfigType getType() { + return type; + } + + @SuppressWarnings("unchecked") + public T getLoadedObject(Class clazz) { + if(!clazz.isAssignableFrom(type.getTypeClass())) + throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); + return (T) loaded; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java similarity index 95% rename from common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java index 08238e3fa..78fc99f76 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.event.events.config; +package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java similarity index 86% rename from common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java index 7ebced059..139c8284e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.event.events.config; +package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java similarity index 89% rename from common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java rename to common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java index bd5ff66c1..4f9e86dca 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.event.events.config; +package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 16ffaea5f..a38adcab1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -18,10 +18,10 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.Loader; -import com.dfsek.terra.api.event.events.config.ConfigLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @@ -232,7 +232,7 @@ public class ConfigPackImpl implements ConfigPack { List configurations = new ArrayList<>(); - main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add)); // Create all the configs. + main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::add)); // Create all the configs. Map, List> configs = new HashMap<>(); @@ -248,7 +248,7 @@ public class ConfigPackImpl implements ConfigPack { try { Object loaded = ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main); registry.register(config.getID(), loaded); - main.getEventManager().callEvent(new ConfigLoadEvent(this, config, template -> selfLoader.load(template, config), configType, loaded)); + main.getEventManager().callEvent(new ConfigurationLoadEvent(this, config, template -> selfLoader.load(template, config), configType, loaded)); } catch(DuplicateEntryException e) { throw new LoadException("Duplicate registry entry: ", e); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 62c24d5d1..c28474109 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.bukkit.world.BukkitAdapter; 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 b8d2a2612..5c238344e 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 @@ -2,9 +2,7 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; @@ -20,8 +18,8 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; -import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; @@ -79,10 +77,8 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; -import java.util.function.Supplier; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { From d94ddb3e76d5f09e05c570fc9e1c42c770f037f5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 14:40:00 -0700 Subject: [PATCH 0188/1529] create config type loading events --- .../config/pack/ConfigPackPreLoadEvent.java | 2 +- .../config/type/ConfigTypeLoadEvent.java | 28 +++++++++++++++++++ .../config/type/ConfigTypePostLoadEvent.java | 10 +++++++ .../config/type/ConfigTypePreLoadEvent.java | 10 +++++++ .../terra/config/pack/ConfigPackImpl.java | 4 +++ 5 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java index 4f9e86dca..2fc9c96e2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; /** - * Called before a config pack's registries are filled. At this point, the pack manifest has been loaded, and all registries are empty. + * Called before a config pack's registries are filled. */ public class ConfigPackPreLoadEvent extends ConfigPackLoadEvent { public ConfigPackPreLoadEvent(ConfigPack pack, ExceptionalConsumer configLoader) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java new file mode 100644 index 000000000..b604bcf04 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.api.event.events.config.type; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.event.events.PackEvent; +import com.dfsek.terra.api.registry.CheckedRegistry; + +public abstract class ConfigTypeLoadEvent implements PackEvent { + private final ConfigType type; + private final CheckedRegistry registry; + + public ConfigTypeLoadEvent(ConfigType type, CheckedRegistry registry) { + this.type = type; + this.registry = registry; + } + + @Override + public ConfigPack getPack() { + return null; + } + + @SuppressWarnings("unchecked") + public CheckedRegistry getRegistry(Class clazz) { + if(!clazz.isAssignableFrom(type.getTypeClass())) + throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); + return (CheckedRegistry) registry; + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java new file mode 100644 index 000000000..35ddba976 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.event.events.config.type; + +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.CheckedRegistry; + +public class ConfigTypePostLoadEvent extends ConfigTypeLoadEvent{ + public ConfigTypePostLoadEvent(ConfigType type, CheckedRegistry registry) { + super(type, registry); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java new file mode 100644 index 000000000..3be1e9586 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.event.events.config.type; + +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.CheckedRegistry; + +public class ConfigTypePreLoadEvent extends ConfigTypeLoadEvent{ + public ConfigTypePreLoadEvent(ConfigType type, CheckedRegistry registry) { + super(type, registry); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index a38adcab1..25ebf41ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -22,6 +22,8 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; +import com.dfsek.terra.api.event.events.config.type.ConfigTypePostLoadEvent; +import com.dfsek.terra.api.event.events.config.type.ConfigTypePreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @@ -244,6 +246,7 @@ public class ConfigPackImpl implements ConfigPack { for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); + main.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry)); for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { Object loaded = ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main); @@ -253,6 +256,7 @@ public class ConfigPackImpl implements ConfigPack { throw new LoadException("Duplicate registry entry: ", e); } } + main.getEventManager().callEvent(new ConfigTypePostLoadEvent(configType, registry)); } main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this, template -> selfLoader.load(template, configuration))); From 9d2ae0a828d07d6f5c294ff1acbf94c4909ba300 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 14:45:26 -0700 Subject: [PATCH 0189/1529] fix fabric tree injection issue --- .../events/config/ConfigurationLoadEvent.java | 4 ++ .../config/type/ConfigTypeLoadEvent.java | 11 ++++- .../config/type/ConfigTypePostLoadEvent.java | 5 +- .../config/type/ConfigTypePreLoadEvent.java | 5 +- .../terra/config/pack/ConfigPackImpl.java | 4 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 48 +++++++++++-------- 6 files changed, 48 insertions(+), 29 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 8c6aa5b90..2f50fc62a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -48,6 +48,10 @@ public class ConfigurationLoadEvent implements PackEvent { return type; } + public boolean is(Class clazz) { + return clazz.isAssignableFrom(type.getTypeClass()); + } + @SuppressWarnings("unchecked") public T getLoadedObject(Class clazz) { if(!clazz.isAssignableFrom(type.getTypeClass())) diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index b604bcf04..a23e90a9c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -9,14 +9,21 @@ public abstract class ConfigTypeLoadEvent implements PackEvent { private final ConfigType type; private final CheckedRegistry registry; - public ConfigTypeLoadEvent(ConfigType type, CheckedRegistry registry) { + private final ConfigPack pack; + + public ConfigTypeLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { this.type = type; this.registry = registry; + this.pack = pack; } @Override public ConfigPack getPack() { - return null; + return pack; + } + + public boolean is(Class clazz) { + return clazz.isAssignableFrom(type.getTypeClass()); } @SuppressWarnings("unchecked") diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java index 35ddba976..d89306ab6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.event.events.config.type; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; public class ConfigTypePostLoadEvent extends ConfigTypeLoadEvent{ - public ConfigTypePostLoadEvent(ConfigType type, CheckedRegistry registry) { - super(type, registry); + public ConfigTypePostLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { + super(type, registry, pack); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java index 3be1e9586..baaaee404 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.event.events.config.type; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; public class ConfigTypePreLoadEvent extends ConfigTypeLoadEvent{ - public ConfigTypePreLoadEvent(ConfigType type, CheckedRegistry registry) { - super(type, registry); + public ConfigTypePreLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { + super(type, registry, pack); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 25ebf41ac..cdb8087ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -246,7 +246,7 @@ public class ConfigPackImpl implements ConfigPack { for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); - main.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry)); + main.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry, this)); for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { Object loaded = ((ConfigFactory) configType.getFactory()).build(selfLoader.load(configType.getTemplate(this, main), config), main); @@ -256,7 +256,7 @@ public class ConfigPackImpl implements ConfigPack { throw new LoadException("Duplicate registry entry: ", e); } } - main.getEventManager().callEvent(new ConfigTypePostLoadEvent(configType, registry)); + main.getEventManager().callEvent(new ConfigTypePostLoadEvent(configType, registry, this)); } main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this, template -> selfLoader.load(template, configuration))); 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 5c238344e..697fc746f 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 @@ -20,6 +20,7 @@ import com.dfsek.terra.api.event.annotations.Global; import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.events.config.type.ConfigTypePostLoadEvent; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; @@ -295,9 +296,34 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { eventManager.registerListener(this, this); } + @Global + public void onPackLoad(ConfigPackPreLoadEvent event) { + PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); + try { + event.loadTemplate(template); + } catch(ConfigException e) { + e.printStackTrace(); + } + + if(template.doRegistryInjection()) { + BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { + if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { + try { + event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); + } catch(DuplicateEntryException ignored) { + } + } + }); + } + templates.put(event.getPack(), Pair.of(template, null)); + + } + @Priority(Priority.HIGHEST) @Global - public void injectTrees(ConfigPackPreLoadEvent event) { + public void injectTrees(ConfigTypePostLoadEvent event) { + if(!event.is(Tree.class)) return; CheckedRegistry treeRegistry = event.getPack().getOrCreateRegistry(Tree.class); injectTree(treeRegistry, "BROWN_MUSHROOM", ConfiguredFeatures.HUGE_BROWN_MUSHROOM); injectTree(treeRegistry, "RED_MUSHROOM", ConfiguredFeatures.HUGE_RED_MUSHROOM); @@ -318,26 +344,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { injectTree(treeRegistry, "MEGA_SPRUCE", ConfiguredFeatures.MEGA_SPRUCE); injectTree(treeRegistry, "CRIMSON_FUNGUS", ConfiguredFeatures.CRIMSON_FUNGI); injectTree(treeRegistry, "WARPED_FUNGUS", ConfiguredFeatures.WARPED_FUNGI); - - PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - if(template.doRegistryInjection()) { - BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { - if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { - try { - event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); - debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); - } catch(DuplicateEntryException ignored) { - } - } - }); - } - templates.put(event.getPack(), Pair.of(template, null)); } @Priority(Priority.HIGHEST) From 319df9e638d23a549602c51c17f017c0d7c35120 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 14:58:11 -0700 Subject: [PATCH 0190/1529] clean up biome template --- .../terra/addons/biome/BiomeTemplate.java | 20 ------------------- .../biome/command/biome/BiomeInfoCommand.java | 11 ---------- 2 files changed, 31 deletions(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 8ac3e1ad4..0643e3ada 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -74,17 +74,9 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private int blendStep = 4; - @Value("structures") - @Default - private List structures = new ArrayList<>(); - @Value("noise") private NoiseSeeded noiseEquation; - /*@Value("ores") - @Default - private OreHolder oreHolder = new OreHolder();*/ - @Value("ocean.level") @Default private int seaLevel = 62; @@ -100,14 +92,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private double elevationWeight = 1; - /*@Value("flora") - @Default - private List flora = new ArrayList<>(); - - @Value("trees") - @Default - private List trees = new ArrayList<>();*/ - @Value("slabs.enable") @Default private boolean doSlabs = false; @@ -233,10 +217,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return vanilla; } - public List getStructures() { - return structures; - } - public NoiseSeeded getNoiseEquation() { return noiseEquation; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java index e7ffbd11c..b208484a4 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java @@ -41,17 +41,6 @@ public class BiomeInfoCommand implements CommandTemplate { sender.sendMessage("------Parent Biomes-----"); bio.getExtended().forEach(id -> sender.sendMessage(" - " + id)); } - - List structureConfigs = bio.getStructures(); - - if(structureConfigs.size() == 0) { - sender.sendMessage("No Structures"); - } else { - sender.sendMessage("-------Structures-------"); - for(ConfiguredStructure c : structureConfigs) { - sender.sendMessage(" - " + c); - } - } } } } From 2cd71cdcd3c54d9f90b27f133d252b603658bc1b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 17:57:54 -0700 Subject: [PATCH 0191/1529] slant palette things --- .../generators/NoiseChunkGenerator3D.java | 27 ++++++++++++++ .../chunkgenerator/palette/PaletteHolder.java | 22 ++++++++++++ .../palette/PaletteHolderBuilder.java | 36 +++++++++++++++++++ .../palette/PaletteHolderLoader.java | 25 +++++++++++++ .../chunkgenerator/palette}/SlantHolder.java | 3 +- .../terra/addons/biome/BiomeConfigAddon.java | 4 +-- .../terra/addons/biome/BiomeTemplate.java | 11 ------ .../terra/addons/biome/UserDefinedBiome.java | 4 +-- .../addons/biome/UserDefinedBiomeBuilder.java | 2 +- ...nerator.java => UserDefinedGenerator.java} | 7 ++-- .../world/generator/TerraChunkGenerator.java | 8 +++++ .../com/dfsek/terra/world/TerraWorldImpl.java | 20 +---------- 12 files changed, 126 insertions(+), 43 deletions(-) create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java rename common/addons/{config-biome/src/main/java/com/dfsek/terra/addons/biome/slant => chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette}/SlantHolder.java (82%) rename common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/{WorldGenerator.java => UserDefinedGenerator.java} (80%) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 4ea9242bf..9a41a67ae 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -16,9 +16,11 @@ 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.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -30,9 +32,12 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final TerraPlugin main; private final List blockPopulators = new ArrayList<>(); + private final BlockState air; + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; + this.air = main.getWorldHandle().air(); c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c))); } @@ -148,4 +153,26 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { public List getGenerationStages() { return blockPopulators; } + + @Override + public BlockState getBlock(World world, int x, int y, int z) { + TerraWorld terraWorld = main.getWorld(world); + BiomeProvider provider = terraWorld.getBiomeProvider(); + TerraBiome biome = provider.getBiome(x, z); + Palette palette = biome.getGenerator(world).getPaletteSettings().getPalette(y); + Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); + int fdX = FastMath.floorMod(x, 16); + int fdZ = FastMath.floorMod(z, 16); + double noise = sampler.sample(fdX, y, fdZ); + if(noise > 0) { + int level = 0; + for(int yi = world.getMaxHeight() - 1; yi > y; yi--) { + if(sampler.sample(fdX, yi, fdZ) > 0) level++; + else level = 0; + } + return palette.get(level, x, y, z); + } /* else if(y <= biome.getConfig().getSeaLevel()) { + return biome.getConfig().getOceanPalette().get(biome.getConfig().getSeaLevel() - y, x, y, z); + } */ else return air; + } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java new file mode 100644 index 000000000..e6c009a55 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.terra.api.world.generator.Palette; + +public class PaletteHolder { + private final Palette[] palettes; + private final int offset; + + protected PaletteHolder(Palette[] palettes, int offset) { + this.palettes = palettes; + this.offset = offset; + } + + public Palette getPalette(int y) { + int index = y + offset; + return index >= 0 + ? index < palettes.length + ? palettes[index] + : palettes[palettes.length - 1] + : palettes[0]; + } +} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java new file mode 100644 index 000000000..485c03c9d --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java @@ -0,0 +1,36 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.terra.api.world.generator.Palette; +import net.jafama.FastMath; + +import java.util.Map; +import java.util.TreeMap; + +public class PaletteHolderBuilder { + private final TreeMap paletteMap = new TreeMap<>(); + + public PaletteHolderBuilder add(int y, Palette palette) { + paletteMap.put(y, palette); + return this; + } + + public PaletteHolder build() { + + int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); + int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); + + Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; + for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { + Palette d = null; + for(Map.Entry e : paletteMap.entrySet()) { + if(e.getKey() >= y) { + d = e.getValue(); + break; + } + } + if(d == null) throw new IllegalArgumentException("No palette for Y=" + y); + palettes[y - min] = d; + } + return new PaletteHolder(palettes, -min); + } +} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java new file mode 100644 index 000000000..61286fe69 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.world.generator.Palette; + +import java.lang.reflect.AnnotatedType; +import java.util.List; +import java.util.Map; + +public class PaletteHolderLoader implements TypeLoader { + @SuppressWarnings("unchecked") + @Override + public PaletteHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { + List> palette = (List>) o; + PaletteHolderBuilder builder = new PaletteHolderBuilder(); + for(Map layer : palette) { + for(Map.Entry entry : layer.entrySet()) { + builder.add(entry.getValue(), configLoader.loadType(Palette.class, entry.getKey())); + } + } + return builder.build(); + } +} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java similarity index 82% rename from common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java rename to common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java index f893b76e9..3b8e3fc73 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/slant/SlantHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.biome.slant; +package com.dfsek.terra.addons.chunkgenerator.palette; -import com.dfsek.terra.addons.biome.holder.PaletteHolder; import java.util.TreeMap; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java index ab0740c71..1fae0d0e1 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; -import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -26,7 +25,6 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) { event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); - event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()) - .applyLoader(SlantHolder.class, (t, o, l) -> null); + event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 0643e3ada..9d1f7e84b 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -8,18 +8,15 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.addons.biome.holder.PaletteHolder; -import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -51,10 +48,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("palette") private PaletteHolder palette; - @Value("slant") - @Default - private SlantHolder slant = null; - @Value("vanilla") private ProbabilityCollection vanilla; @@ -161,10 +154,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return interpolateElevation; } - public SlantHolder getSlant() { - return slant; - } - public double getSlabThreshold() { return slabThreshold; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index 8ddbeef4e..d1cb0f318 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -12,7 +12,7 @@ import java.util.Set; * Class representing a config-defined biome */ public class UserDefinedBiome implements TerraBiome { - private final WorldGenerator gen; + private final UserDefinedGenerator gen; private final ProbabilityCollection vanilla; private final String id; private final BiomeTemplate config; @@ -20,7 +20,7 @@ public class UserDefinedBiome implements TerraBiome { private final Set tags; - public UserDefinedBiome(ProbabilityCollection vanilla, WorldGenerator gen, BiomeTemplate config) { + public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index 79cb3cca1..48722b3d6 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -24,7 +24,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { synchronized(biomeMap) { return biomeMap.computeIfAbsent(seed, s -> { - WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlant(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), + UserDefinedGenerator generator = new UserDefinedGenerator(template.getPalette(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java similarity index 80% rename from common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java index 16a9716eb..93ad7edee 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/WorldGenerator.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java @@ -1,14 +1,12 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.addons.biome.holder.PaletteHolder; -import com.dfsek.terra.addons.biome.slant.SlantHolder; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.PaletteSettings; -public class WorldGenerator implements Generator { +public class UserDefinedGenerator implements Generator { private final PaletteSettings paletteSettings; - private final SlantHolder slantPalettes; private final NoiseSampler noise; private final NoiseSampler elevation; @@ -20,9 +18,8 @@ public class WorldGenerator implements Generator { private final int blendStep; private final double blendWeight; - public WorldGenerator(PaletteHolder palettes, SlantHolder slantPalettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { + public UserDefinedGenerator(PaletteHolder palettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { this.paletteSettings = new PaletteSettingsImpl(palettes); - this.slantPalettes = slantPalettes; this.noise = noise; this.elevation = elevation; this.carving = carving; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java index a12230672..e2ef1241a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java @@ -1,7 +1,9 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -22,4 +24,10 @@ public interface TerraChunkGenerator { Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth); List getGenerationStages(); + + BlockState getBlock(World world, int x, int y, int z); + + default BlockState getBlock(World world, Vector3 vector3) { + return getBlock(world, vector3.getBlockX(), vector3.getBlockY(), vector3.getBlockZ()); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index 8e6864d14..87d31dc91 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -18,8 +18,6 @@ public class TerraWorldImpl implements TerraWorld { private final BiomeProvider provider; private final WorldConfigImpl config; private final World world; - private final BlockState air; - public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); @@ -27,7 +25,6 @@ public class TerraWorldImpl implements TerraWorld { config = (WorldConfigImpl) c.toWorldConfig(this); this.provider = config.getProvider(); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); - this.air = main.getWorldHandle().air(); } @@ -50,22 +47,7 @@ public class TerraWorldImpl implements TerraWorld { @Override public BlockState getUngeneratedBlock(int x, int y, int z) { - TerraBiome biome = provider.getBiome(x, z); - Palette palette = biome.getGenerator(world).getPaletteSettings().getPalette(y); - Sampler sampler = config.getSamplerCache().get(x, z); - int fdX = FastMath.floorMod(x, 16); - int fdZ = FastMath.floorMod(z, 16); - double noise = sampler.sample(fdX, y, fdZ); - if(noise > 0) { - int level = 0; - for(int yi = world.getMaxHeight() - 1; yi > y; yi--) { - if(sampler.sample(fdX, yi, fdZ) > 0) level++; - else level = 0; - } - return palette.get(level, x, y, z); - } /* else if(y <= biome.getConfig().getSeaLevel()) { - return biome.getConfig().getOceanPalette().get(biome.getConfig().getSeaLevel() - y, x, y, z); - } */ else return air; + return world.getTerraGenerator().getBlock(world, x, y, z); } @Override From 9e7bab340ef58e93854000284a62288c058c207b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 18:09:06 -0700 Subject: [PATCH 0192/1529] slant palette loading --- .../NoiseChunkGenerator3DAddon.java | 3 ++ .../palette/SlantHolderLoader.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 03c2dd66b..daee1ebd1 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -26,5 +28,6 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); + event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java new file mode 100644 index 000000000..5f4efd908 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.AnnotatedType; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +@SuppressWarnings("unchecked") +public class SlantHolderLoader implements TypeLoader { + @Override + public SlantHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { + List> layers = (List>) o; + TreeMap slantLayers = new TreeMap<>(); + double minThreshold = Double.MAX_VALUE; + + for(Map layer : layers) { + double threshold = ((Number) layer.get("threshold")).doubleValue(); + if(threshold < minThreshold) minThreshold = threshold; + slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); + } + + return new SlantHolder(slantLayers, minThreshold); + } +} From 0bd6ff94699aadcf3693ab9fb68da2ba19734d7d Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 15 Jul 2021 20:01:36 -0700 Subject: [PATCH 0193/1529] load palettes in chunk generator --- .../chunkgenerator/BiomePaletteTemplate.java | 30 ++++++++++++++++ .../NoiseChunkGenerator3DAddon.java | 16 +++++++++ .../chunkgenerator/palette/PaletteInfo.java | 34 +++++++++++++++++++ .../palette/SlantHolderLoader.java | 2 +- .../events/config/ConfigurationLoadEvent.java | 5 +++ 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java create mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java new file mode 100644 index 000000000..99fa8292d --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.chunkgenerator; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; +import com.dfsek.terra.api.world.generator.Palette; + +public class BiomePaletteTemplate implements ObjectTemplate { + @Value("palette") + private PaletteHolder palette; + + @Value("slant") + @Default + private SlantHolder slant = null; + + @Value("ocean.level") + private int seaLevel; + + @Value("ocean.palette") + private Palette oceanPalette; + + @Override + public PaletteInfo get() { + return new PaletteInfo(palette, slant, oceanPalette, seaLevel); + } +} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index daee1ebd1..53bd71e23 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; import com.dfsek.terra.api.TerraPlugin; @@ -9,11 +11,16 @@ 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; +import java.util.HashMap; +import java.util.Map; + @Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") @@ -21,6 +28,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe @Inject private TerraPlugin main; + private final Map palettes = new HashMap<>(); + @Override public void initialize() { main.getEventManager().registerListener(this, this); @@ -30,4 +39,11 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()); } + + public void onBiomeLoad(ConfigurationLoadEvent event) { + if(event.is(TerraBiome.class)) { + TerraBiome biome = event.getLoadedObject(); + palettes.put(biome, event.load(new BiomePaletteTemplate()).get()); + } + } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java new file mode 100644 index 000000000..7323e0965 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.addons.chunkgenerator.palette; + +import com.dfsek.terra.api.world.generator.Palette; + +public class PaletteInfo { + private final PaletteHolder paletteHolder; + private final SlantHolder slantHolder; + private final Palette ocean; + + private final int seaLevel; + + public PaletteInfo(PaletteHolder paletteHolder, SlantHolder slantHolder, Palette ocean, int seaLevel) { + this.paletteHolder = paletteHolder; + this.slantHolder = slantHolder; + this.ocean = ocean; + this.seaLevel = seaLevel; + } + + public Palette getOcean() { + return ocean; + } + + public PaletteHolder getPaletteHolder() { + return paletteHolder; + } + + public SlantHolder getSlantHolder() { + return slantHolder; + } + + public int getSeaLevel() { + return seaLevel; + } +} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java index 5f4efd908..6b7e0a8b3 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java @@ -20,7 +20,7 @@ public class SlantHolderLoader implements TypeLoader { for(Map layer : layers) { double threshold = ((Number) layer.get("threshold")).doubleValue(); if(threshold < minThreshold) minThreshold = threshold; - slantLayers.put(threshold, (PaletteHolder) configLoader.loadType(PaletteHolder.class, layer.get("palette"))); + slantLayers.put(threshold, configLoader.loadType(PaletteHolder.class, layer.get("palette"))); } return new SlantHolder(slantLayers, minThreshold); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 2f50fc62a..49dcdbf83 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -58,4 +58,9 @@ public class ConfigurationLoadEvent implements PackEvent { throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); return (T) loaded; } + + @SuppressWarnings("unchecked") + public T getLoadedObject() { + return (T) loaded; + } } From 2e6b62d690d8fd2c96e067587096e6ad6e636d93 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 16 Jul 2021 12:07:10 -0700 Subject: [PATCH 0194/1529] ocean and slant palettes --- .../chunkgenerator/BiomePaletteTemplate.java | 1 - .../NoiseChunkGenerator3DAddon.java | 18 +++++++---- .../addons/chunkgenerator/PaletteUtil.java | 11 +++---- .../generators/NoiseChunkGenerator3D.java | 31 ++++++++++++++----- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java index 99fa8292d..86ca44180 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 53bd71e23..1f7c0910b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; @@ -15,6 +16,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @@ -28,7 +30,7 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe @Inject private TerraPlugin main; - private final Map palettes = new HashMap<>(); + private final Map palettes = new HashMap<>(); @Override public void initialize() { @@ -36,14 +38,18 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); - event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()); + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main, this)); + event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()) + .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(TerraBiome.class)) { - TerraBiome biome = event.getLoadedObject(); - palettes.put(biome, event.load(new BiomePaletteTemplate()).get()); + if(event.is(BiomeBuilder.class)) { + palettes.put(event.getConfiguration().getID(), event.load(new BiomePaletteTemplate()).get()); } } + + public PaletteInfo getPalette(TerraBiome biome) { + return palettes.get(biome.getID()); + } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java index 140ce2d18..d6e08e5b1 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java @@ -1,14 +1,15 @@ package com.dfsek.terra.addons.chunkgenerator; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; public final class PaletteUtil { - public static Palette getPalette(int x, int y, int z, Generator c, Sampler sampler) { - - /* - SlantHolder slant = c.getSlant(); + public static Palette getPalette(int x, int y, int z, Generator c, Sampler sampler, PaletteInfo paletteInfo) { + SlantHolder slant = paletteInfo.getSlantHolder(); if(slant != null) { double slope = MathUtil.derivative(sampler, x, y, z); if(slope > slant.getMinSlope()) { @@ -16,8 +17,6 @@ public final class PaletteUtil { } } - */ - return c.getPaletteSettings().getPalette(y); } } \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 9a41a67ae..df703888d 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -1,13 +1,17 @@ package com.dfsek.terra.addons.chunkgenerator.generation.generators; +import com.dfsek.terra.addons.chunkgenerator.NoiseChunkGenerator3DAddon; import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; +import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.api.TerraPlugin; 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.config.ConfigPack; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; @@ -30,14 +34,17 @@ import java.util.Random; public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; + + private final NoiseChunkGenerator3DAddon addon; private final List blockPopulators = new ArrayList<>(); private final BlockState air; - public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main, NoiseChunkGenerator3DAddon addon) { this.configPack = c; this.main = main; this.air = main.getWorldHandle().air(); + this.addon = addon; c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c))); } @@ -88,27 +95,35 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { int cx = xOrig + x; int cz = zOrig + z; - TerraBiome b = grid.getBiome(cx, cz); - Generator g = b.getGenerator(world); + TerraBiome biome = grid.getBiome(cx, cz); - //int sea = c.getSeaLevel(); - //Palette seaPalette = c.getOceanPalette(); + PaletteInfo paletteInfo = addon.getPalette(biome); + + if(paletteInfo == null) { + main.logger().info("null palette: " + biome.getID()); + } + + Generator generator = biome.getGenerator(world); + + int sea = paletteInfo.getSeaLevel(); + Palette seaPalette = paletteInfo.getOcean(); boolean justSet = false; BlockState data = null; for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { if(sampler.sample(x, y, z) > 0) { justSet = true; - data = PaletteUtil.getPalette(x, y, z, g, sampler).get(paletteLevel, cx, y, cz); + + data = PaletteUtil.getPalette(x, y, z, generator, sampler, paletteInfo).get(paletteLevel, cx, y, cz); chunk.setBlock(x, y, z, data); paletteLevel++; - } /*else if(y <= sea) { + } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); justSet = false; paletteLevel = 0; - } */ else { + } else { justSet = false; paletteLevel = 0; From 646d8970aac8b2db05a7953317d1ac9aee99eaa5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 16 Jul 2021 12:38:47 -0700 Subject: [PATCH 0195/1529] remove palette definition from base biome config --- .../addons/chunkgenerator/PaletteUtil.java | 2 +- .../generators/NoiseChunkGenerator3D.java | 10 ++++++---- .../dfsek/terra/addons/biome/BiomeFactory.java | 2 +- .../terra/addons/biome/BiomeTemplate.java | 18 ------------------ .../addons/biome/UserDefinedBiomeBuilder.java | 6 ++---- .../addons/biome/UserDefinedGenerator.java | 9 +-------- .../dfsek/terra/api/world/biome/Generator.java | 2 -- 7 files changed, 11 insertions(+), 38 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java index d6e08e5b1..99090f03e 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java @@ -17,6 +17,6 @@ public final class PaletteUtil { } } - return c.getPaletteSettings().getPalette(y); + return paletteInfo.getPaletteHolder().getPalette(y); } } \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index df703888d..e576de89b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -174,8 +174,10 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraWorld terraWorld = main.getWorld(world); BiomeProvider provider = terraWorld.getBiomeProvider(); TerraBiome biome = provider.getBiome(x, z); - Palette palette = biome.getGenerator(world).getPaletteSettings().getPalette(y); Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); + + PaletteInfo paletteInfo = addon.getPalette(biome); + Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); double noise = sampler.sample(fdX, y, fdZ); @@ -186,8 +188,8 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { else level = 0; } return palette.get(level, x, y, z); - } /* else if(y <= biome.getConfig().getSeaLevel()) { - return biome.getConfig().getOceanPalette().get(biome.getConfig().getSeaLevel() - y, x, y, z); - } */ else return air; + } else if(y <= paletteInfo.getSeaLevel()) { + return paletteInfo.getOcean().get(paletteInfo.getSeaLevel() - y, x, y, z); + } else return air; } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index 952ffc7d8..e3cd52015 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -14,6 +14,6 @@ public class BiomeFactory implements ConfigFactory @Override public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) { - return new UserDefinedBiomeBuilder(template, pack); + return new UserDefinedBiomeBuilder(template); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 9d1f7e84b..01fb7a3e0 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -45,9 +45,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private NoiseSeeded carvingEquation = NoiseSeeded.zero(3); - @Value("palette") - private PaletteHolder palette; - @Value("vanilla") private ProbabilityCollection vanilla; @@ -74,9 +71,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private int seaLevel = 62; - @Value("ocean.palette") - private Palette oceanPalette; - @Value("elevation.equation") @Default private NoiseSeeded elevationEquation = NoiseSeeded.zero(2); @@ -114,10 +108,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Default private Set tags = new HashSet<>(); - /*@Value("carving") - @Default - private Map carvers = new HashMap<>();*/ - @Value("colors") @Default private Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). @@ -190,18 +180,10 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return seaLevel; } - public Palette getOceanPalette() { - return oceanPalette; - } - public String getID() { return id; } - public PaletteHolder getPalette() { - return palette; - } - public ProbabilityCollection getVanilla() { return vanilla; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index 48722b3d6..48bcfb08b 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -10,13 +10,11 @@ import java.util.concurrent.ConcurrentHashMap; public class UserDefinedBiomeBuilder implements BiomeBuilder { private final BiomeTemplate template; - private final ConfigPack pack; private final Map biomeMap = new ConcurrentHashMap<>(); - public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPack pack) { + public UserDefinedBiomeBuilder(BiomeTemplate template) { this.template = template; - this.pack = pack; } @Override @@ -24,7 +22,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { synchronized(biomeMap) { return biomeMap.computeIfAbsent(seed, s -> { - UserDefinedGenerator generator = new UserDefinedGenerator(template.getPalette(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), + UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java index 93ad7edee..268f18a64 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.PaletteSettings; public class UserDefinedGenerator implements Generator { - private final PaletteSettings paletteSettings; private final NoiseSampler noise; private final NoiseSampler elevation; @@ -18,8 +17,7 @@ public class UserDefinedGenerator implements Generator { private final int blendStep; private final double blendWeight; - public UserDefinedGenerator(PaletteHolder palettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { - this.paletteSettings = new PaletteSettingsImpl(palettes); + public UserDefinedGenerator(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { this.noise = noise; this.elevation = elevation; this.carving = carving; @@ -56,11 +54,6 @@ public class UserDefinedGenerator implements Generator { return blendWeight; } - @Override - public PaletteSettings getPaletteSettings() { - return paletteSettings; - } - @Override public NoiseSampler getBiomeNoise() { return biomeNoise; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java index 710fbdeb9..f8d6b14a3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java @@ -28,8 +28,6 @@ public interface Generator { double getWeight(); - PaletteSettings getPaletteSettings(); - NoiseSampler getBiomeNoise(); double getElevationWeight(); From 60edef989c51388d91e165fe948e78c97f65a86e Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:22:21 -0700 Subject: [PATCH 0196/1529] create simple property API --- .../dfsek/terra/api/properties/Context.java | 21 +++++++++++++++++++ .../terra/api/properties/Properties.java | 4 ++++ .../terra/api/properties/PropertyHolder.java | 5 +++++ 3 files changed, 30 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/properties/Context.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/properties/Properties.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java new file mode 100644 index 000000000..e9d76a6e8 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.api.properties; + +import java.util.HashMap; +import java.util.Map; + +public class Context { + private final Map, Properties> map = new HashMap<>(); + + @SuppressWarnings("unchecked") + public T get(Class clazz) { + return (T) map.computeIfAbsent(clazz, k -> { + throw new IllegalArgumentException("No properties registered for class " + clazz.getCanonicalName()); + }); + } + + public Context put(Properties properties) { + if(map.containsKey(properties.getClass())) throw new IllegalArgumentException("Property for class " + properties.getClass().getCanonicalName() + " already registered."); + map.put(properties.getClass(), properties); + return this; + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/Properties.java b/common/api/src/main/java/com/dfsek/terra/api/properties/Properties.java new file mode 100644 index 000000000..43360d347 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/Properties.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.api.properties; + +public interface Properties { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java b/common/api/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java new file mode 100644 index 000000000..7fe882ab7 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.properties; + +public interface PropertyHolder { + Context getContext(); +} From b1589ed0469f076133d38a5c6a455d0c57816604 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:23:40 -0700 Subject: [PATCH 0197/1529] implement PropertyHolder in TerraBiome --- .../com/dfsek/terra/addons/biome/UserDefinedBiome.java | 7 +++++++ .../java/com/dfsek/terra/api/world/biome/TerraBiome.java | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index d1cb0f318..015fdc728 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.biome; +import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; @@ -19,6 +20,7 @@ public class UserDefinedBiome implements TerraBiome { private final int color; private final Set tags; + private final Context context = new Context(); public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config) { this.vanilla = vanilla; @@ -68,4 +70,9 @@ public class UserDefinedBiome implements TerraBiome { public String toString() { return "{BIOME:" + getID() + "}"; } + + @Override + public Context getContext() { + return context; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index ecf3a1c92..92464823b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome; +import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; @@ -9,7 +10,7 @@ import java.util.Set; /** * Represents a custom biome */ -public interface TerraBiome { +public interface TerraBiome extends PropertyHolder { /** * Gets the Vanilla biome to represent the custom biome. From a66641cb8adfe93b6759650ff984d34a5a32bba5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:27:15 -0700 Subject: [PATCH 0198/1529] create Linked annotation and link TerraBiome and BiomeBuilder --- .../terra/addons/biome/UserDefinedBiome.java | 5 +++-- .../addons/biome/UserDefinedBiomeBuilder.java | 10 ++++++++-- .../api/properties/annotations/Linked.java | 18 ++++++++++++++++++ .../terra/api/util/seeded/BiomeBuilder.java | 5 ++++- .../terra/api/world/biome/TerraBiome.java | 3 +++ 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index 015fdc728..d3a2332ea 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -20,15 +20,16 @@ public class UserDefinedBiome implements TerraBiome { private final int color; private final Set tags; - private final Context context = new Context(); + private final Context context; - public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config) { + public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config, Context context) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); this.config = config; this.color = config.getColor(); this.tags = config.getTags(); + this.context = context; tags.add("BIOME:" + id); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java index 48bcfb08b..9d4a25a6f 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.biome.Biome; @@ -10,6 +10,7 @@ import java.util.concurrent.ConcurrentHashMap; public class UserDefinedBiomeBuilder implements BiomeBuilder { private final BiomeTemplate template; + private final Context context = new Context(); private final Map biomeMap = new ConcurrentHashMap<>(); @@ -24,7 +25,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { s -> { UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); - return new UserDefinedBiome(template.getVanilla(), generator, template); + return new UserDefinedBiome(template.getVanilla(), generator, template, context); } ); } @@ -34,4 +35,9 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { public ProbabilityCollection getVanillaBiomes() { return template.getVanilla(); } + + @Override + public Context getContext() { + return context; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java b/common/api/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java new file mode 100644 index 000000000..a717fb214 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.api.properties.annotations; + +import com.dfsek.terra.api.properties.PropertyHolder; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Specifies that this property holder shares properties + * with the {@link #value()} holder. + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.CLASS) +public @interface Linked { + Class value(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java index 9a47e834d..f27567cb3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java @@ -1,9 +1,12 @@ package com.dfsek.terra.api.util.seeded; +import com.dfsek.terra.api.properties.PropertyHolder; +import com.dfsek.terra.api.properties.annotations.Linked; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.TerraBiome; -public interface BiomeBuilder extends SeededBuilder { +@Linked(TerraBiome.class) +public interface BiomeBuilder extends SeededBuilder, PropertyHolder { ProbabilityCollection getVanillaBiomes(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 92464823b..68abb8d73 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -2,7 +2,9 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.properties.PropertyHolder; +import com.dfsek.terra.api.properties.annotations.Linked; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.world.World; import java.util.Set; @@ -10,6 +12,7 @@ import java.util.Set; /** * Represents a custom biome */ +@Linked(BiomeBuilder.class) public interface TerraBiome extends PropertyHolder { /** From a673f961b349db45075832819a622258b06adb26 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:34:14 -0700 Subject: [PATCH 0199/1529] property-ify Chunk Generator addon --- .../NoiseChunkGenerator3DAddon.java | 15 ++------------- .../generators/NoiseChunkGenerator3D.java | 18 ++++++------------ .../chunkgenerator/palette/PaletteInfo.java | 3 ++- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 1f7c0910b..d6340a8ed 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; import com.dfsek.terra.api.TerraPlugin; @@ -17,12 +16,8 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; -import java.util.HashMap; -import java.util.Map; - @Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") @@ -30,26 +25,20 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe @Inject private TerraPlugin main; - private final Map palettes = new HashMap<>(); - @Override public void initialize() { main.getEventManager().registerListener(this, this); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main, this)); + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()) .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } public void onBiomeLoad(ConfigurationLoadEvent event) { if(event.is(BiomeBuilder.class)) { - palettes.put(event.getConfiguration().getID(), event.load(new BiomePaletteTemplate()).get()); + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } } - - public PaletteInfo getPalette(TerraBiome biome) { - return palettes.get(biome.getID()); - } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index e576de89b..b7f3958d3 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -1,17 +1,14 @@ package com.dfsek.terra.addons.chunkgenerator.generation.generators; -import com.dfsek.terra.addons.chunkgenerator.NoiseChunkGenerator3DAddon; import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.api.TerraPlugin; 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.config.ConfigPack; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; @@ -34,18 +31,15 @@ import java.util.Random; public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - - private final NoiseChunkGenerator3DAddon addon; - private final List blockPopulators = new ArrayList<>(); + private final List generationStages = new ArrayList<>(); private final BlockState air; - public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main, NoiseChunkGenerator3DAddon addon) { + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; this.air = main.getWorldHandle().air(); - this.addon = addon; - c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c))); + c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c))); } @SuppressWarnings({"try"}) @@ -97,7 +91,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraBiome biome = grid.getBiome(cx, cz); - PaletteInfo paletteInfo = addon.getPalette(biome); + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); if(paletteInfo == null) { main.logger().info("null palette: " + biome.getID()); @@ -166,7 +160,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { @Override public List getGenerationStages() { - return blockPopulators; + return generationStages; } @Override @@ -176,7 +170,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraBiome biome = provider.getBiome(x, z); Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); - PaletteInfo paletteInfo = addon.getPalette(biome); + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java index 7323e0965..109da179b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java @@ -1,8 +1,9 @@ package com.dfsek.terra.addons.chunkgenerator.palette; +import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.world.generator.Palette; -public class PaletteInfo { +public class PaletteInfo implements Properties { private final PaletteHolder paletteHolder; private final SlantHolder slantHolder; private final Palette ocean; From 5bae639923d01e5d01c1d8c9b921127858e18bf4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:42:39 -0700 Subject: [PATCH 0200/1529] property-ify flora --- .../dfsek/terra/addons/flora/BiomeFlora.java | 18 ++++++++++++++++++ .../terra/addons/flora/BiomeFloraTemplate.java | 8 +++++--- .../dfsek/terra/addons/flora/FloraAddon.java | 16 ++-------------- .../terra/addons/flora/FloraPopulator.java | 6 ++---- 4 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java new file mode 100644 index 000000000..55661a2cb --- /dev/null +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.flora; + +import com.dfsek.terra.addons.flora.flora.FloraLayer; +import com.dfsek.terra.api.properties.Properties; + +import java.util.List; + +public class BiomeFlora implements Properties { + private final List layers; + + public BiomeFlora(List layers) { + this.layers = layers; + } + + public List getLayers() { + return layers; + } +} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java index 810ea1e90..9bb1c98ce 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java @@ -3,17 +3,19 @@ package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.flora.flora.FloraLayer; import java.util.Collections; import java.util.List; -public class BiomeFloraTemplate implements ConfigTemplate { +public class BiomeFloraTemplate implements ObjectTemplate { @Value("flora") @Default private List flora = Collections.emptyList(); - public List getFlora() { - return flora; + @Override + public BiomeFlora get() { + return new BiomeFlora(flora); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 9477a1f27..189e5213f 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -14,14 +14,8 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - @Addon("config-flora") @Author("Terra") @Version("0.1.0") @@ -29,8 +23,6 @@ public class FloraAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; - private final Map> flora = new HashMap<>(); // store Flora layers per biome by biome ID - @Override public void initialize() { main.getEventManager().registerListener(this, this); @@ -38,18 +30,14 @@ public class FloraAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main, this)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new) .applyLoader(BlockLayer.class, BlockLayerTemplate::new); } public void onBiomeLoad(ConfigurationLoadEvent event) { if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - flora.put(event.getConfiguration().getID(), event.load(new BiomeFloraTemplate()).getFlora()); + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); } } - - public List getFlora(TerraBiome biome) { - return flora.getOrDefault(biome.getID(), Collections.emptyList()); - } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index 7093f5eb6..52ce02ca8 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -23,11 +23,9 @@ import java.util.Random; */ public class FloraPopulator implements TerraGenerationStage { private final TerraPlugin main; - private final FloraAddon floraAddon; - public FloraPopulator(TerraPlugin main, FloraAddon floraAddon) { + public FloraPopulator(TerraPlugin main) { this.main = main; - this.floraAddon = floraAddon; } @SuppressWarnings("try") @@ -42,7 +40,7 @@ public class FloraPopulator implements TerraGenerationStage { for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { Vector2 l = new Vector2(x, z); - layers.put(l, floraAddon.getFlora(provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z))); + layers.put(l, provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z).getContext().get(BiomeFlora.class).getLayers()); } } From 55733b0e288684522eff2db76bbcea02a7264de4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 12:06:48 -0700 Subject: [PATCH 0201/1529] lowercase artifact ID --- settings.gradle.kts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 6056f412e..ee4475810 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,13 +1,5 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/6.6.1/userguide/multi_project_builds.html - */ +rootProject.name = "terra" -rootProject.name = "Terra" include("common:api") include("common:implementation") From f4820e5a06e36054488f36c2d8757ca4dbd56dc3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 12:08:18 -0700 Subject: [PATCH 0202/1529] remove PlaceableLayer.java --- .../population/items/PlaceableLayer.java | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java deleted file mode 100644 index ab1ed2323..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.world.population.items; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.Chunk; - -public abstract class PlaceableLayer { - protected final double density; - protected final Range level; - protected final ProbabilityCollection layer; - protected final NoiseSampler noise; - - public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { - this.density = density; - this.level = level; - this.layer = layer; - this.noise = noise; - } - - public NoiseSampler getNoise() { - return noise; - } - - public double getDensity() { - return density; - } - - public Range getLevel() { - return level; - } - - public ProbabilityCollection getLayer() { - return layer; - } - - public abstract void place(Chunk chunk, Vector2 coords); -} From 810340dbfb699baebb5b629c56dbe2aebeccc726 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 12:24:15 -0700 Subject: [PATCH 0203/1529] property-ify trees --- .../terra/addons/tree/BiomeTreeTemplate.java | 8 +++++--- .../dfsek/terra/addons/tree/BiomeTrees.java | 18 ++++++++++++++++++ .../com/dfsek/terra/addons/tree/TreeAddon.java | 16 ++-------------- .../dfsek/terra/addons/tree/TreePopulator.java | 6 ++---- 4 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java index dc34e10be..df507127b 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java @@ -3,17 +3,19 @@ package com.dfsek.terra.addons.tree; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.Collections; import java.util.List; -public class BiomeTreeTemplate implements ConfigTemplate { +public class BiomeTreeTemplate implements ObjectTemplate { @Value("trees") @Default private List trees = Collections.emptyList(); - public List getTrees() { - return trees; + @Override + public BiomeTrees get() { + return new BiomeTrees(trees); } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java new file mode 100644 index 000000000..095dee68a --- /dev/null +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.tree; + +import com.dfsek.terra.addons.tree.tree.TreeLayer; +import com.dfsek.terra.api.properties.Properties; + +import java.util.List; + +public class BiomeTrees implements Properties { + private final List trees; + + public BiomeTrees(List trees) { + this.trees = trees; + } + + public List getTrees() { + return trees; + } +} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 378f3c40d..bce7b8ec2 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -13,14 +13,8 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - @Addon("config-tree") @Author("Terra") @Version("1.0.0") @@ -28,8 +22,6 @@ public class TreeAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; - private final Map> trees = new HashMap<>(); - @Override public void initialize() { main.getEventManager().registerListener(this, this); @@ -37,17 +29,13 @@ public class TreeAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main, this)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); } public void onBiomeLoad(ConfigurationLoadEvent event) { if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - trees.put(event.getConfiguration().getID(), event.load(new BiomeTreeTemplate()).getTrees()); + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); } } - - public List getTrees(TerraBiome biome) { - return trees.getOrDefault(biome.getID(), Collections.emptyList()); - } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java index 63580a2c7..3449b5505 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java @@ -18,11 +18,9 @@ import java.util.Random; public class TreePopulator implements TerraGenerationStage { private final TerraPlugin main; - private final TreeAddon addon; - public TreePopulator(TerraPlugin main, TreeAddon addon) { + public TreePopulator(TerraPlugin main) { this.main = main; - this.addon = addon; } private static int offset(Random r, int i) { @@ -40,7 +38,7 @@ public class TreePopulator implements TerraGenerationStage { Random random = PopulationUtil.getRandom(chunk); for(int x = 0; x < 16; x += 2) { for(int z = 0; z < 16; z += 2) { - for(TreeLayer layer : addon.getTrees(provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z))) { + for(TreeLayer layer : provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z).getContext().get(BiomeTrees.class).getTrees()) { if(layer.getDensity() >= random.nextDouble() * 100) { layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); } From 72f0b07a38268c3a2f59992a0fd0117fac1634bc Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 12:41:26 -0700 Subject: [PATCH 0204/1529] programmatically include subprojects --- settings.gradle.kts | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index ee4475810..eb7138e27 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,33 +6,18 @@ include("common:implementation") include("common:loader:config") include("common:loader:addon") +fun includeImmediateChildren(dir: File, type: String) { + dir.walkTopDown().maxDepth(1).forEach { + if(!it.isDirectory || !File(it, "build.gradle.kts").exists()) return@forEach + val addonDir = it.relativeTo(file(".")).path.replace("/", ":"); + println("Including $type directory \"$addonDir\" as subproject.") + include(addonDir) + } +} -include("common:addons:biome-provider-image") -include("common:addons:biome-provider-pipeline") -include("common:addons:biome-provider-single") +includeImmediateChildren(file("common/addons"), "addon") -include("common:addons:chunk-generator-noise-3d") - -include("common:addons:config-biome") -include("common:addons:config-carver") -include("common:addons:config-flora") -include("common:addons:config-noise-function") -include("common:addons:config-ore") -include("common:addons:config-palette") -include("common:addons:config-structure") -include("common:addons:config-tree") - -include("common:addons:structure-terrascript-loader") - -include("common:addons:language-yaml") - - - -include("platforms:bukkit") -include("platforms:fabric") -include("platforms:region") -include("platforms:sponge") -include("platforms:forge") +includeImmediateChildren(file("platforms"), "platform") pluginManagement { repositories { From f0e3b1aa1dda2b35b6d0b1bc005c146bd1ea4cc1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:12:04 -0700 Subject: [PATCH 0205/1529] structure addon work --- .../addons/structure/BiomeStructures.java | 18 +++++++++++++++++ .../structure/BiomeStructuresTemplate.java | 20 +++++++++++++++++++ .../addons/structure/StructurePopulator.java | 5 +++-- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java create mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java new file mode 100644 index 000000000..3336fab68 --- /dev/null +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.structure; + +import com.dfsek.terra.api.properties.Properties; +import com.dfsek.terra.api.structure.ConfiguredStructure; + +import java.util.Set; + +public class BiomeStructures implements Properties { + private final Set structures; + + public BiomeStructures(Set structures) { + this.structures = structures; + } + + public Set getStructures() { + return structures; + } +} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java new file mode 100644 index 000000000..7d5d4ce5d --- /dev/null +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.structure; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.ConfiguredStructure; + +import java.util.Collections; +import java.util.Set; + +public class BiomeStructuresTemplate implements ObjectTemplate { + @Value("structures") + @Default + private Set structures = Collections.emptySet(); + + @Override + public BiomeStructures get() { + return new BiomeStructures(structures); + } +} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index bbe61d03e..5fa54b7aa 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -39,8 +39,9 @@ public class StructurePopulator implements TerraGenerationStage, Chunkified { for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); - //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) - // continue; + if(!provider.getBiome(spawn).getContext().get(BiomeStructures.class).getStructures().contains(conf)) { + continue; + } Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } From 2f5751cda733811a28e1fe9ef0ebfe288474c049 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:14:14 -0700 Subject: [PATCH 0206/1529] create flora generation stage submodule --- .../generation-stage-flora/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/generation-stage-flora/build.gradle.kts diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From 3ec536dc038dc72bd193a2376d5d9330a91ac754 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:16:32 -0700 Subject: [PATCH 0207/1529] create FloraGenerationAddon template --- .../flora/FloraGenerationAddon.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java new file mode 100644 index 000000000..44e953a67 --- /dev/null +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -0,0 +1,23 @@ +package com.dfsek.terra.addons.generation.flora; + +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.injection.annotations.Inject; + +@Addon("generation-stage-flora") +@Version("1.0.0") +@Author("Terra") +public class FloraGenerationAddon extends TerraAddon implements EventListener { + + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From 53b5ee2ca99aa168bf0b39556d7591c013891bea Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:25:00 -0700 Subject: [PATCH 0208/1529] split flora addon into separate config and generation addons --- .../com/dfsek/terra/addons/flora/FloraAddon.java | 14 +------------- .../dfsek/terra/addons/flora/FloraFactory.java | 2 +- .../dfsek/terra/addons/flora/FloraTemplate.java | 2 +- .../addons/flora/flora/{ => gen}/TerraFlora.java | 2 +- .../addons/generation}/flora/BiomeFlora.java | 3 +-- .../generation}/flora/BiomeFloraTemplate.java | 4 +--- .../generation/flora/FloraGenerationAddon.java | 15 +++++++++++++++ .../addons/generation}/flora/FloraLayer.java | 2 +- .../generation}/flora/FloraLayerLoader.java | 3 +-- .../addons/generation}/flora/FloraPopulator.java | 4 +--- 10 files changed, 24 insertions(+), 27 deletions(-) rename common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/{ => gen}/TerraFlora.java (99%) rename common/addons/{config-flora/src/main/java/com/dfsek/terra/addons => generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation}/flora/BiomeFlora.java (78%) rename common/addons/{config-flora/src/main/java/com/dfsek/terra/addons => generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation}/flora/BiomeFloraTemplate.java (76%) rename common/addons/{config-flora/src/main/java/com/dfsek/terra/addons/flora => generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation}/flora/FloraLayer.java (96%) rename common/addons/{config-flora/src/main/java/com/dfsek/terra/addons => generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation}/flora/FloraLayerLoader.java (88%) rename common/addons/{config-flora/src/main/java/com/dfsek/terra/addons => generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation}/flora/FloraPopulator.java (93%) diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 189e5213f..6dd284243 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.flora; import com.dfsek.terra.addons.flora.config.BlockLayerTemplate; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; @@ -9,12 +8,9 @@ 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("config-flora") @Author("Terra") @@ -30,14 +26,6 @@ public class FloraAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); - event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new) - .applyLoader(BlockLayer.class, BlockLayerTemplate::new); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); - } + event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index d879bfe7a..4fcf0de15 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.flora; -import com.dfsek.terra.addons.flora.flora.TerraFlora; +import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Flora; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index bb7771535..13c105304 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; +import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.seeded.NoiseSeeded; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java similarity index 99% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java rename to common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java index b3b760d98..b7eef8658 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.flora.flora; +package com.dfsek.terra.addons.flora.flora.gen; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.TerraPlugin; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java similarity index 78% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java index 55661a2cb..dc4b5e789 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFlora.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.flora; +package com.dfsek.terra.addons.generation.flora; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.api.properties.Properties; import java.util.List; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java similarity index 76% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java index 9bb1c98ce..e1413aca6 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/BiomeFloraTemplate.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java @@ -1,10 +1,8 @@ -package com.dfsek.terra.addons.flora; +package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import java.util.Collections; import java.util.List; diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 44e953a67..643a77f43 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -6,7 +6,11 @@ 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.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-flora") @Version("1.0.0") @@ -20,4 +24,15 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener { public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); + } + + public void onBiomeLoad(ConfigurationLoadEvent event) { + if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); + } + } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java similarity index 96% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java index bb3c81a96..d5609e4c9 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.flora.flora; +package com.dfsek.terra.addons.generation.flora; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java similarity index 88% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index cec57ea8c..10f971852 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -1,8 +1,7 @@ -package com.dfsek.terra.addons.flora; +package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java similarity index 93% rename from common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java index 52ce02ca8..12b3214dc 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.flora; +package com.dfsek.terra.addons.generation.flora; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; @@ -8,7 +7,6 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraGenerationStage; import org.jetbrains.annotations.NotNull; From d43f226f2d6b30b136db19a7ce04be0a2de8c64c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:25:24 -0700 Subject: [PATCH 0209/1529] create tree generation stage addon --- .../generation-stage-tree/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/generation-stage-tree/build.gradle.kts diff --git a/common/addons/generation-stage-tree/build.gradle.kts b/common/addons/generation-stage-tree/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/generation-stage-tree/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From 887b17a421996a2ed839fc62b688cadb378dfde6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:26:13 -0700 Subject: [PATCH 0210/1529] refactor FloraPopulator to FloraGenerationStage --- .../terra/addons/generation/flora/FloraGenerationAddon.java | 2 +- .../flora/{FloraPopulator.java => FloraGenerationStage.java} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/{FloraPopulator.java => FloraGenerationStage.java} (94%) diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 643a77f43..37c2becb0 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -27,7 +27,7 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) { event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); } public void onBiomeLoad(ConfigurationLoadEvent event) { diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java similarity index 94% rename from common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java rename to common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 12b3214dc..00a3354b8 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraPopulator.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -19,10 +19,10 @@ import java.util.Random; /** * Populates Flora */ -public class FloraPopulator implements TerraGenerationStage { +public class FloraGenerationStage implements TerraGenerationStage { private final TerraPlugin main; - public FloraPopulator(TerraPlugin main) { + public FloraGenerationStage(TerraPlugin main) { this.main = main; } From 78735ec76952e912c61e1137ade0eff37a340ae4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:28:50 -0700 Subject: [PATCH 0211/1529] create TreeGenerationAddon --- .../generation/tree/TreeGenerationAddon.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java new file mode 100644 index 000000000..c23320f14 --- /dev/null +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.generation.tree; + +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.injection.annotations.Inject; + +@Addon("generation-stage-tree") +@Version("1.0.0") +@Author("Tree") +public class TreeGenerationAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From 1e5a0bb93f4954bcda9173c35fc8e1b5b765dc25 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 13:41:25 -0700 Subject: [PATCH 0212/1529] split tree addon --- .../com/dfsek/terra/addons/tree/TreeAddon.java | 13 ------------- .../generation}/tree/BiomeTreeTemplate.java | 4 +--- .../addons/generation}/tree/BiomeTrees.java | 3 +-- .../generation/tree/TreeGenerationAddon.java | 16 ++++++++++++++++ .../terra/addons/generation}/tree/TreeLayer.java | 2 +- .../generation}/tree/TreeLayerTemplate.java | 4 +--- .../addons/generation}/tree/TreePopulator.java | 3 +-- 7 files changed, 21 insertions(+), 24 deletions(-) rename common/addons/{config-tree/src/main/java/com/dfsek/terra/addons => generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation}/tree/BiomeTreeTemplate.java (77%) rename common/addons/{config-tree/src/main/java/com/dfsek/terra/addons => generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation}/tree/BiomeTrees.java (78%) rename common/addons/{config-tree/src/main/java/com/dfsek/terra/addons/tree => generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation}/tree/TreeLayer.java (97%) rename common/addons/{config-tree/src/main/java/com/dfsek/terra/addons/tree => generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation}/tree/TreeLayerTemplate.java (84%) rename common/addons/{config-tree/src/main/java/com/dfsek/terra/addons => generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation}/tree/TreePopulator.java (95%) diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index bce7b8ec2..2f9020275 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -1,19 +1,14 @@ package com.dfsek.terra.addons.tree; -import com.dfsek.terra.addons.tree.tree.TreeLayer; -import com.dfsek.terra.addons.tree.tree.TreeLayerTemplate; 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("config-tree") @Author("Terra") @@ -29,13 +24,5 @@ public class TreeAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); - event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); - } } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java similarity index 77% rename from common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java rename to common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java index df507127b..964194095 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTreeTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java @@ -1,10 +1,8 @@ -package com.dfsek.terra.addons.tree; +package com.dfsek.terra.addons.generation.tree; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import java.util.Collections; import java.util.List; diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java similarity index 78% rename from common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java rename to common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java index 095dee68a..bebade00b 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/BiomeTrees.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.tree; +package com.dfsek.terra.addons.generation.tree; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import com.dfsek.terra.api.properties.Properties; import java.util.List; diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java index c23320f14..d4186ada5 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java @@ -6,7 +6,12 @@ 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.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-tree") @Version("1.0.0") @@ -19,4 +24,15 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener { public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); + event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); + } + + public void onBiomeLoad(ConfigurationLoadEvent event) { + if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); + } + } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java similarity index 97% rename from common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java rename to common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java index a45e0246e..3f2110f51 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayer.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.tree.tree; +package com.dfsek.terra.addons.generation.tree; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java similarity index 84% rename from common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java rename to common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java index f595fbf47..260bab508 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TreeLayerTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java @@ -1,12 +1,10 @@ -package com.dfsek.terra.addons.tree.tree; +package com.dfsek.terra.addons.generation.tree; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Tree; public class TreeLayerTemplate implements ObjectTemplate { diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java similarity index 95% rename from common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java rename to common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java index 3449b5505..a014b4d16 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreePopulator.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java @@ -1,6 +1,5 @@ -package com.dfsek.terra.addons.tree; +package com.dfsek.terra.addons.generation.tree; -import com.dfsek.terra.addons.tree.tree.TreeLayer; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; From 6f5cca5e4e9e18e9593fd87e4c06a66483f32171 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 14:33:21 -0700 Subject: [PATCH 0213/1529] ore generation stage addon --- .../generation-stage-ore/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/generation-stage-ore/build.gradle.kts diff --git a/common/addons/generation-stage-ore/build.gradle.kts b/common/addons/generation-stage-ore/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/generation-stage-ore/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From ff329b2d186058ddfd4378d6f34383def4866ec5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 14:34:02 -0700 Subject: [PATCH 0214/1529] structure generation stage addon --- .../build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/generation-stage-structure/build.gradle.kts diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From b626b74624703d61f4994763000c72d98dce53ed Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 14:48:26 -0700 Subject: [PATCH 0215/1529] dont minify --- buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index e5c1a9bb9..75c7d1ec5 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -86,7 +86,6 @@ fun Project.configureDistribution() { relocate("org.javax.annotation", "com.dfsek.terra.lib.javax.annotation") relocate("org.json", "com.dfsek.terra.lib.json") relocate("org.yaml", "com.dfsek.terra.lib.yaml") - minimize() } convention.getPlugin().archivesBaseName = project.name From c26418b5ba78ad85b277bcd8bef594b0887137ab Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 16:32:43 -0700 Subject: [PATCH 0216/1529] depend on SnakeYAML in buildSrc --- buildSrc/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index ecf0454d8..b928aa626 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -10,4 +10,5 @@ repositories { dependencies { "implementation"("com.github.jengelman.gradle.plugins:shadow:+") + "implementation"("org.yaml:snakeyaml:1.27") } \ No newline at end of file From c65ea812ed8c3f3524368f795a434e443fa3e4fc Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 16:56:47 -0700 Subject: [PATCH 0217/1529] create Gradle task to generate resource manifest --- .../com/dfsek/terra/DistributionConfig.kt | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index 75c7d1ec5..ee5f37e34 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -9,9 +9,12 @@ import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getPlugin import org.gradle.kotlin.dsl.named +import org.yaml.snakeyaml.DumperOptions +import org.yaml.snakeyaml.Yaml import java.io.File import java.io.FileInputStream import java.io.FileOutputStream +import java.io.FileWriter import java.net.URL import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream @@ -66,8 +69,42 @@ fun Project.configureDistribution() { } } - tasks["processResources"].dependsOn(downloadDefaultPacks) - tasks["processResources"].dependsOn(installAddons) + val generateResourceManifest = tasks.create("generateResourceManifest") { + group = "terra" + dependsOn(downloadDefaultPacks) + dependsOn(installAddons) + doFirst { + val resources = HashMap>() + val packsDir = File("${project.buildDir}/resources/main/packs/") + + packsDir.walkTopDown().forEach { + if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach + resources.computeIfAbsent("packs") { ArrayList() }.add(it.name) + } + project(":common:addons").subprojects.forEach { addonProject -> + val jar = (addonProject.tasks.named("jar").get() as Jar).archiveFileName.get() + resources.computeIfAbsent("addons") { ArrayList() }.add(jar) + } + + val options = DumperOptions() + options.indent = 2 + options.indentWithIndicator = true + options.indicatorIndent = 2 + options.isPrettyFlow = true + options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK + options.defaultScalarStyle = DumperOptions.ScalarStyle.DOUBLE_QUOTED + + val yaml = Yaml(options) + + val manifest = File("${project.buildDir}/resources/main/resources.yml") + + if (manifest.exists()) manifest.delete() + manifest.createNewFile() + yaml.dump(resources, FileWriter(manifest)) + } + } + + tasks["processResources"].dependsOn(generateResourceManifest) tasks.named("shadowJar") { // Tell shadow to download the packs From 453e1ebb87d9ede80bc5385710f2a9edd682cb00 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 17:53:25 -0700 Subject: [PATCH 0218/1529] dump resources from resource manifest --- .../dfsek/terra/config/PluginConfigImpl.java | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index 6951103c9..cb45d4a7e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -9,12 +9,23 @@ import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.JarUtil; +import com.google.common.base.Charsets; +import org.apache.commons.io.IOUtils; +import org.yaml.snakeyaml.Yaml; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UncheckedIOException; import java.net.URISyntaxException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.util.List; +import java.util.Map; import java.util.jar.JarFile; @SuppressWarnings("FieldMayBeFinal") @@ -69,7 +80,7 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con @Value("dump-default") @Default - private boolean dumpDefaultConfig = true; + private boolean dumpDefaultData = true; @Value("script.max-recursion") @Default @@ -82,16 +93,36 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con try(FileInputStream file = new FileInputStream(new File(main.getDataFolder(), "config.yml"))) { ConfigLoader loader = new ConfigLoader(); loader.load(this, new YamlConfiguration(file, "config.yml")); - if(dumpDefaultConfig) { // Don't dump default config if already loaded. - try(JarFile jar = main.getModJar()) { - JarUtil.copyResourcesToDirectory(jar, "packs", new File(main.getDataFolder(), "packs").toString()); - } catch(IOException | URISyntaxException e) { - main.getDebugLogger().severe("Failed to dump default config files!"); - e.printStackTrace(); - main.getDebugLogger().severe("Either you're on Forge, or this is a bug. If it's the latter, report this to Terra!"); + if(dumpDefaultData) { + try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { + if(resourcesConfig == null) { + logger.info("No resources config found. Skipping resource dumping."); + return; + } + String resourceYaml = IOUtils.toString(resourcesConfig, StandardCharsets.UTF_8); + Map> resources = new Yaml().load(resourceYaml); + resources.forEach((dir, entries) -> entries.forEach(entry -> { + String resourcePath = dir + "/" + entry; + File resource = new File(main.getDataFolder(), resourcePath); + if(resource.exists()) return; // dont overwrite + main.logger().info("Dumping resource " + resource.getAbsolutePath()); + try { + resource.getParentFile().mkdirs(); + resource.createNewFile(); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + try(InputStream is = getClass().getResourceAsStream("/" + resourcePath); + OutputStream os = new FileOutputStream(resource)) { + IOUtils.copy(is, os); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + })); } } - } catch(ConfigException | IOException e) { + } catch(ConfigException | IOException | UncheckedIOException e) { + logger.severe("Failed to dump resources"); e.printStackTrace(); } From 98a0c9e05216166782fc299e9e4200ee1953215e Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 17:59:16 -0700 Subject: [PATCH 0219/1529] include lang files in resource manifest --- .../src/main/kotlin/com/dfsek/terra/DistributionConfig.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index ee5f37e34..e0c39062d 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -81,6 +81,14 @@ fun Project.configureDistribution() { if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach resources.computeIfAbsent("packs") { ArrayList() }.add(it.name) } + + val langDir = File("${project(":common:implementation").buildDir}/resources/main/lang/") + + langDir.walkTopDown().forEach { + if (it.isDirectory || !it.name.endsWith(".yml")) return@forEach + resources.computeIfAbsent("lang") { ArrayList() }.add(it.name) + } + project(":common:addons").subprojects.forEach { addonProject -> val jar = (addonProject.tasks.named("jar").get() as Jar).archiveFileName.get() resources.computeIfAbsent("addons") { ArrayList() }.add(jar) From 3261e7451f8ca74320bcb6fe33907e6773890c69 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 17:59:41 -0700 Subject: [PATCH 0220/1529] dont load lang files in LangUtil --- .../src/main/java/com/dfsek/terra/config/lang/LangUtil.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 8c05530e2..53235896a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -18,12 +18,6 @@ public final class LangUtil { public static void load(String langID, TerraPlugin main) { Logger logger = main.logger(); File file = new File(main.getDataFolder(), "lang"); - try(JarFile jar = main.getModJar()) { - copyResourcesToDirectory(jar, "lang", file.toString()); - } catch(IOException | URISyntaxException e) { - main.getDebugLogger().severe("Failed to dump language files!"); - main.getDebugLogger().stack(e); - } try { File file1 = new File(file, langID + ".yml"); logger.info(file1.getAbsolutePath()); From deedfb1f8dc009dfb6a0bc5f30c54155a556f2b2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 18:00:37 -0700 Subject: [PATCH 0221/1529] delete JarUtil --- .../java/com/dfsek/terra/api/TerraPlugin.java | 9 ---- .../com/dfsek/terra/api/util/JarUtil.java | 47 ------------------- .../dfsek/terra/config/PluginConfigImpl.java | 5 -- .../com/dfsek/terra/config/lang/LangUtil.java | 4 -- 4 files changed, 65 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index ccaa0aa99..3af2b603e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -10,16 +10,11 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import com.dfsek.terra.api.util.JarUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.jar.JarFile; /** * Represents a Terra mod/plugin instance. @@ -69,8 +64,4 @@ public interface TerraPlugin extends LoaderRegistrar { } Profiler getProfiler(); - - default JarFile getModJar() throws URISyntaxException, IOException { - return JarUtil.getJarFile(); - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java deleted file mode 100644 index 051f1aa75..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/JarUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.api.util; - -import com.dfsek.terra.api.TerraPlugin; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.Enumeration; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -public final class JarUtil { - public static void copyResourcesToDirectory(JarFile fromJar, String sourceDir, String destDir) throws IOException { - for(Enumeration entries = fromJar.entries(); entries.hasMoreElements(); ) { - JarEntry entry = entries.nextElement(); - if(entry.getName().startsWith(sourceDir + "/") && !entry.isDirectory()) { - File dest = new File(destDir + File.separator + entry.getName().substring(sourceDir.length() + 1)); - if(dest.exists()) continue; - File parent = dest.getParentFile(); - if(parent != null) { - parent.mkdirs(); - } - try(FileOutputStream out = new FileOutputStream(dest); InputStream in = fromJar.getInputStream(entry)) { - byte[] buffer = new byte[(8192)]; - - int s; - while((s = in.read(buffer)) > 0) { - out.write(buffer, 0, s); - } - } catch(IOException e) { - throw new IOException("Could not copy asset from jar file", e); - } - } - } - } - - public static JarFile getJarFile() throws URISyntaxException, IOException { - return new JarFile(new File(getJarURL().toURI())); - } - - public static URL getJarURL() { - return TerraPlugin.class.getProtectionDomain().getCodeSource().getLocation(); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index cb45d4a7e..75206e894 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -8,8 +8,6 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.JarUtil; -import com.google.common.base.Charsets; import org.apache.commons.io.IOUtils; import org.yaml.snakeyaml.Yaml; @@ -20,13 +18,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; -import java.net.URISyntaxException; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.List; import java.util.Map; -import java.util.jar.JarFile; @SuppressWarnings("FieldMayBeFinal") public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.config.PluginConfig { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 53235896a..dd036f014 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -7,10 +7,6 @@ import com.dfsek.terra.api.lang.Language; import java.io.File; import java.io.IOException; -import java.net.URISyntaxException; -import java.util.jar.JarFile; - -import static com.dfsek.terra.api.util.JarUtil.copyResourcesToDirectory; public final class LangUtil { private static Language language; From fc2ce229ed31ac1b4d69eb7de3fa44b1b82157e4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:30:07 -0700 Subject: [PATCH 0222/1529] basic Feature API --- .../addons/biome/command/biome/BiomeInfoCommand.java | 3 --- .../dfsek/terra/addons/structure/BiomeStructures.java | 2 +- .../addons/structure/BiomeStructuresTemplate.java | 2 +- .../dfsek/terra/addons/structure/StructureAddon.java | 2 +- .../terra/addons/structure/StructureFactory.java | 2 +- .../terra/addons/structure/StructurePopulator.java | 2 +- .../dfsek/terra/addons/structure/TerraStructure.java | 2 +- .../structure/command/AsyncStructureFinder.java | 2 +- .../command/structure/StructureLocateCommand.java | 2 +- .../structure/argument/StructureArgumentParser.java | 2 +- .../structure/completer/StructureCompleter.java | 2 +- .../{ => configured}/ConfiguredStructure.java | 4 +++- .../terra/api/structure/feature/Distributor.java | 4 ++++ .../dfsek/terra/api/structure/feature/Feature.java | 11 +++++++++++ .../dfsek/terra/api/structure/feature/Locator.java | 4 ++++ .../dfsek/terra/bukkit/listeners/PaperListener.java | 2 +- .../dfsek/terra/bukkit/listeners/SpigotListener.java | 2 +- 17 files changed, 34 insertions(+), 16 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/structure/{ => configured}/ConfiguredStructure.java (65%) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java index b208484a4..76d840cea 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java @@ -9,11 +9,8 @@ import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.List; - @Command( arguments = { @Argument( diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java index 3336fab68..2c5e20d2e 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import java.util.Set; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java index 7d5d4ce5d..a01a6c756 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import java.util.Collections; import java.util.Set; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index ee14c6a50..4824b8a11 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @Addon("config-structure") @Version("1.0.0") diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index 1d5f51022..b614514b0 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; public class StructureFactory implements ConfigFactory { @Override diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 5fa54b7aa..8f3875e19 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 7dd9134ce..79b37e7fa 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index 85fded7b7..9154f0599 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.structure.command; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index d49c5bc3d..dad15f00f 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -16,7 +16,7 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; import java.util.Locale; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 989d3b852..aec0dcaa5 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; public class StructureArgumentParser implements ArgumentParser { @Inject diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index 2fcddf53e..17007423f 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import java.util.ArrayList; import java.util.List; diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java similarity index 65% rename from common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java rename to common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java index 0d192ca29..1e04d096a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java @@ -1,5 +1,7 @@ -package com.dfsek.terra.api.structure; +package com.dfsek.terra.api.structure.configured; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java new file mode 100644 index 000000000..04e783bf0 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.api.structure.feature; + +public interface Distributor { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java new file mode 100644 index 000000000..f21a343dd --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.api.structure.feature; + +import com.dfsek.terra.api.structure.Structure; + +public interface Feature { + Structure getStructure(double x, double y, double z); + + Distributor getDistributor(); + + Locator getLocator(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java new file mode 100644 index 000000000..d637fb74d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.api.structure.feature; + +public interface Locator { +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 826a0172d..f8c25b0b4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 20aacc383..340f9efa1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.ConfiguredStructure; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; From f4f595425a5ab17358d9bdfd65651a47730184f8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:34:19 -0700 Subject: [PATCH 0223/1529] Distributor api --- .../dfsek/terra/api/structure/feature/Distributor.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java index 04e783bf0..be8b9cf11 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -1,4 +1,13 @@ package com.dfsek.terra.api.structure.feature; public interface Distributor { + boolean matches(int x, int z); + + default Distributor and(Distributor other) { + return (x, z) -> this.matches(x, z) && other.matches(x, z); + } + + default Distributor or(Distributor other) { + return (x, z) -> this.matches(x, z) || other.matches(x, z); + } } From fec5b138d2d1aa5bdfa2e1c62f0a93c2f095322f Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:35:51 -0700 Subject: [PATCH 0224/1529] create Column --- .../java/com/dfsek/terra/api/world/Column.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/Column.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Column.java b/common/api/src/main/java/com/dfsek/terra/api/world/Column.java new file mode 100644 index 000000000..7f2ed0b43 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Column.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.api.world; + +import com.dfsek.terra.api.block.state.BlockState; + +/** + * A single vertical column of a world. + */ +public interface Column { + int getX(); + + int getZ(); + + BlockState getBlock(int y); + + World getWorld(); +} From 62cf861c22239f5c980df4224704d14f66dcde53 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:36:37 -0700 Subject: [PATCH 0225/1529] Locator API --- .../java/com/dfsek/terra/api/structure/feature/Locator.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java index d637fb74d..1f73a5643 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -1,4 +1,9 @@ package com.dfsek.terra.api.structure.feature; +import com.dfsek.terra.api.world.Column; + +import java.util.List; + public interface Locator { + List getSuitableCoordinates(Column column, int x, int z); } From b52dcf2f15e6d8c35acc6a9e7a297f88736d3762 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:37:14 -0700 Subject: [PATCH 0226/1529] add world context to Feature --- .../java/com/dfsek/terra/api/structure/feature/Feature.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java index f21a343dd..ee6785c62 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java @@ -1,9 +1,10 @@ package com.dfsek.terra.api.structure.feature; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.world.World; public interface Feature { - Structure getStructure(double x, double y, double z); + Structure getStructure(World world, int x, int y, int z); Distributor getDistributor(); From 6b191ac00bc20496feb3e75562f59fd6b49d19e1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:49:42 -0700 Subject: [PATCH 0227/1529] initial FeatureGenerationAddon impl --- .../build.gradle.kts | 0 .../feature/FeatureGenerationAddon.java | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+) rename common/addons/{generation-stage-ore => generation-stage-feature}/build.gradle.kts (100%) create mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java diff --git a/common/addons/generation-stage-ore/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts similarity index 100% rename from common/addons/generation-stage-ore/build.gradle.kts rename to common/addons/generation-stage-feature/build.gradle.kts diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java new file mode 100644 index 000000000..691ae2922 --- /dev/null +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.generation.feature; + +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.injection.annotations.Inject; + +@Addon("generation-stage-feature") +@Version("1.0.0") +@Author("Terra") +public class FeatureGenerationAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From 0f638b03174b0539a920b6e66e0132775ef2ecea Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 19:57:50 -0700 Subject: [PATCH 0228/1529] feature configuration --- .../feature/FeatureGenerationAddon.java | 15 ++++++++++ .../feature/FeatureGenerationStage.java | 30 +++++++++++++++++++ .../feature/config/BiomeFeatures.java | 18 +++++++++++ .../feature/config/BiomeFeaturesTemplate.java | 20 +++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java create mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java create mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 691ae2922..b18b775fc 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -1,12 +1,17 @@ package com.dfsek.terra.addons.generation.feature; +import com.dfsek.terra.addons.generation.feature.config.BiomeFeaturesTemplate; 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.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-feature") @Version("1.0.0") @@ -19,4 +24,14 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main)); + } + + public void onBiomeLoad(ConfigurationLoadEvent event) { + if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); + } + } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java new file mode 100644 index 000000000..f680fad4f --- /dev/null +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.generation.feature; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.TerraGenerationStage; + +public class FeatureGenerationStage implements TerraGenerationStage { + private final TerraPlugin main; + + public FeatureGenerationStage(TerraPlugin main) { + this.main = main; + } + + @Override + public void populate(World world, Chunk chunk) { + TerraWorld terraWorld = main.getWorld(world); + try(ProfileFrame ignore = main.getProfiler().profile("feature")) { + int cx = chunk.getX() << 4; + int cz = chunk.getZ() << 4; + for(int x = 0; x < 16; x++) { + for(int z = 0; z < 16; z++) { + + } + } + } + } +} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java new file mode 100644 index 000000000..bcf7d67a3 --- /dev/null +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.generation.feature.config; + +import com.dfsek.terra.api.properties.Properties; +import com.dfsek.terra.api.structure.feature.Feature; + +import java.util.List; + +public class BiomeFeatures implements Properties { + private final List features; + + public BiomeFeatures(List features) { + this.features = features; + } + + public List getFeatures() { + return features; + } +} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java new file mode 100644 index 000000000..dc767bc9c --- /dev/null +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.generation.feature.config; + +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Feature; + +import java.util.Collections; +import java.util.List; + +public class BiomeFeaturesTemplate implements ObjectTemplate { + @Value("features") + @Default + private List features = Collections.emptyList(); + + @Override + public BiomeFeatures get() { + return new BiomeFeatures(features); + } +} From 180aae6e349ace9d4d4450d7d557b490392a8695 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 20:04:27 -0700 Subject: [PATCH 0229/1529] implement FeatureGenerationStage --- .../addons/generation/feature/ColumnImpl.java | 37 +++++++++++++++++++ .../feature/FeatureGenerationStage.java | 18 ++++++++- .../terra/api/structure/feature/Locator.java | 2 +- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java new file mode 100644 index 000000000..ed18a9b96 --- /dev/null +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java @@ -0,0 +1,37 @@ +package com.dfsek.terra.addons.generation.feature; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.Column; +import com.dfsek.terra.api.world.World; + +public class ColumnImpl implements Column { + private final int x; + private final int z; + private final World world; + + public ColumnImpl(int x, int z, World world) { + this.x = x; + this.z = z; + this.world = world; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getZ() { + return z; + } + + @Override + public BlockState getBlock(int y) { + return world.getBlockData(x, y, z); + } + + @Override + public World getWorld() { + return world; + } +} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index f680fad4f..348190530 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -1,7 +1,11 @@ package com.dfsek.terra.addons.generation.feature; +import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; @@ -22,7 +26,19 @@ public class FeatureGenerationStage implements TerraGenerationStage { int cz = chunk.getZ() << 4; for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { - + int tx = cx + x; + int tz = cz + z; + ColumnImpl column = new ColumnImpl(tx, tz, world); + terraWorld.getBiomeProvider().getBiome(tx, tz).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { + if(feature.getDistributor().matches(tx, tz)) { + feature.getLocator() + .getSuitableCoordinates(column) + .forEach(y -> + feature.getStructure(world, tx, y, tz) + .generateDirect(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), Rotation.NONE) + ); + } + }); } } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java index 1f73a5643..c49ebd2f5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -5,5 +5,5 @@ import com.dfsek.terra.api.world.Column; import java.util.List; public interface Locator { - List getSuitableCoordinates(Column column, int x, int z); + List getSuitableCoordinates(Column column); } From f57c5f39b9d10576bd596882c2f5df0d892684c4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:27:38 -0700 Subject: [PATCH 0230/1529] create locators addon module --- .../addons/config-locators/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/config-locators/build.gradle.kts diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/config-locators/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From be55f4a62d869da493a38399b9a53a38050c9b1d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:28:10 -0700 Subject: [PATCH 0231/1529] create distributors addon module --- .../config-distributors/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/config-distributors/build.gradle.kts diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/config-distributors/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From 6cff6db1520f4ece825b224a78124adbbd7bd952 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:30:06 -0700 Subject: [PATCH 0232/1529] remove redundant catch block --- .../java/com/dfsek/terra/addons/noise/NoiseAddon.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 9fbc64aae..278610ae4 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -1,6 +1,5 @@ package com.dfsek.terra.addons.noise; -import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; @@ -101,12 +100,8 @@ public class NoiseAddon extends TerraAddon implements EventListener { noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); - try { - NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); - event.loadTemplate(template); - packFunctions.putAll(template.getNoiseBuilderMap()); - } catch(ConfigException e) { - throw new RuntimeException(e); - } + NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); + event.loadTemplate(template); + packFunctions.putAll(template.getNoiseBuilderMap()); } } From ced5a0537017f69cd3245403a87a92985a918f61 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:33:52 -0700 Subject: [PATCH 0233/1529] create base DistributorAddon --- .../feature/distributor/DistributorAddon.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java new file mode 100644 index 000000000..9c74fac62 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.addons.feature.distributor; + +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.injection.annotations.Inject; + +@Addon("config-distributors") +@Version("1.0.0") +@Author("Terra") +public class DistributorAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + +} From 1194cca485ce6bc2ab48760662f0a4ad78383b5a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:35:10 -0700 Subject: [PATCH 0234/1529] refactor to distibguish providers from builders --- .../main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 2 +- .../terra/addons/noise/config/NoiseSamplerBuilderLoader.java | 2 +- .../dfsek/terra/api/util/provider/DistributorProvider.java | 4 ++++ .../terra/api/util/{seeded => provider}/NoiseProvider.java | 3 ++- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java rename common/api/src/main/java/com/dfsek/terra/api/util/{seeded => provider}/NoiseProvider.java (67%) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 278610ae4..5a9d6f5d5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -34,7 +34,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.seeded.NoiseProvider; +import com.dfsek.terra.api.util.provider.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.HashMap; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index ec6fcebec..578cc6663 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -7,7 +7,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.NoiseProvider; +import com.dfsek.terra.api.util.provider.NoiseProvider; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.lang.reflect.AnnotatedType; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java new file mode 100644 index 000000000..be6161ccc --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.api.util.provider; + +public interface DistributorProvider { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java similarity index 67% rename from common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java rename to common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java index 90b04c3f1..2c379feae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java @@ -1,6 +1,7 @@ -package com.dfsek.terra.api.util.seeded; +package com.dfsek.terra.api.util.provider; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.util.seeded.NoiseSeeded; import java.util.function.Supplier; From 84e7d11156b0bc1fdfc420c8f4ce7cdcc43b45c2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:36:27 -0700 Subject: [PATCH 0235/1529] NoiseSeeded -> SeededNoiseSampler --- .../config/BiomeProviderTemplate.java | 4 ++-- .../pipeline/config/NoiseSourceTemplate.java | 4 ++-- .../pipeline/config/stage/StageTemplate.java | 4 ++-- .../terra/addons/biome/BiomeTemplate.java | 19 +++++++++---------- .../terra/addons/flora/FloraTemplate.java | 6 +++--- .../dfsek/terra/addons/noise/NoiseAddon.java | 6 +++--- .../addons/noise/NoiseConfigPackTemplate.java | 6 +++--- .../config/NoiseSamplerBuilderLoader.java | 8 ++++---- .../config/templates/DomainWarpTemplate.java | 6 +++--- .../config/templates/KernelTemplate.java | 4 ++-- .../config/templates/SamplerTemplate.java | 6 +++--- .../noise/CellularNoiseTemplate.java | 4 ++-- .../noise/ExpressionFunctionTemplate.java | 8 ++++---- .../noise/fractal/FractalTemplate.java | 4 ++-- .../normalizer/NormalizerTemplate.java | 4 ++-- .../noise/samplers/ExpressionSampler.java | 4 ++-- .../terra/addons/palette/PaletteTemplate.java | 6 +++--- .../palette/palette/PaletteLayerLoader.java | 5 ++--- .../generation/flora/FloraLayerLoader.java | 4 ++-- .../generation/tree/TreeLayerTemplate.java | 4 ++-- .../api/util/provider/NoiseProvider.java | 4 ++-- ...iseSeeded.java => SeededNoiseSampler.java} | 6 +++--- .../test/java/noise/NoiseConfigTemplate.java | 6 +++--- 23 files changed, 65 insertions(+), 67 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/seeded/{NoiseSeeded.java => SeededNoiseSampler.java} (71%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 748219b3d..be4e5aa3b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("resolution") @@ -12,7 +12,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate biomes; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index bf3349fa0..d3c71ac8f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -4,12 +4,12 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") - protected NoiseSeeded noise; + protected SeededNoiseSampler noise; @Override public StageSeeded get() { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 01fb7a3e0..331188c18 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -7,13 +7,12 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; @@ -43,14 +42,14 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("beta.carving.equation") @Default - private NoiseSeeded carvingEquation = NoiseSeeded.zero(3); + private SeededNoiseSampler carvingEquation = SeededNoiseSampler.zero(3); @Value("vanilla") private ProbabilityCollection vanilla; @Value("biome-noise") @Default - private NoiseSeeded biomeNoise = NoiseSeeded.zero(2); + private SeededNoiseSampler biomeNoise = SeededNoiseSampler.zero(2); @Value("blend.distance") @Default @@ -65,7 +64,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl private int blendStep = 4; @Value("noise") - private NoiseSeeded noiseEquation; + private SeededNoiseSampler noiseEquation; @Value("ocean.level") @Default @@ -73,7 +72,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("elevation.equation") @Default - private NoiseSeeded elevationEquation = NoiseSeeded.zero(2); + private SeededNoiseSampler elevationEquation = SeededNoiseSampler.zero(2); @Value("elevation.weight") @Default @@ -160,15 +159,15 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return stairPalettes; } - public NoiseSeeded getBiomeNoise() { + public SeededNoiseSampler getBiomeNoise() { return biomeNoise; } - public NoiseSeeded getElevationEquation() { + public SeededNoiseSampler getElevationEquation() { return elevationEquation; } - public NoiseSeeded getCarvingEquation() { + public SeededNoiseSampler getCarvingEquation() { return carvingEquation; } @@ -188,7 +187,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return vanilla; } - public NoiseSeeded getNoiseEquation() { + public SeededNoiseSampler getNoiseEquation() { return noiseEquation; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index 13c105304..62eaa3fd0 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; @@ -61,9 +61,9 @@ public class FloraTemplate implements AbstractableTemplate { private List layers; @Value("layer-distribution") - private NoiseSeeded noiseDistribution; + private SeededNoiseSampler noiseDistribution; - public NoiseSeeded getNoiseDistribution() { + public SeededNoiseSampler getNoiseDistribution() { return noiseDistribution; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 5a9d6f5d5..e94b05ef2 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -35,7 +35,7 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.provider.NoiseProvider; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; import java.util.Map; @@ -55,7 +55,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { public void packPreLoad(ConfigPackPreLoadEvent event) { CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); event.getPack() - .applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry)) + .applyLoader(SeededNoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) @@ -96,7 +96,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { noiseRegistry.register("KERNEL", KernelTemplate::new); - Map packFunctions = new HashMap<>(); + Map packFunctions = new HashMap<>(); noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index f25164422..d9e7637dd 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -2,15 +2,15 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.Map; public class NoiseConfigPackTemplate implements ConfigTemplate { @Value("noise") - private Map noiseBuilderMap; + private Map noiseBuilderMap; - public Map getNoiseBuilderMap() { + public Map getNoiseBuilderMap() { return noiseBuilderMap; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 578cc6663..ef4860135 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -8,14 +8,14 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.provider.NoiseProvider; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.lang.reflect.AnnotatedType; import java.util.Locale; import java.util.Map; @SuppressWarnings("unchecked") -public class NoiseSamplerBuilderLoader implements TypeLoader { +public class NoiseSamplerBuilderLoader implements TypeLoader { private final Registry noiseRegistry; public NoiseSamplerBuilderLoader(Registry noiseRegistry) { @@ -23,13 +23,13 @@ public class NoiseSamplerBuilderLoader implements TypeLoader { } @Override - public NoiseSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededNoiseSampler load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map map = (Map) c; try { if(!noiseRegistry.contains((String) map.get("type"))) { throw new LoadException("No such noise function: " + map.get("type")); } - ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); + ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); loader.load(normalizerTemplate, new MapConfiguration(map)); return normalizerTemplate.get(); } catch(ConfigException e) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 7167aca7a..f61ef6105 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -4,15 +4,15 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { @Value("warp") - private NoiseSeeded warp; + private SeededNoiseSampler warp; @Value("function") - private NoiseSeeded function; + private SeededNoiseSampler function; @Value("salt") @Default diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 0abf1a2b5..edcc82a52 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.addons.noise.samplers.KernelSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; @@ -21,7 +21,7 @@ public class KernelTemplate extends SamplerTemplate implements Va private double factor = 1; @Value("function") - private NoiseSeeded function; + private SeededNoiseSampler function; @Value("frequency") @Default diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 7dc39a6f7..80b69d8bb 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -6,10 +6,10 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("FieldMayBeFinal") -public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate, NoiseSeeded { +public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate, SeededNoiseSampler { @Value("dimensions") @Default private int dimensions = 2; @@ -25,7 +25,7 @@ public abstract class SamplerTemplate implements Validat } @Override - public NoiseSeeded get() { + public SeededNoiseSampler get() { return this; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index e962ad71a..97c5aff1b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { @@ -24,7 +24,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default - private NoiseSeeded lookup = new NoiseSeeded() { + private SeededNoiseSampler lookup = new SeededNoiseSampler() { @Override public NoiseSampler apply(Long seed) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index b3ed21c5a..31e8f34df 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -15,7 +15,7 @@ import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; import java.util.LinkedHashMap; @@ -24,7 +24,7 @@ import java.util.Map; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class ExpressionFunctionTemplate extends SamplerTemplate implements ValidatedConfigTemplate { - private final Map otherFunctions; + private final Map otherFunctions; @Value("variables") @Default private Map vars = new HashMap<>(); @@ -32,12 +32,12 @@ public class ExpressionFunctionTemplate extends SamplerTemplate functions = new LinkedHashMap<>(); + private LinkedHashMap functions = new LinkedHashMap<>(); @Value("expressions") @Default private LinkedHashMap expressions = new LinkedHashMap<>(); - public ExpressionFunctionTemplate(Map otherFunctions) { + public ExpressionFunctionTemplate(Map otherFunctions) { this.otherFunctions = otherFunctions; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index ceb46f3ad..2f1228061 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") @@ -24,5 +24,5 @@ public abstract class FractalTemplate extends Sa protected double weightedStrength = 0.0D; @Value("function") - protected NoiseSeeded function; + protected SeededNoiseSampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index 248b34e69..6de528398 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -3,9 +3,9 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.normalizer.Normalizer; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") - protected NoiseSeeded function; + protected SeededNoiseSampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java index a50d1fd9a..74316208c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java @@ -9,7 +9,7 @@ import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.Map; @@ -19,7 +19,7 @@ import java.util.Map; public class ExpressionSampler implements NoiseSampler { private final Expression expression; - public ExpressionSampler(String equation, Scope parent, long seed, Map functions, Map definedFunctions) throws ParseException { + public ExpressionSampler(String equation, Scope parent, long seed, Map functions, Map definedFunctions) throws ParseException { Parser parser = new Parser(); Scope scope = new Scope().withParent(parent); diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index 6dc9e03e2..fa44c09a5 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; @@ -13,7 +13,7 @@ import java.util.List; public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Default - private NoiseSeeded noise = NoiseSeeded.zero(2); + private SeededNoiseSampler noise = SeededNoiseSampler.zero(2); @Value("id") @Final @@ -30,7 +30,7 @@ public class PaletteTemplate implements AbstractableTemplate { return palette; } - public NoiseSeeded getNoise() { + public SeededNoiseSampler getNoise() { return noise; } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 90b7146f2..d7ae0d230 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -6,10 +6,9 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") @@ -34,7 +33,7 @@ public class PaletteLayerLoader implements TypeLoader { NoiseSampler sampler = null; if(map.containsKey("noise")) { - sampler = configLoader.loadType(NoiseSeeded.class, map.get("noise")).apply(2403L); + sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).apply(2403L); } if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index 10f971852..d338d3043 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.Flora; public class FloraLayerLoader implements ObjectTemplate { @@ -18,7 +18,7 @@ public class FloraLayerLoader implements ObjectTemplate { private ProbabilityCollection items; @Value("distribution") - private NoiseSeeded distribution; + private SeededNoiseSampler distribution; @Override diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java index 260bab508..f7bb3d486 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.Tree; public class TreeLayerTemplate implements ObjectTemplate { @@ -18,7 +18,7 @@ public class TreeLayerTemplate implements ObjectTemplate { private ProbabilityCollection items; @Value("distribution") - private NoiseSeeded distribution; + private SeededNoiseSampler distribution; @Override public TreeLayer get() { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java index 2c379feae..f1c5885b3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.util.provider; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.function.Supplier; @FunctionalInterface -public interface NoiseProvider extends Supplier> { +public interface NoiseProvider extends Supplier> { } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java similarity index 71% rename from common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java index 6df4adedc..edf10013d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/NoiseSeeded.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java @@ -2,9 +2,9 @@ package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.noise.NoiseSampler; -public interface NoiseSeeded extends SeededBuilder { - static NoiseSeeded zero(int dimensions) { - return new NoiseSeeded() { +public interface SeededNoiseSampler extends SeededBuilder { + static SeededNoiseSampler zero(int dimensions) { + return new SeededNoiseSampler() { @Override public NoiseSampler apply(Long seed) { return NoiseSampler.zero(); diff --git a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java index 8d671db4e..4cc2df0ad 100644 --- a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java +++ b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java @@ -2,15 +2,15 @@ package noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("unused") public class NoiseConfigTemplate implements ConfigTemplate { @Value(".") - private NoiseSeeded builder; + private SeededNoiseSampler builder; - public NoiseSeeded getBuilder() { + public SeededNoiseSampler getBuilder() { return builder; } } From 689fe0bc7095405a9c00506d58b2e2ebcf75dc39 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:37:12 -0700 Subject: [PATCH 0236/1529] SourceSeeded -> SeededBiomeSource --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 4 ++-- .../biome/pipeline/config/BiomePipelineTemplate.java | 4 ++-- .../addons/biome/pipeline/config/SourceBuilderLoader.java | 7 +++---- .../terra/addons/biome/pipeline/config/SourceTemplate.java | 6 +++--- .../seeded/{SourceSeeded.java => SeededBiomeSource.java} | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/seeded/{SourceSeeded.java => SeededBiomeSource.java} (65%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index e82f990d0..b6d03c0a7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -22,7 +22,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; -import com.dfsek.terra.api.util.seeded.SourceSeeded; +import com.dfsek.terra.api.util.seeded.SeededBiomeSource; import java.lang.reflect.Type; @@ -39,7 +39,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(SourceSeeded.class, new SourceBuilderLoader()) + event.getPack().applyLoader(SeededBiomeSource.class, new SourceBuilderLoader()) .applyLoader(StageSeeded.class, new StageBuilderLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 80708faef..4916cb6be 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.seeded.SourceSeeded; +import com.dfsek.terra.api.util.seeded.SeededBiomeSource; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.List; @@ -22,7 +22,7 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { private List stages; @Value("pipeline.source") - private SourceSeeded source; + private SeededBiomeSource source; public BiomePipelineTemplate(TerraPlugin main) { this.main = main; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java index bb0a082de..b2bd0b58e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java @@ -3,17 +3,16 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.SourceSeeded; +import com.dfsek.terra.api.util.seeded.SeededBiomeSource; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") -public class SourceBuilderLoader implements TypeLoader { +public class SourceBuilderLoader implements TypeLoader { @Override - public SourceSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededBiomeSource load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map source = (Map) c; BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index e3c9333c6..1232dcbdd 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.SourceSeeded; +import com.dfsek.terra.api.util.seeded.SeededBiomeSource; -public abstract class SourceTemplate implements ObjectTemplate, SourceSeeded { +public abstract class SourceTemplate implements ObjectTemplate, SeededBiomeSource { @Override - public SourceSeeded get() { + public SeededBiomeSource get() { return this; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java similarity index 65% rename from common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java index 5f1d03f95..86d72208c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java @@ -3,5 +3,5 @@ package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @FunctionalInterface -public interface SourceSeeded extends SeededBuilder { +public interface SeededBiomeSource extends SeededBuilder { } From 3a94c5287c5641f632d90161921fa3d2efe45ee5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:37:57 -0700 Subject: [PATCH 0237/1529] BiomeBuilder -> SeededTerraBiome --- .../biome/image/ImageProviderTemplate.java | 6 +++--- .../pipeline/config/NoiseSourceTemplate.java | 4 ++-- .../stage/mutator/BorderListMutatorTemplate.java | 6 +++--- .../stage/mutator/BorderMutatorTemplate.java | 4 ++-- .../mutator/ReplaceListMutatorTemplate.java | 6 +++--- .../stage/mutator/ReplaceMutatorTemplate.java | 4 ++-- .../single/SingleBiomeProviderTemplate.java | 4 ++-- .../NoiseChunkGenerator3DAddon.java | 6 +++--- .../terra/addons/biome/BiomeConfigType.java | 16 ++++++++-------- .../dfsek/terra/addons/biome/BiomeFactory.java | 8 ++++---- ...der.java => UserDefinedSeededTerraBiome.java} | 6 +++--- .../feature/FeatureGenerationAddon.java | 6 +++--- .../generation/flora/FloraGenerationAddon.java | 6 +++--- .../generation/tree/TreeGenerationAddon.java | 6 +++--- .../{BiomeBuilder.java => SeededTerraBiome.java} | 2 +- .../dfsek/terra/api/world/biome/TerraBiome.java | 4 ++-- .../dfsek/terra/config/pack/WorldConfigImpl.java | 10 ++-------- .../dfsek/terra/fabric/TerraFabricPlugin.java | 4 ++-- .../config/PostLoadCompatibilityOptions.java | 10 +++++----- .../com/dfsek/terra/fabric/util/FabricUtil.java | 4 ++-- 20 files changed, 58 insertions(+), 64 deletions(-) rename common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/{UserDefinedBiomeBuilder.java => UserDefinedSeededTerraBiome.java} (87%) rename common/api/src/main/java/com/dfsek/terra/api/util/seeded/{BiomeBuilder.java => SeededTerraBiome.java} (82%) diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index e71cac1b5..079b06d3e 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -2,14 +2,14 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; import java.util.stream.Collectors; public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { - private final Registry biomes; + private final Registry biomes; @Value("image.name") private BufferedImage image; @@ -18,7 +18,7 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { private int resolution; - public ImageProviderTemplate(Registry set) { + public ImageProviderTemplate(Registry set) { this.biomes = set; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index ba3dfaf91..9e16c76e3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -12,7 +12,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private SeededNoiseSampler noise; @Value("biomes") - private ProbabilityCollection biomes; + private ProbabilityCollection biomes; @Override public BiomeSource apply(Long seed) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 7a1348734..2d16fce47 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.HashMap; @@ -19,10 +19,10 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { private String defaultReplace; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollection defaultTo; @Value("replace") - private Map> replace; + private Map> replace; @Override diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 4632b735d..a005bc9d6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; @SuppressWarnings("unused") public class BorderMutatorTemplate extends MutatorStageTemplate { @@ -15,7 +15,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private String replace; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index bbd1b2a3a..b1a67e2ee 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.HashMap; @@ -16,10 +16,10 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private String defaultFrom; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollection defaultTo; @Value("to") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 365da2c42..b26977a26 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends MutatorStageTemplate { @@ -12,7 +12,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private String from; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index ae22f7e5d..cd9bbc289 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,13 +2,13 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class SingleBiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { @Value("biome") - private BiomeBuilder biome; + private SeededTerraBiome biome; @Override public BiomeProvider build(long seed) { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index d6340a8ed..5b0e5e0de 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @Addon("chunk-generator-noise-3d") @@ -37,8 +37,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(BiomeBuilder.class)) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); + if(event.is(SeededTerraBiome.class)) { + event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 5e255b2d4..113a42c68 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -7,11 +7,11 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import java.util.function.Supplier; -public class BiomeConfigType implements ConfigType { +public class BiomeConfigType implements ConfigType { private final ConfigPack pack; private final BiomeFactory factory; @@ -26,20 +26,20 @@ public class BiomeConfigType implements ConfigType } @Override - public ConfigFactory getFactory() { + public ConfigFactory getFactory() { return factory; } @Override - public Class getTypeClass() { - return BiomeBuilder.class; + public Class getTypeClass() { + return SeededTerraBiome.class; } @Override - public Supplier> registrySupplier() { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + public Supplier> registrySupplier() { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(c.equals("SELF")) return null; - BiomeBuilder obj = registry.get((String) c); + SeededTerraBiome obj = registry.get((String) c); if(obj == null) throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); return obj; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index e3cd52015..e52b764fc 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -3,9 +3,9 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; -public class BiomeFactory implements ConfigFactory { +public class BiomeFactory implements ConfigFactory { private final ConfigPack pack; public BiomeFactory(ConfigPack pack) { @@ -13,7 +13,7 @@ public class BiomeFactory implements ConfigFactory } @Override - public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) { - return new UserDefinedBiomeBuilder(template); + public SeededTerraBiome build(BiomeTemplate template, TerraPlugin main) { + return new UserDefinedSeededTerraBiome(template); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java similarity index 87% rename from common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java index 9d4a25a6f..cf71e95e1 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiomeBuilder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java @@ -2,19 +2,19 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.Biome; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -public class UserDefinedBiomeBuilder implements BiomeBuilder { +public class UserDefinedSeededTerraBiome implements SeededTerraBiome { private final BiomeTemplate template; private final Context context = new Context(); private final Map biomeMap = new ConcurrentHashMap<>(); - public UserDefinedBiomeBuilder(BiomeTemplate template) { + public UserDefinedSeededTerraBiome(BiomeTemplate template) { this.template = template; } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index b18b775fc..8be6158e0 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-feature") @@ -30,8 +30,8 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); + if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); } } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 37c2becb0..a3a9a19eb 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-flora") @@ -31,8 +31,8 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); + if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); } } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java index d4186ada5..2143780d3 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-tree") @@ -31,8 +31,8 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { - event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); + if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); } } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java similarity index 82% rename from common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java rename to common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java index f27567cb3..53783be32 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java @@ -7,6 +7,6 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.TerraBiome; @Linked(TerraBiome.class) -public interface BiomeBuilder extends SeededBuilder, PropertyHolder { +public interface SeededTerraBiome extends SeededBuilder, PropertyHolder { ProbabilityCollection getVanillaBiomes(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 68abb8d73..08a6160f6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -4,7 +4,7 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.properties.annotations.Linked; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.World; import java.util.Set; @@ -12,7 +12,7 @@ import java.util.Set; /** * Represents a custom biome */ -@Linked(BiomeBuilder.class) +@Linked(SeededTerraBiome.class) public interface TerraBiome extends PropertyHolder { /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 4b15d26fe..0ce374c9d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -4,22 +4,16 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.GenerationStage; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.SamplerCacheImpl; -import com.google.common.collect.ImmutableList; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; public class WorldConfigImpl implements WorldConfig { @@ -40,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); - pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); + pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); 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 697fc746f..a120ba6fc 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 @@ -28,7 +28,7 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; @@ -364,7 +364,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public void injectBiomes(BiomeRegistrationEvent event) { logger.info("Registering biomes..."); Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + configRegistry.forEach(pack -> pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. logger.info("Biomes registered."); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java index aa1ff2262..ca1a6bd8a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java @@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import net.minecraft.util.Identifier; import java.util.HashMap; @@ -14,17 +14,17 @@ import java.util.Set; public class PostLoadCompatibilityOptions implements ConfigTemplate { @Value("structures.inject-biome.exclude-biomes") @Default - private Map> excludedPerBiomeStructures = new HashMap<>(); + private Map> excludedPerBiomeStructures = new HashMap<>(); @Value("features.inject-biome.exclude-biomes") @Default - private Map> excludedPerBiomeFeatures = new HashMap<>(); + private Map> excludedPerBiomeFeatures = new HashMap<>(); - public Map> getExcludedPerBiomeFeatures() { + public Map> getExcludedPerBiomeFeatures() { return excludedPerBiomeFeatures; } - public Map> getExcludedPerBiomeStructures() { + public Map> getExcludedPerBiomeStructures() { return excludedPerBiomeStructures; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 63def136b..09a499d6d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.seeded.BiomeBuilder; +import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; @@ -43,7 +43,7 @@ public final class FabricUtil { * @param pack The ConfigPack this biome belongs to. * @return The Minecraft delegate biome. */ - public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { + public static Biome createBiome(SeededTerraBiome biome, ConfigPack pack, DynamicRegistryManager registryManager) { // BiomeTemplate template = biome.getTemplate(); Map colors = new HashMap<>(); // template.getColors(); From ec28f613d337721a6b79bf4105531f0675a1f37b Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:50:12 -0700 Subject: [PATCH 0238/1529] make SeededBuilder use unboxed long --- .../addons/biome/image/ImageProviderTemplate.java | 2 +- .../addons/biome/pipeline/BiomePipelineImpl.java | 2 +- .../biome/pipeline/config/BiomePipelineTemplate.java | 4 ++-- .../biome/pipeline/config/NoiseSourceTemplate.java | 4 ++-- .../config/stage/expander/ExpanderStageTemplate.java | 4 ++-- .../stage/mutator/BorderListMutatorTemplate.java | 6 +++--- .../config/stage/mutator/BorderMutatorTemplate.java | 4 ++-- .../config/stage/mutator/MutatorStageTemplate.java | 6 +++--- .../stage/mutator/ReplaceListMutatorTemplate.java | 6 +++--- .../config/stage/mutator/ReplaceMutatorTemplate.java | 4 ++-- .../config/stage/mutator/SmoothMutatorTemplate.java | 4 ++-- .../biome/single/SingleBiomeProviderTemplate.java | 2 +- .../com/dfsek/terra/addons/biome/BiomeTemplate.java | 6 +++--- .../addons/biome/UserDefinedSeededTerraBiome.java | 4 ++-- .../com/dfsek/terra/addons/flora/FloraFactory.java | 2 +- .../noise/config/templates/DomainWarpTemplate.java | 4 ++-- .../noise/config/templates/ImageSamplerTemplate.java | 2 +- .../addons/noise/config/templates/KernelTemplate.java | 4 ++-- .../config/templates/noise/CellularNoiseTemplate.java | 11 +++++------ .../config/templates/noise/ConstantNoiseTemplate.java | 2 +- .../templates/noise/ExpressionFunctionTemplate.java | 10 +++++----- .../config/templates/noise/GaborNoiseTemplate.java | 4 ++-- .../config/templates/noise/SimpleNoiseTemplate.java | 4 ++-- .../noise/fractal/BrownianMotionTemplate.java | 4 ++-- .../templates/noise/fractal/PingPongTemplate.java | 4 ++-- .../noise/fractal/RidgedFractalTemplate.java | 4 ++-- .../templates/normalizer/ClampNormalizerTemplate.java | 4 ++-- .../normalizer/LinearNormalizerTemplate.java | 4 ++-- .../normalizer/NormalNormalizerTemplate.java | 4 ++-- .../addons/noise/samplers/ExpressionSampler.java | 4 ++-- .../dfsek/terra/addons/palette/PaletteFactory.java | 2 +- .../addons/palette/palette/PaletteLayerLoader.java | 2 +- .../addons/generation/flora/FloraLayerLoader.java | 2 +- .../addons/generation/tree/TreeLayerTemplate.java | 2 +- .../terra/api/util/seeded/BiomeProviderBuilder.java | 2 +- .../dfsek/terra/api/util/seeded/SeededBuilder.java | 6 ++---- .../terra/api/util/seeded/SeededNoiseSampler.java | 5 +---- .../com/dfsek/terra/config/pack/WorldConfigImpl.java | 2 +- 38 files changed, 73 insertions(+), 79 deletions(-) diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index 079b06d3e..813c7a617 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -24,6 +24,6 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { //@Override public BiomeProvider build(long seed) { - return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.apply(seed)).collect(Collectors.toSet()), image, resolution, align); + return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.build(seed)).collect(Collectors.toSet()), image, resolution, align); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index 516e5ca01..18462433f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -51,7 +51,7 @@ public class BiomePipelineImpl { } public BiomePipelineImpl build(BiomeSource source, long seed) { - List stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.apply(seed)).collect(Collectors.toList()); + List stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.build(seed)).collect(Collectors.toList()); for(Stage stage : stagesBuilt) { if(stage.isExpansion()) expand = expand * 2 - 1; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 4916cb6be..c226c8ef7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -32,7 +32,7 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { public BiomeProvider build(long seed) { BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); - BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.apply(seed), seed); - return new StandardBiomeProvider(pipeline, main, resolution, blend.apply(seed), blendAmp, (int) seed); + BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.build(seed), seed); + return new StandardBiomeProvider(pipeline, main, resolution, blend.build(seed), blendAmp, (int) seed); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 9e16c76e3..4022ea4e8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -15,7 +15,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private ProbabilityCollection biomes; @Override - public BiomeSource apply(Long seed) { - return new RandomSource(biomes.map((biome) -> biome.apply(seed), false), noise.apply(seed)); + public BiomeSource build(long seed) { + return new RandomSource(biomes.map((biome) -> biome.build(seed), false), noise.build(seed)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index e42f44f56..3222c40f9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; public class ExpanderStageTemplate extends StageTemplate { @Override - public Stage apply(Long seed) { - return new ExpanderStage(new FractalExpander(noise.apply(seed))); + public Stage build(long seed) { + return new ExpanderStage(new FractalExpander(noise.build(seed))); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 2d16fce47..d17eb0fc0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -26,11 +26,11 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator build(long seed) { + public BiomeMutator getMutator(long seed) { Map> replaceMap = new HashMap<>(); - replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.apply(seed), replacements.map(replacement -> replacement.apply(seed), true))); + replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.build(seed), replacements.map(replacement -> replacement.build(seed), true))); - return new BorderListMutator(replaceMap, from, defaultReplace, noise.apply(seed), defaultTo.map(biomeBuilder -> biomeBuilder.apply(seed), true)); + return new BorderListMutator(replaceMap, from, defaultReplace, noise.build(seed), defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index a005bc9d6..cdd143bc2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -18,7 +18,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator build(long seed) { - return new BorderMutator(from, replace, noise.apply(seed), to.map(biomeBuilder -> biomeBuilder.apply(seed), true)); + public BiomeMutator getMutator(long seed) { + return new BorderMutator(from, replace, noise.build(seed), to.map(biomeBuilder -> biomeBuilder.build(seed), true)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index e5abaa54e..afe1df756 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -6,10 +6,10 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; public abstract class MutatorStageTemplate extends StageTemplate { - public abstract BiomeMutator build(long seed); + public abstract BiomeMutator getMutator(long seed); @Override - public Stage apply(Long seed) { - return new MutatorStage(build(seed)); + public Stage build(long seed) { + return new MutatorStage(getMutator(seed)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index b1a67e2ee..e6418fdbe 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -22,11 +22,11 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private Map> replace; @Override - public BiomeMutator build(long seed) { + public BiomeMutator getMutator(long seed) { Map> replaceMap = new HashMap<>(); - replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.apply(seed), biomeBuilders.map(builder -> builder.apply(seed), true))); + replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.build(seed), biomeBuilders.map(builder -> builder.build(seed), true))); - return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.apply(seed), true), noise.apply(seed)); + return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index b26977a26..984d17d1d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -15,7 +15,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator build(long seed) { - return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.apply(seed), true), noise.apply(seed)); + public BiomeMutator getMutator(long seed) { + return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index 722d0ca03..b4d266818 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator build(long seed) { - return new SmoothMutator(noise.apply(seed)); + public BiomeMutator getMutator(long seed) { + return new SmoothMutator(noise.build(seed)); } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index cd9bbc289..d0c6e1e9e 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -12,7 +12,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions try { - noiseEquation.apply(0L); + noiseEquation.build(0L); } catch(Exception e) { throw new ValidationException("Invalid noise sampler: ", e); } try { - carvingEquation.apply(0L); + carvingEquation.build(0L); } catch(Exception e) { throw new ValidationException("Invalid carving sampler: ", e); } try { - elevationEquation.apply(0L); + elevationEquation.build(0L); } catch(Exception e) { throw new ValidationException("Invalid elevation sampler: ", e); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java index cf71e95e1..0707b186f 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java @@ -19,11 +19,11 @@ public class UserDefinedSeededTerraBiome implements SeededTerraBiome { } @Override - public UserDefinedBiome apply(Long seed) { + public UserDefinedBiome build(long seed) { synchronized(biomeMap) { return biomeMap.computeIfAbsent(seed, s -> { - UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), + UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().build(seed), template.getElevationEquation().build(seed), template.getCarvingEquation().build(seed), template.getBiomeNoise().build(seed), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template, context); } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index 4fcf0de15..abe73fb04 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -8,6 +8,6 @@ import com.dfsek.terra.api.world.Flora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().apply(2403L)); + return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().build(2403)); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index f61ef6105..36a6bce86 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -23,7 +23,7 @@ public class DomainWarpTemplate extends SamplerTemplate { private double amplitude = 1; @Override - public NoiseSampler apply(Long seed) { - return new DomainWarpedSampler(function.apply(seed), warp.apply(seed), (int) (seed + salt), amplitude); + public NoiseSampler build(long seed) { + return new DomainWarpedSampler(function.build(seed), warp.build(seed), (int) (seed + salt), amplitude); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index d5571d37e..d26c1f7ae 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -19,7 +19,7 @@ public class ImageSamplerTemplate extends SamplerTemplate { private ImageSampler.Channel channel; @Override - public NoiseSampler apply(Long seed) { + public NoiseSampler build(long seed) { return new ImageSampler(image, channel, frequency); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index edcc82a52..b26f7e78e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -28,7 +28,7 @@ public class KernelTemplate extends SamplerTemplate implements Va private double frequency = 1; @Override - public NoiseSampler apply(Long seed) { + public NoiseSampler build(long seed) { double[][] k = new double[kernel.size()][kernel.get(0).size()]; for(int x = 0; x < kernel.size(); x++) { @@ -37,7 +37,7 @@ public class KernelTemplate extends SamplerTemplate implements Va } } - KernelSampler sampler = new KernelSampler(k, function.apply(seed)); + KernelSampler sampler = new KernelSampler(k, function.build(seed)); sampler.setFrequency(frequency); return sampler; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 97c5aff1b..b8c10589a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -26,9 +26,8 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Default private SeededNoiseSampler lookup = new SeededNoiseSampler() { @Override - public NoiseSampler apply(Long seed) { - - return new OpenSimplex2Sampler((int) (long) seed); + public NoiseSampler build(long seed) { + return new OpenSimplex2Sampler((int) seed); } @Override @@ -38,9 +37,9 @@ public class CellularNoiseTemplate extends NoiseTemplate { }; @Override - public NoiseSampler apply(Long seed) { - CellularSampler sampler = new CellularSampler((int) (long) seed + salt); - sampler.setNoiseLookup(lookup.apply(seed)); + public NoiseSampler build(long seed) { + CellularSampler sampler = new CellularSampler((int) seed + salt); + sampler.setNoiseLookup(lookup.build(seed)); sampler.setFrequency(frequency); sampler.setJitterModifier(cellularJitter); sampler.setReturnType(cellularReturnType); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index 2239eb6e0..a5d5d38b0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -13,7 +13,7 @@ public class ConstantNoiseTemplate extends SamplerTemplate { private double value = 0d; @Override - public NoiseSampler apply(Long seed) { + public NoiseSampler build(long seed) { return new ConstantSampler(value); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 31e8f34df..f159620a9 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -42,7 +42,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate noiseFunctionMap = generateFunctions(seed); return new ExpressionFunction(noiseFunctionMap, equation, vars); @@ -71,14 +71,14 @@ public class ExpressionFunctionTemplate extends SamplerTemplate { if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.apply(seed))); + noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed))); + } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed))); }); functions.forEach((id, function) -> { if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.apply(seed))); + noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed))); + } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed))); }); return noiseFunctionMap; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index 6766b2f03..fc7de1f74 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -27,8 +27,8 @@ public class GaborNoiseTemplate extends NoiseTemplate { private double f0 = 0.625; @Override - public NoiseSampler apply(Long seed) { - GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler((int) (long) seed + salt); + public NoiseSampler build(long seed) { + GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler((int) seed + salt); gaborNoiseSampler.setFrequency(frequency); gaborNoiseSampler.setRotation(rotation); gaborNoiseSampler.setIsotropic(isotropic); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index ef2b72be1..68b1dd8bd 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -13,8 +13,8 @@ public class SimpleNoiseTemplate extends NoiseTemplate { } @Override - public NoiseSampler apply(Long seed) { - NoiseFunction sampler = samplerSupplier.apply((int) (long) seed + salt); + public NoiseSampler build(long seed) { + NoiseFunction sampler = samplerSupplier.apply((int) seed + salt); sampler.setFrequency(frequency); return sampler; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index 1965f9d8c..9815d349c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override - public NoiseSampler apply(Long seed) { - BrownianMotionSampler sampler = new BrownianMotionSampler((int) (long) seed, function.apply(seed)); + public NoiseSampler build(long seed) { + BrownianMotionSampler sampler = new BrownianMotionSampler((int) seed, function.build(seed)); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index d8a5bc460..72e517661 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -12,8 +12,8 @@ public class PingPongTemplate extends FractalTemplate { private double pingPong = 2.0D; @Override - public NoiseSampler apply(Long seed) { - PingPongSampler sampler = new PingPongSampler((int) (long) seed, function.apply(seed)); + public NoiseSampler build(long seed) { + PingPongSampler sampler = new PingPongSampler((int) seed, function.build(seed)); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index e16f33403..dec05c521 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override - public NoiseSampler apply(Long seed) { - RidgedFractalSampler sampler = new RidgedFractalSampler((int) (long) seed, function.apply(seed)); + public NoiseSampler build(long seed) { + RidgedFractalSampler sampler = new RidgedFractalSampler((int) seed, function.build(seed)); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index 689939a01..d7da4be6b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -13,7 +13,7 @@ public class ClampNormalizerTemplate extends NormalizerTemplate private double min; @Override - public NoiseSampler apply(Long seed) { - return new ClampNormalizer(function.apply(seed), min, max); + public NoiseSampler build(long seed) { + return new ClampNormalizer(function.build(seed), min, max); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index 4de3930c5..eb65f7135 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -13,7 +13,7 @@ public class LinearNormalizerTemplate extends NormalizerTemplate { switch(noise.getDimensions()) { case 2: - parser.registerFunction(id, new NoiseFunction2(noise.apply(seed))); + parser.registerFunction(id, new NoiseFunction2(noise.build(seed))); break; case 3: - parser.registerFunction(id, new NoiseFunction3(noise.apply(seed))); + parser.registerFunction(id, new NoiseFunction3(noise.build(seed))); break; } }); diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 54a9ec4dc..d8c42fff3 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.generator.Palette; public class PaletteFactory implements ConfigFactory { @Override public Palette build(PaletteTemplate config, TerraPlugin main) { - NoisePalette palette = new NoisePalette(config.getNoise().apply(2403L), config.getNoise().getDimensions() == 2); + NoisePalette palette = new NoisePalette(config.getNoise().build(2403L), config.getNoise().getDimensions() == 2); for(PaletteLayerHolder layer : config.getPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index d7ae0d230..24e8f6b49 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -33,7 +33,7 @@ public class PaletteLayerLoader implements TypeLoader { NoiseSampler sampler = null; if(map.containsKey("noise")) { - sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).apply(2403L); + sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).build(2403L); } if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index d338d3043..3dfb3a5f8 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -23,6 +23,6 @@ public class FloraLayerLoader implements ObjectTemplate { @Override public FloraLayer get() { - return new FloraLayer(density, y, items, distribution.apply(2403L)); + return new FloraLayer(density, y, items, distribution.build(2403L)); } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java index f7bb3d486..60c71750e 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java @@ -22,6 +22,6 @@ public class TreeLayerTemplate implements ObjectTemplate { @Override public TreeLayer get() { - return new TreeLayer(density, y, items, distribution.apply(2403L)); + return new TreeLayer(density, y, items, distribution.build(2403L)); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java index 0d1e05dbe..098986864 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java @@ -2,6 +2,6 @@ package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public interface BiomeProviderBuilder { +public interface BiomeProviderBuilder extends SeededBuilder { BiomeProvider build(long seed); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java index 1a7d15d39..80276342f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java @@ -1,8 +1,6 @@ package com.dfsek.terra.api.util.seeded; -import java.util.function.Function; - @FunctionalInterface -public interface SeededBuilder extends Function { - +public interface SeededBuilder { + T build(long seed); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java index edf10013d..86fe7fc58 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java @@ -6,7 +6,7 @@ public interface SeededNoiseSampler extends SeededBuilder { static SeededNoiseSampler zero(int dimensions) { return new SeededNoiseSampler() { @Override - public NoiseSampler apply(Long seed) { + public NoiseSampler build(long seed) { return NoiseSampler.zero(); } @@ -17,8 +17,5 @@ public interface SeededNoiseSampler extends SeededBuilder { }; } - @Override - NoiseSampler apply(Long seed); - int getDimensions(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 0ce374c9d..da29f5099 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -34,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); - pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); + pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.build(world.getWorld().getSeed()))); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); From d4112e46c7d74f92e4838cfdc204ae60f6a9d871 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:51:18 -0700 Subject: [PATCH 0239/1529] BiomeProviderBuilder -> SeededBiomeProvider --- .../addons/biome/image/ImageBiomeProvider.java | 4 ++-- .../biome/pipeline/BiomePipelineAddon.java | 4 ++-- .../config/BiomeProviderBuilderLoader.java | 7 +++---- .../pipeline/config/BiomeProviderTemplate.java | 6 +++--- .../addons/biome/single/SingleBiomeProvider.java | 4 ++-- .../single/SingleBiomeProviderTemplate.java | 6 +++--- .../com/dfsek/terra/api/config/ConfigPack.java | 4 ++-- .../api/util/seeded/BiomeProviderBuilder.java | 7 ------- .../api/util/seeded/SeededBiomeProvider.java | 6 ++++++ .../dfsek/terra/config/pack/ConfigPackImpl.java | 16 ++++++++-------- .../config/pack/ConfigPackPostTemplate.java | 6 +++--- 11 files changed, 34 insertions(+), 36 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index f7a5a794f..49b550be5 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome.image; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class ImageBiomeProvider implements BiomeProvider, BiomeProviderBuilder { // This provider does not need a seed, so it is its own builder. +public class ImageBiomeProvider implements BiomeProvider, SeededBiomeProvider { // This provider does not need a seed, so it is its own builder. private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index b6d03c0a7..3eab49bf5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -21,7 +21,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.util.seeded.SeededBiomeSource; import java.lang.reflect.Type; @@ -51,6 +51,6 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BiomeProviderBuilder.class, new BiomeProviderBuilderLoader()); + .applyLoader(SeededBiomeProvider.class, new BiomeProviderBuilderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java index bbd40e302..f2f1b193e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -3,14 +3,13 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; -public class BiomeProviderBuilderLoader implements TypeLoader { +public class BiomeProviderBuilderLoader implements TypeLoader { @Override - public BiomeProviderBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededBiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return loader.loadType(BiomePipelineTemplate.class, c); // TODO: actually implement this lol } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index be4e5aa3b..8444d907c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,10 +3,10 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; -public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { +public abstract class BiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { @Value("resolution") @Default protected int resolution = 1; @@ -18,7 +18,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProviderBuilder { +public class SingleBiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { @Value("biome") private SeededTerraBiome biome; @@ -16,7 +16,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate CheckedRegistry getOrCreateRegistry(Class clazz); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java deleted file mode 100644 index 098986864..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/BiomeProviderBuilder.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - -public interface BiomeProviderBuilder extends SeededBuilder { - BiomeProvider build(long seed); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java new file mode 100644 index 000000000..fff86cfcb --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.util.seeded; + +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +public interface SeededBiomeProvider extends SeededBuilder { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index cdb8087ff..191b88965 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -29,7 +29,7 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -82,7 +82,7 @@ public class ConfigPackImpl implements ConfigPack { private final Set addons; - private final BiomeProviderBuilder biomeProviderBuilder; + private final SeededBiomeProvider seededBiomeProvider; private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); @@ -122,8 +122,8 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, configuration); - biomeProviderBuilder = packPostTemplate.getProviderBuilder(); - biomeProviderBuilder.build(0); // Build dummy provider to catch errors at load time. + seededBiomeProvider = packPostTemplate.getProviderBuilder(); + seededBiomeProvider.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); } catch(FileNotFoundException e) { throw new LoadException("No pack.yml file found in " + folder.getAbsolutePath(), e); @@ -175,8 +175,8 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, configuration); - biomeProviderBuilder = packPostTemplate.getProviderBuilder(); - biomeProviderBuilder.build(0); // Build dummy provider to catch errors at load time. + seededBiomeProvider = packPostTemplate.getProviderBuilder(); + seededBiomeProvider.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); } catch(IOException e) { throw new LoadException("Unable to load pack.yml from ZIP file", e); @@ -293,8 +293,8 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public BiomeProviderBuilder getBiomeProviderBuilder() { - return biomeProviderBuilder; + public SeededBiomeProvider getBiomeProviderBuilder() { + return seededBiomeProvider; } @SuppressWarnings("unchecked") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index 0c03a2e3f..8d4c7bee9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,13 +2,13 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") - private BiomeProviderBuilder providerBuilder; + private SeededBiomeProvider providerBuilder; - public BiomeProviderBuilder getProviderBuilder() { + public SeededBiomeProvider getProviderBuilder() { return providerBuilder; } } From bc96006c4bcb990f6927fac16c2a4f4001da44f3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:56:35 -0700 Subject: [PATCH 0240/1529] remove unneeded semicolon --- settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index eb7138e27..08e0f339c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -9,7 +9,7 @@ include("common:loader:addon") fun includeImmediateChildren(dir: File, type: String) { dir.walkTopDown().maxDepth(1).forEach { if(!it.isDirectory || !File(it, "build.gradle.kts").exists()) return@forEach - val addonDir = it.relativeTo(file(".")).path.replace("/", ":"); + val addonDir = it.relativeTo(file(".")).path.replace("/", ":") println("Including $type directory \"$addonDir\" as subproject.") include(addonDir) } From a2dac6dfca704339015cd5fb408c2edb2f470ec4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 21:59:48 -0700 Subject: [PATCH 0241/1529] fix/suppress warnings --- .../terra/addons/generation/feature/FeatureGenerationStage.java | 1 + .../main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 348190530..a496854f8 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -19,6 +19,7 @@ public class FeatureGenerationStage implements TerraGenerationStage { } @Override + @SuppressWarnings("try") public void populate(World world, Chunk chunk) { TerraWorld terraWorld = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("feature")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 191b88965..1a4b3db5e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -189,11 +189,11 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. } + @SuppressWarnings("unchecked") private ConfigTypeRegistry createRegistry() { return new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); if(registryMap.containsKey(configType.getTypeClass())) { // Someone already registered something; we need to copy things to the new registry. - //noinspection unchecked registryMap.get(configType.getTypeClass()).getLeft().forEach(((OpenRegistry) openRegistry)::register); } selfLoader.registerLoader(configType.getTypeClass(), openRegistry); From 4a893cf0810a8950ad727ef235f1f02109fdabe3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 09:55:37 -0700 Subject: [PATCH 0242/1529] DistributorProvider api --- .../dfsek/terra/api/util/provider/DistributorProvider.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java index be6161ccc..207487d1d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java @@ -1,4 +1,9 @@ package com.dfsek.terra.api.util.provider; -public interface DistributorProvider { +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.function.Supplier; + +public interface DistributorProvider extends Supplier> { } From 3fecbe5d1d8ea5de1e3349dc691a783dbac7a68b Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 09:56:06 -0700 Subject: [PATCH 0243/1529] LocatorProvider API --- .../dfsek/terra/api/util/provider/LocatorProvider.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java new file mode 100644 index 000000000..16a4a8cb1 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.util.provider; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.structure.feature.Locator; + +import java.util.function.Supplier; + +public interface LocatorProvider extends Supplier> { +} From d3a080127a68a0d02690e6fa3434ca63af95a49a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 10:00:48 -0700 Subject: [PATCH 0244/1529] remove ExceptionalConsumer --- .../src/main/java/com/dfsek/terra/api/config/Loader.java | 7 +++---- .../terra/api/util/function/ExceptionalConsumer.java | 8 -------- .../com/dfsek/terra/config/fileloaders/LoaderImpl.java | 6 +++--- 3 files changed, 6 insertions(+), 15 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java index 59cec4008..03c7f5f0d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -1,20 +1,19 @@ package com.dfsek.terra.api.config; -import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.terra.api.util.function.ExceptionalConsumer; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; public interface Loader { - Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException; + Loader thenNames(Consumer> consumer) throws ConfigException; - Loader thenEntries(ExceptionalConsumer>> consumer) throws ConfigException; + Loader thenEntries(Consumer>> consumer) throws ConfigException; /** * Get a single file from this Loader. diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java b/common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java deleted file mode 100644 index 2bdd3c06e..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/function/ExceptionalConsumer.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.api.util.function; - -import com.dfsek.tectonic.exception.ConfigException; - -@FunctionalInterface -public interface ExceptionalConsumer { - void accept(T t) throws ConfigException; -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index 8f1c17fa2..839cdf325 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.fileloaders; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.Loader; -import com.dfsek.terra.api.util.function.ExceptionalConsumer; import java.io.IOException; import java.io.InputStream; @@ -11,18 +10,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; public abstract class LoaderImpl implements Loader { protected final Map streams = new HashMap<>(); @Override - public Loader thenNames(ExceptionalConsumer> consumer) throws ConfigException { + public Loader thenNames(Consumer> consumer) throws ConfigException { consumer.accept(new ArrayList<>(streams.keySet())); return this; } @Override - public Loader thenEntries(ExceptionalConsumer>> consumer) throws ConfigException { + public Loader thenEntries(Consumer>> consumer) throws ConfigException { consumer.accept(streams.entrySet()); return this; } From 03b96816c982785544e4681dd6c24de4e972fa52 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:17:44 -0700 Subject: [PATCH 0245/1529] create TypeToken --- .../dfsek/terra/api/util/ReflectionUtil.java | 31 ++++++ .../com/dfsek/terra/api/util/TypeToken.java | 104 ++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java index 1614bac0d..03e871ddc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java @@ -4,8 +4,14 @@ import org.jetbrains.annotations.NotNull; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Array; import java.lang.reflect.Field; +import java.lang.reflect.GenericArrayType; import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; import java.util.Arrays; import java.util.function.Consumer; import java.util.stream.Stream; @@ -33,4 +39,29 @@ public final class ReflectionUtil { T a = element.getAnnotation(annotation); if(a != null) operation.accept(a); } + + public static Class getRawType(Type type) { + if (type instanceof Class) { + return (Class) type; + } else if (type instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) type; + Type rawType = parameterizedType.getRawType(); + return (Class) rawType; + } else if (type instanceof GenericArrayType) { + Type componentType = ((GenericArrayType)type).getGenericComponentType(); + return Array.newInstance(getRawType(componentType), 0).getClass(); + } else if (type instanceof TypeVariable) { + return Object.class; + } else if (type instanceof WildcardType) { + return getRawType(((WildcardType) type).getUpperBounds()[0]); + } else { + String className = type == null ? "null" : type.getClass().getName(); + throw new IllegalArgumentException("Expected a Class, ParameterizedType, or " + + "GenericArrayType, but <" + type + "> is of type " + className); + } + } + + public static String typeToString(Type type) { + return type instanceof Class ? ((Class) type).getName() : type.toString(); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java b/common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java new file mode 100644 index 000000000..3fa3114c6 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java @@ -0,0 +1,104 @@ +package com.dfsek.terra.api.util; + +import java.lang.reflect.*; +import java.util.Arrays; +import java.util.Objects; + +public class TypeToken { + final Class rawType; + final Type type; + final int hashCode; + + @SuppressWarnings("unchecked") + protected TypeToken() { + this.type = getSuperclassTypeParameter(getClass()); + this.rawType = (Class) ReflectionUtil.getRawType(type); + this.hashCode = type.hashCode(); + } + + + static Type getSuperclassTypeParameter(Class subclass) { + Type superclass = subclass.getGenericSuperclass(); + if(superclass instanceof Class) { + throw new RuntimeException("Missing type parameter."); + } + ParameterizedType parameterized = (ParameterizedType) superclass; + return parameterized.getActualTypeArguments()[0]; + } + + /** + * Returns the raw (non-generic) type for this type. + */ + public final Class getRawType() { + return rawType; + } + + /** + * Gets underlying {@code Type} instance. + */ + public final Type getType() { + return type; + } + + @Override + public final int hashCode() { + return this.hashCode; + } + + @Override + public final boolean equals(Object o) { + return o instanceof TypeToken + && equals(type, ((TypeToken) o).type); + } + + @Override + public final String toString() { + return ReflectionUtil.typeToString(type); + } + + public static boolean equals(Type a, Type b) { + if(a == b) { + return true; + } else if(a instanceof Class) { + return a.equals(b); + } else if(a instanceof ParameterizedType) { + if(!(b instanceof ParameterizedType)) { + return false; + } + + ParameterizedType pa = (ParameterizedType) a; + ParameterizedType pb = (ParameterizedType) b; + return Objects.equals(pa.getOwnerType(), pb.getOwnerType()) + && pa.getRawType().equals(pb.getRawType()) + && Arrays.equals(pa.getActualTypeArguments(), pb.getActualTypeArguments()); + } else if(a instanceof GenericArrayType) { + if(!(b instanceof GenericArrayType)) { + return false; + } + + GenericArrayType ga = (GenericArrayType) a; + GenericArrayType gb = (GenericArrayType) b; + return equals(ga.getGenericComponentType(), gb.getGenericComponentType()); + } else if(a instanceof WildcardType) { + if(!(b instanceof WildcardType)) { + return false; + } + + WildcardType wa = (WildcardType) a; + WildcardType wb = (WildcardType) b; + return Arrays.equals(wa.getUpperBounds(), wb.getUpperBounds()) + && Arrays.equals(wa.getLowerBounds(), wb.getLowerBounds()); + } else if(a instanceof TypeVariable) { + if(!(b instanceof TypeVariable)) { + return false; + } + TypeVariable va = (TypeVariable) a; + TypeVariable vb = (TypeVariable) b; + return va.getGenericDeclaration() == vb.getGenericDeclaration() + && va.getName().equals(vb.getName()); + } else { + return false; + } + } +} + From d4e678fd65a21e0b77c4327f0c23cac07b731d59 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:21:38 -0700 Subject: [PATCH 0246/1529] bump Tectonic version --- common/api/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 43ffb3413..9197579d8 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -15,8 +15,8 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("com.dfsek:Paralithic:0.3.2") - "shadedApi"("com.dfsek.tectonic:common:2.1.0") - "shadedApi"("com.dfsek.tectonic:yaml:2.1.0") + "shadedApi"("com.dfsek.tectonic:common:2.1.1") + "shadedApi"("com.dfsek.tectonic:yaml:2.1.1") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") From cd208cbd18852a23056958ead53c22005dfe352e Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:31:17 -0700 Subject: [PATCH 0247/1529] use typetokens in RegistryHolder --- .../api/registry/meta/RegistryHolder.java | 23 +++++++++++++++++-- .../terra/config/pack/ConfigPackImpl.java | 12 +++++----- .../terra/config/pack/WorldConfigImpl.java | 3 ++- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index 29a8fd8a8..d69163070 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -2,9 +2,28 @@ package com.dfsek.terra.api.registry.meta; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.TypeToken; + +import java.lang.reflect.Type; public interface RegistryHolder { - Registry getRegistry(Class clazz); + default Registry getRegistry(Class clazz) { + return getRegistry((Type) clazz); + } - CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException; + default Registry getRegistry(TypeToken type) { + return getRegistry(type.getType()); + } + + Registry getRegistry(Type type); + + default CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { + return getCheckedRegistry((Type) clazz); + } + + default CheckedRegistry getCheckedRegistry(TypeToken type) { + return getCheckedRegistry(type.getType()); + } + + CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 1a4b3db5e..bb27e78f4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -84,7 +84,7 @@ public class ConfigPackImpl implements ConfigPack { private final SeededBiomeProvider seededBiomeProvider; - private final Map, ImmutablePair, CheckedRegistry>> registryMap = new HashMap<>(); + private final Map, CheckedRegistry>> registryMap = new HashMap<>(); private final ConfigTypeRegistry configTypeRegistry; @@ -220,7 +220,7 @@ public class ConfigPackImpl implements ConfigPack { return this; } - protected Map, ImmutablePair, CheckedRegistry>> getRegistryMap() { + protected Map, CheckedRegistry>> getRegistryMap() { return registryMap; } @@ -269,14 +269,14 @@ public class ConfigPackImpl implements ConfigPack { @Override @SuppressWarnings("unchecked") - public CheckedRegistry getRegistry(Class clazz) { - return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); + public CheckedRegistry getRegistry(Type type) { + return (CheckedRegistry) registryMap.getOrDefault(type, ImmutablePair.ofNull()).getRight(); } @SuppressWarnings("unchecked") @Override - public CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { - return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); + public CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException { + return (CheckedRegistry) registryMap.getOrDefault(type, ImmutablePair.ofNull()).getRight(); } @SuppressWarnings("unchecked") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index da29f5099..371cc4c76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -13,6 +13,7 @@ import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.SamplerCacheImpl; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; @@ -24,7 +25,7 @@ public class WorldConfigImpl implements WorldConfig { private final TerraWorld world; private final ConfigPackImpl pack; - private final Map, Registry> registryMap = new HashMap<>(); + private final Map> registryMap = new HashMap<>(); public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { this.world = world; From d10e2050cb057f5d50b4c451acc09853bbafc503 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:32:10 -0700 Subject: [PATCH 0248/1529] default impl of getCheckedRegistry --- .../com/dfsek/terra/api/registry/meta/RegistryHolder.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index d69163070..f42e91927 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -21,9 +21,11 @@ public interface RegistryHolder { return getCheckedRegistry((Type) clazz); } - default CheckedRegistry getCheckedRegistry(TypeToken type) { + default CheckedRegistry getCheckedRegistry(TypeToken type) throws IllegalStateException { return getCheckedRegistry(type.getType()); } - CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException; + default CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException { + throw new IllegalStateException("Cannot get checked registry."); + } } From ebc81b196a2965f04bf9c45e1aef41a229bc2542 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:37:40 -0700 Subject: [PATCH 0249/1529] typetoken getOrCreateRegistry --- .../java/com/dfsek/terra/api/config/ConfigPack.java | 11 ++++++++++- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 9 +++++---- 2 files changed, 15 insertions(+), 5 deletions(-) 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 eacd02eea..4353747d0 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 @@ -6,11 +6,13 @@ import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; +import java.lang.reflect.Type; import java.util.List; import java.util.Map; import java.util.Set; @@ -18,7 +20,14 @@ import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { SeededBiomeProvider getBiomeProviderBuilder(); - CheckedRegistry getOrCreateRegistry(Class clazz); + CheckedRegistry getOrCreateRegistry(Type clazz); + default CheckedRegistry getOrCreateRegistry(Class clazz) { + return getOrCreateRegistry((Type) clazz); + } + + default CheckedRegistry getOrCreateRegistry(TypeToken type) { + return getOrCreateRegistry(type.getType()); + } WorldConfig toWorldConfig(TerraWorld world); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index bb27e78f4..9429827b6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -28,6 +28,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; +import com.dfsek.terra.api.util.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.TerraWorld; @@ -203,7 +204,7 @@ public class ConfigPackImpl implements ConfigPack { } private void checkDeadEntries(TerraPlugin main) { - registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'"))); + registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + ReflectionUtil.typeToString(clazz) + "' registry: '" + id + "'"))); } @Override @@ -299,12 +300,12 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings("unchecked") @Override - public CheckedRegistry getOrCreateRegistry(Class clazz) { - return (CheckedRegistry) registryMap.computeIfAbsent(clazz, c -> { + public CheckedRegistry getOrCreateRegistry(Type type) { + return (CheckedRegistry) registryMap.computeIfAbsent(type, c -> { OpenRegistry registry = new OpenRegistryImpl<>(); selfLoader.registerLoader(c, registry); abstractConfigLoader.registerLoader(c, registry); - main.getDebugLogger().info("Registered loader for registry of class " + c); + main.getDebugLogger().info("Registered loader for registry of class " + ReflectionUtil.typeToString(c)); return ImmutablePair.of(registry, new CheckedRegistryImpl<>(registry)); }).getRight(); } From d5601229ac8c08002afa330a52c3c8bffe80a380 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:55:35 -0700 Subject: [PATCH 0250/1529] use TypeToken for registries --- .../com/dfsek/terra/addons/biome/BiomeConfigType.java | 7 +++++-- .../com/dfsek/terra/addons/flora/FloraConfigType.java | 7 +++++-- .../java/com/dfsek/terra/addons/ore/OreConfigType.java | 6 ++++-- .../dfsek/terra/addons/palette/PaletteConfigType.java | 7 +++++-- .../com/dfsek/terra/addons/tree/TreeConfigType.java | 6 ++++-- .../generation/feature/FeatureGenerationAddon.java | 2 +- .../addons/generation/flora/FloraGenerationAddon.java | 2 +- .../addons/generation/tree/TreeGenerationAddon.java | 2 +- .../java/com/dfsek/terra/api/config/ConfigType.java | 3 ++- .../event/events/config/ConfigurationLoadEvent.java | 7 ++++--- .../event/events/config/type/ConfigTypeLoadEvent.java | 7 ++++--- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 10 +++++----- .../terra/registry/config/ConfigTypeRegistry.java | 3 ++- 13 files changed, 43 insertions(+), 26 deletions(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 113a42c68..99039a55e 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import java.util.function.Supplier; @@ -15,6 +16,8 @@ public class BiomeConfigType implements ConfigType BIOME_TYPE_TOKEN = new TypeToken<>() {}; + public BiomeConfigType(ConfigPack pack) { this.pack = pack; this.factory = new BiomeFactory(pack); @@ -31,8 +34,8 @@ public class BiomeConfigType implements ConfigType getTypeClass() { - return SeededTerraBiome.class; + public TypeToken getTypeClass() { + return BIOME_TYPE_TOKEN; } @Override diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index aec5bf959..aa4b2342a 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.world.Flora; import java.util.function.Supplier; @@ -13,6 +14,8 @@ public class FloraConfigType implements ConfigType { private final FloraFactory factory = new FloraFactory(); private final ConfigPack pack; + public static final TypeToken FLORA_TYPE_TOKEN = new TypeToken<>(){}; + public FloraConfigType(ConfigPack pack) { this.pack = pack; } @@ -28,8 +31,8 @@ public class FloraConfigType implements ConfigType { } @Override - public Class getTypeClass() { - return Flora.class; + public TypeToken getTypeClass() { + return FLORA_TYPE_TOKEN; } @Override diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index a76f335bc..7945f9ecf 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -6,12 +6,14 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import java.util.function.Supplier; public class OreConfigType implements ConfigType { private final OreFactory factory = new OreFactory(); private final ConfigPack pack; + public static final TypeToken ORE_TYPE_TOKEN = new TypeToken<>(){}; public OreConfigType(ConfigPack pack) { this.pack = pack; @@ -28,8 +30,8 @@ public class OreConfigType implements ConfigType { } @Override - public Class getTypeClass() { - return Ore.class; + public TypeToken getTypeClass() { + return ORE_TYPE_TOKEN; } @Override diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 8e05d56c5..f7980e4e7 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.world.generator.Palette; import java.util.function.Supplier; @@ -17,6 +18,8 @@ public class PaletteConfigType implements ConfigType { private final ConfigPack pack; private final TerraPlugin main; + public static final TypeToken PALETTE_TYPE_TOKEN = new TypeToken<>(){}; + public PaletteConfigType(ConfigPack pack, TerraPlugin main) { this.pack = pack; this.main = main; @@ -33,8 +36,8 @@ public class PaletteConfigType implements ConfigType { } @Override - public Class getTypeClass() { - return Palette.class; + public TypeToken getTypeClass() { + return PALETTE_TYPE_TOKEN; } @Override diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java index 7af6d171a..4a44a9e19 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.world.Tree; import java.util.function.Supplier; @@ -13,6 +14,7 @@ public class TreeConfigType implements ConfigType { private final TreeFactory factory = new TreeFactory(); private final ConfigPack pack; + public static final TypeToken TREE_TYPE_TOKEN = new TypeToken<>(){}; public TreeConfigType(ConfigPack pack) { this.pack = pack; } @@ -28,8 +30,8 @@ public class TreeConfigType implements ConfigType { } @Override - public Class getTypeClass() { - return Tree.class; + public TypeToken getTypeClass() { + return TREE_TYPE_TOKEN; } @Override diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 8be6158e0..58081c971 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -30,7 +30,7 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + if(event.is(SeededTerraBiome.class)) { event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index a3a9a19eb..0995ff372 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -31,7 +31,7 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + if(event.is(SeededTerraBiome.class)) { event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java index 2143780d3..251d7ec32 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java @@ -31,7 +31,7 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) { + if(event.is(SeededTerraBiome.class)) { event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 49e60ba6e..6bfea99d7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.util.TypeToken; import java.util.function.Supplier; @@ -10,7 +11,7 @@ public interface ConfigType { ConfigFactory getFactory(); - Class getTypeClass(); + TypeToken getTypeClass(); Supplier> registrySupplier(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 49dcdbf83..f00c570a5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.PackEvent; +import com.dfsek.terra.api.util.ReflectionUtil; import java.util.function.Consumer; @@ -49,13 +50,13 @@ public class ConfigurationLoadEvent implements PackEvent { } public boolean is(Class clazz) { - return clazz.isAssignableFrom(type.getTypeClass()); + return clazz.isAssignableFrom(type.getTypeClass().getRawType()); } @SuppressWarnings("unchecked") public T getLoadedObject(Class clazz) { - if(!clazz.isAssignableFrom(type.getTypeClass())) - throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); + if(!clazz.isAssignableFrom(type.getTypeClass().getRawType())) + throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeClass().getType()) + " to class " + clazz.getCanonicalName()); return (T) loaded; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index a23e90a9c..cbd36ec92 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.ReflectionUtil; public abstract class ConfigTypeLoadEvent implements PackEvent { private final ConfigType type; @@ -23,13 +24,13 @@ public abstract class ConfigTypeLoadEvent implements PackEvent { } public boolean is(Class clazz) { - return clazz.isAssignableFrom(type.getTypeClass()); + return clazz.isAssignableFrom(type.getTypeClass().getRawType()); } @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Class clazz) { - if(!clazz.isAssignableFrom(type.getTypeClass())) - throw new ClassCastException("Cannot assign object from loader of type " + type.getTypeClass().getCanonicalName() + " to class " + clazz.getCanonicalName()); + if(!clazz.isAssignableFrom(type.getTypeClass().getRawType())) + throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeClass().getType()) + " to class " + clazz.getCanonicalName()); return (CheckedRegistry) registry; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 9429827b6..abb71df02 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -194,12 +194,12 @@ public class ConfigPackImpl implements ConfigPack { private ConfigTypeRegistry createRegistry() { return new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier().get(); - if(registryMap.containsKey(configType.getTypeClass())) { // Someone already registered something; we need to copy things to the new registry. - registryMap.get(configType.getTypeClass()).getLeft().forEach(((OpenRegistry) openRegistry)::register); + if(registryMap.containsKey(configType.getTypeClass().getType())) { // Someone already registered something; we need to copy things to the new registry. + registryMap.get(configType.getTypeClass().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); } - selfLoader.registerLoader(configType.getTypeClass(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass(), openRegistry); - registryMap.put(configType.getTypeClass(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); + selfLoader.registerLoader(configType.getTypeClass().getType(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeClass().getType(), openRegistry); + registryMap.put(configType.getTypeClass().getType(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index eb48c2639..d2936bb25 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -2,6 +2,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.util.ReflectionUtil; import com.dfsek.terra.registry.OpenRegistryImpl; import java.util.LinkedHashMap; @@ -21,7 +22,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { @Override public boolean register(String identifier, Entry> value) { callback.accept(identifier, value.getValue()); - main.getDebugLogger().info("Registered config registry with ID " + identifier + " to class " + value.getValue().getTypeClass().getCanonicalName()); + main.getDebugLogger().info("Registered config registry with ID " + identifier + " to type " + ReflectionUtil.typeToString(value.getValue().getTypeClass().getType())); return super.register(identifier, value); } } From 4b4c26eb84c349b4515bfd2069f5540f658946ea Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 13:59:26 -0700 Subject: [PATCH 0251/1529] generify noise registry --- .../java/com/dfsek/terra/addons/noise/NoiseAddon.java | 8 ++++++-- .../addons/noise/config/NoiseSamplerBuilderLoader.java | 6 +++--- .../dfsek/terra/api/util/provider/NoiseProvider.java | 10 ---------- 3 files changed, 9 insertions(+), 15 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index e94b05ef2..7399cdb67 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.noise; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; @@ -34,11 +35,12 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.provider.NoiseProvider; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; @Addon("config-noise-function") @Author("Terra") @@ -47,13 +49,15 @@ public class NoiseAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin plugin; + public static final TypeToken>> NOISE_SAMPLER_TOKEN = new TypeToken<>() {}; + @Override public void initialize() { plugin.getEventManager().registerListener(this, this); } public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class); + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); event.getPack() .applyLoader(SeededNoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index ef4860135..2173786d0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -7,18 +7,18 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.provider.NoiseProvider; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.lang.reflect.AnnotatedType; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; @SuppressWarnings("unchecked") public class NoiseSamplerBuilderLoader implements TypeLoader { - private final Registry noiseRegistry; + private final Registry>> noiseRegistry; - public NoiseSamplerBuilderLoader(Registry noiseRegistry) { + public NoiseSamplerBuilderLoader(Registry>> noiseRegistry) { this.noiseRegistry = noiseRegistry; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java deleted file mode 100644 index f1c5885b3..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/provider/NoiseProvider.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.util.provider; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; - -import java.util.function.Supplier; - -@FunctionalInterface -public interface NoiseProvider extends Supplier> { -} From 40cd6607b20162770e9505e843006037feecc207 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:05:04 -0700 Subject: [PATCH 0252/1529] generify biome provider --- .../terra/addons/biome/image/ImageBiomeProvider.java | 4 ++-- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 8 ++++++-- .../biome/pipeline/config/BiomeProviderBuilderLoader.java | 7 ++++--- .../biome/pipeline/config/BiomeProviderTemplate.java | 7 ++++--- .../terra/addons/biome/single/SingleBiomeProvider.java | 4 ++-- .../addons/biome/single/SingleBiomeProviderTemplate.java | 6 +++--- .../main/java/com/dfsek/terra/api/config/ConfigPack.java | 5 +++-- .../dfsek/terra/api/util/seeded/SeededBiomeProvider.java | 6 ------ .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 7 ++++--- .../dfsek/terra/config/pack/ConfigPackPostTemplate.java | 7 ++++--- 10 files changed, 32 insertions(+), 29 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 49b550be5..ea715500d 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome.image; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class ImageBiomeProvider implements BiomeProvider, SeededBiomeProvider { // This provider does not need a seed, so it is its own builder. +public class ImageBiomeProvider implements BiomeProvider, SeededBuilder { // This provider does not need a seed, so it is its own builder. private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 3eab49bf5..bf4b156e4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -21,8 +21,10 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.TypeToken; import com.dfsek.terra.api.util.seeded.SeededBiomeSource; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.Type; @@ -33,6 +35,8 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; + public static final TypeToken> BIOME_PROVIDER_BUILDER_TOKEN = new TypeToken<>(){}; + @Override public void initialize() { main.getEventManager().registerListener(this, this); @@ -51,6 +55,6 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(SeededBiomeProvider.class, new BiomeProviderBuilderLoader()); + .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderBuilderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java index f2f1b193e..41f3f7f1c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -3,13 +3,14 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; -public class BiomeProviderBuilderLoader implements TypeLoader { +public class BiomeProviderBuilderLoader implements TypeLoader> { @Override - public SeededBiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return loader.loadType(BiomePipelineTemplate.class, c); // TODO: actually implement this lol } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 8444d907c..126347c8e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,10 +3,11 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public abstract class BiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { +public abstract class BiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { @Value("resolution") @Default protected int resolution = 1; @@ -18,7 +19,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate get() { return this; } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index b77500fd0..47ba7c052 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.single; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public class SingleBiomeProvider implements BiomeProvider, SeededBiomeProvider { +public class SingleBiomeProvider implements BiomeProvider, SeededBuilder { private final TerraBiome biome; public SingleBiomeProvider(TerraBiome biome) { diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 1a29a2a9c..3b6a9b2ba 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,11 +2,11 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public class SingleBiomeProviderTemplate implements ObjectTemplate, SeededBiomeProvider { +public class SingleBiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { @Value("biome") private SeededTerraBiome biome; @@ -16,7 +16,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate get() { return this; } } 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 4353747d0..1d6c029f5 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 @@ -7,8 +7,9 @@ import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.TypeToken; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -18,7 +19,7 @@ import java.util.Map; import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { - SeededBiomeProvider getBiomeProviderBuilder(); + SeededBuilder getBiomeProviderBuilder(); CheckedRegistry getOrCreateRegistry(Type clazz); default CheckedRegistry getOrCreateRegistry(Class clazz) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java deleted file mode 100644 index fff86cfcb..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeProvider.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - -public interface SeededBiomeProvider extends SeededBuilder { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index abb71df02..98a8a58ff 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,8 +30,9 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.config.dummy.DummyWorld; @@ -83,7 +84,7 @@ public class ConfigPackImpl implements ConfigPack { private final Set addons; - private final SeededBiomeProvider seededBiomeProvider; + private final SeededBuilder seededBiomeProvider; private final Map, CheckedRegistry>> registryMap = new HashMap<>(); @@ -294,7 +295,7 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public SeededBiomeProvider getBiomeProviderBuilder() { + public SeededBuilder getBiomeProviderBuilder() { return seededBiomeProvider; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index 8d4c7bee9..eea9d85ac 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,13 +2,14 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.SeededBiomeProvider; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") - private SeededBiomeProvider providerBuilder; + private SeededBuilder providerBuilder; - public SeededBiomeProvider getProviderBuilder() { + public SeededBuilder getProviderBuilder() { return providerBuilder; } } From 04e998748d9d73f01305bab66a67cb21a1354983 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:05:36 -0700 Subject: [PATCH 0253/1529] remove LocatorProvider --- .../dfsek/terra/api/util/provider/LocatorProvider.java | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java deleted file mode 100644 index 16a4a8cb1..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/provider/LocatorProvider.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.api.util.provider; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.structure.feature.Locator; - -import java.util.function.Supplier; - -public interface LocatorProvider extends Supplier> { -} From 11f161d5468a09b2c220297c221a343432070205 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:05:52 -0700 Subject: [PATCH 0254/1529] remove DistributorProvider --- .../terra/api/util/provider/DistributorProvider.java | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java deleted file mode 100644 index 207487d1d..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/provider/DistributorProvider.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dfsek.terra.api.util.provider; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.structure.feature.Distributor; - -import java.util.function.Supplier; - -public interface DistributorProvider extends Supplier> { -} From 15f749bfe9ac02a4b83a7eb5ac0f18655905b48c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:08:59 -0700 Subject: [PATCH 0255/1529] generify SeededBiomeSource --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 5 +++-- .../biome/pipeline/config/BiomePipelineTemplate.java | 5 +++-- .../addons/biome/pipeline/config/SourceBuilderLoader.java | 6 +++--- .../terra/addons/biome/pipeline/config/SourceTemplate.java | 7 ++++--- .../com/dfsek/terra/api/util/seeded/SeededBiomeSource.java | 7 ------- 5 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index bf4b156e4..6ff34120b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -22,9 +22,9 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.TypeToken; -import com.dfsek.terra.api.util.seeded.SeededBiomeSource; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.Type; @@ -36,6 +36,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { private TerraPlugin main; public static final TypeToken> BIOME_PROVIDER_BUILDER_TOKEN = new TypeToken<>(){}; + public static final TypeToken> BIOME_SOURCE_BUILDER_TOKEN = new TypeToken<>(){}; @Override public void initialize() { @@ -43,7 +44,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(SeededBiomeSource.class, new SourceBuilderLoader()) + event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceBuilderLoader()) .applyLoader(StageSeeded.class, new StageBuilderLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index c226c8ef7..4dcadb2a6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -6,8 +6,9 @@ import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.seeded.SeededBiomeSource; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.util.List; @@ -22,7 +23,7 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { private List stages; @Value("pipeline.source") - private SeededBiomeSource source; + private SeededBuilder source; public BiomePipelineTemplate(TerraPlugin main) { this.main = main; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java index b2bd0b58e..3dd500673 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java @@ -3,16 +3,16 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.SeededBiomeSource; +import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; import java.util.Map; @SuppressWarnings("unchecked") -public class SourceBuilderLoader implements TypeLoader { +public class SourceBuilderLoader implements TypeLoader> { @Override - public SeededBiomeSource load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public SeededBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map source = (Map) c; BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index 1232dcbdd..10935d983 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.SeededBiomeSource; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -public abstract class SourceTemplate implements ObjectTemplate, SeededBiomeSource { +public abstract class SourceTemplate implements ObjectTemplate>, SeededBuilder { @Override - public SeededBiomeSource get() { + public SeededBuilder get() { return this; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java deleted file mode 100644 index 86d72208c..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBiomeSource.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; - -@FunctionalInterface -public interface SeededBiomeSource extends SeededBuilder { -} From 4447005b43072c6c37bc4a65453b795a6c89536c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:10:34 -0700 Subject: [PATCH 0256/1529] refactor TypeToken to TypeKey --- .../addons/biome/pipeline/BiomePipelineAddon.java | 6 +++--- .../dfsek/terra/addons/biome/BiomeConfigType.java | 6 +++--- .../dfsek/terra/addons/flora/FloraConfigType.java | 6 +++--- .../com/dfsek/terra/addons/noise/NoiseAddon.java | 4 ++-- .../com/dfsek/terra/addons/ore/OreConfigType.java | 6 +++--- .../terra/addons/palette/PaletteConfigType.java | 6 +++--- .../com/dfsek/terra/addons/tree/TreeConfigType.java | 6 +++--- .../java/com/dfsek/terra/api/config/ConfigPack.java | 4 ++-- .../java/com/dfsek/terra/api/config/ConfigType.java | 4 ++-- .../terra/api/registry/meta/RegistryHolder.java | 6 +++--- .../util/{TypeToken.java => reflection/TypeKey.java} | 12 +++++++----- 11 files changed, 34 insertions(+), 32 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/{TypeToken.java => reflection/TypeKey.java} (92%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 6ff34120b..5b68920e9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -21,7 +21,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -35,8 +35,8 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; - public static final TypeToken> BIOME_PROVIDER_BUILDER_TOKEN = new TypeToken<>(){}; - public static final TypeToken> BIOME_SOURCE_BUILDER_TOKEN = new TypeToken<>(){}; + public static final TypeKey> BIOME_PROVIDER_BUILDER_TOKEN = new TypeKey<>(){}; + public static final TypeKey> BIOME_SOURCE_BUILDER_TOKEN = new TypeKey<>(){}; @Override public void initialize() { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 99039a55e..75ba8ad31 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import java.util.function.Supplier; @@ -16,7 +16,7 @@ public class BiomeConfigType implements ConfigType BIOME_TYPE_TOKEN = new TypeToken<>() {}; + public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() {}; public BiomeConfigType(ConfigPack pack) { this.pack = pack; @@ -34,7 +34,7 @@ public class BiomeConfigType implements ConfigType getTypeClass() { + public TypeKey getTypeClass() { return BIOME_TYPE_TOKEN; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index aa4b2342a..f0e4044c9 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.Flora; import java.util.function.Supplier; @@ -14,7 +14,7 @@ public class FloraConfigType implements ConfigType { private final FloraFactory factory = new FloraFactory(); private final ConfigPack pack; - public static final TypeToken FLORA_TYPE_TOKEN = new TypeToken<>(){}; + public static final TypeKey FLORA_TYPE_TOKEN = new TypeKey<>(){}; public FloraConfigType(ConfigPack pack) { this.pack = pack; @@ -31,7 +31,7 @@ public class FloraConfigType implements ConfigType { } @Override - public TypeToken getTypeClass() { + public TypeKey getTypeClass() { return FLORA_TYPE_TOKEN; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 7399cdb67..0f66e6c37 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -35,7 +35,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; @@ -49,7 +49,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin plugin; - public static final TypeToken>> NOISE_SAMPLER_TOKEN = new TypeToken<>() {}; + public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() {}; @Override public void initialize() { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index 7945f9ecf..1a6fd9695 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -6,14 +6,14 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import java.util.function.Supplier; public class OreConfigType implements ConfigType { private final OreFactory factory = new OreFactory(); private final ConfigPack pack; - public static final TypeToken ORE_TYPE_TOKEN = new TypeToken<>(){}; + public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>(){}; public OreConfigType(ConfigPack pack) { this.pack = pack; @@ -30,7 +30,7 @@ public class OreConfigType implements ConfigType { } @Override - public TypeToken getTypeClass() { + public TypeKey getTypeClass() { return ORE_TYPE_TOKEN; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index f7980e4e7..49c77e386 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.generator.Palette; import java.util.function.Supplier; @@ -18,7 +18,7 @@ public class PaletteConfigType implements ConfigType { private final ConfigPack pack; private final TerraPlugin main; - public static final TypeToken PALETTE_TYPE_TOKEN = new TypeToken<>(){}; + public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>(){}; public PaletteConfigType(ConfigPack pack, TerraPlugin main) { this.pack = pack; @@ -36,7 +36,7 @@ public class PaletteConfigType implements ConfigType { } @Override - public TypeToken getTypeClass() { + public TypeKey getTypeClass() { return PALETTE_TYPE_TOKEN; } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java index 4a44a9e19..b6da598d1 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.Tree; import java.util.function.Supplier; @@ -14,7 +14,7 @@ public class TreeConfigType implements ConfigType { private final TreeFactory factory = new TreeFactory(); private final ConfigPack pack; - public static final TypeToken TREE_TYPE_TOKEN = new TypeToken<>(){}; + public static final TypeKey TREE_TYPE_TOKEN = new TypeKey<>(){}; public TreeConfigType(ConfigPack pack) { this.pack = pack; } @@ -30,7 +30,7 @@ public class TreeConfigType implements ConfigType { } @Override - public TypeToken getTypeClass() { + public TypeKey getTypeClass() { return TREE_TYPE_TOKEN; } 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 1d6c029f5..29262444c 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 @@ -6,7 +6,7 @@ import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -26,7 +26,7 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde return getOrCreateRegistry((Type) clazz); } - default CheckedRegistry getOrCreateRegistry(TypeToken type) { + default CheckedRegistry getOrCreateRegistry(TypeKey type) { return getOrCreateRegistry(type.getType()); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 6bfea99d7..482bfc8d4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import java.util.function.Supplier; @@ -11,7 +11,7 @@ public interface ConfigType { ConfigFactory getFactory(); - TypeToken getTypeClass(); + TypeKey getTypeClass(); Supplier> registrySupplier(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index f42e91927..e1e839a81 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.registry.meta; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.TypeToken; +import com.dfsek.terra.api.util.reflection.TypeKey; import java.lang.reflect.Type; @@ -11,7 +11,7 @@ public interface RegistryHolder { return getRegistry((Type) clazz); } - default Registry getRegistry(TypeToken type) { + default Registry getRegistry(TypeKey type) { return getRegistry(type.getType()); } @@ -21,7 +21,7 @@ public interface RegistryHolder { return getCheckedRegistry((Type) clazz); } - default CheckedRegistry getCheckedRegistry(TypeToken type) throws IllegalStateException { + default CheckedRegistry getCheckedRegistry(TypeKey type) throws IllegalStateException { return getCheckedRegistry(type.getType()); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java similarity index 92% rename from common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java rename to common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java index 3fa3114c6..45125ed3d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/TypeToken.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java @@ -1,16 +1,18 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.reflection; + +import com.dfsek.terra.api.util.ReflectionUtil; import java.lang.reflect.*; import java.util.Arrays; import java.util.Objects; -public class TypeToken { +public class TypeKey { final Class rawType; final Type type; final int hashCode; @SuppressWarnings("unchecked") - protected TypeToken() { + protected TypeKey() { this.type = getSuperclassTypeParameter(getClass()); this.rawType = (Class) ReflectionUtil.getRawType(type); this.hashCode = type.hashCode(); @@ -47,8 +49,8 @@ public class TypeToken { @Override public final boolean equals(Object o) { - return o instanceof TypeToken - && equals(type, ((TypeToken) o).type); + return o instanceof TypeKey + && equals(type, ((TypeKey) o).type); } @Override From 46f64b5434f655c59b3a87751950f5f7c881f56c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 14:11:08 -0700 Subject: [PATCH 0257/1529] refactor ReflectionUtil to util.reflection package --- .../terra/api/event/events/config/ConfigurationLoadEvent.java | 2 +- .../terra/api/event/events/config/type/ConfigTypeLoadEvent.java | 2 +- .../dfsek/terra/api/util/{ => reflection}/ReflectionUtil.java | 2 +- .../main/java/com/dfsek/terra/api/util/reflection/TypeKey.java | 2 -- .../main/java/com/dfsek/terra/commands/TerraCommandManager.java | 2 +- .../main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- .../src/main/java/com/dfsek/terra/event/EventManagerImpl.java | 2 +- .../src/main/java/com/dfsek/terra/inject/InjectorImpl.java | 2 +- .../com/dfsek/terra/registry/config/ConfigTypeRegistry.java | 2 +- 9 files changed, 8 insertions(+), 10 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/util/{ => reflection}/ReflectionUtil.java (98%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index f00c570a5..2e5492291 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import java.util.function.Consumer; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index cbd36ec92..bd1836beb 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; public abstract class ConfigTypeLoadEvent implements PackEvent { private final ConfigType type; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java rename to common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java index 03e871ddc..b7f558a7a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.reflection; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java index 45125ed3d..5cbafe7d8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java @@ -1,7 +1,5 @@ package com.dfsek.terra.api.util.reflection; -import com.dfsek.terra.api.util.ReflectionUtil; - import java.lang.reflect.*; import java.util.Arrays; import java.util.Objects; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 8438b9de0..34e3f29c5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -22,7 +22,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.exception.InjectionException; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.inject.InjectorImpl; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 98a8a58ff..3117208f2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -28,7 +28,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index 43b606cfc..4b2d13d6d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import java.io.PrintWriter; import java.io.StringWriter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java b/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java index 25f991b52..5be71bc86 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java @@ -3,7 +3,7 @@ package com.dfsek.terra.inject; import com.dfsek.terra.api.injection.Injector; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.exception.InjectionException; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import java.lang.reflect.Field; import java.lang.reflect.Modifier; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index d2936bb25..b12af27ef 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -2,7 +2,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.util.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.registry.OpenRegistryImpl; import java.util.LinkedHashMap; From 1a3a7df3f710cf2de49e28b8e939f1cd790ba21a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:38:40 -0700 Subject: [PATCH 0258/1529] create noise distributor --- .../feature/distributor/DistributorAddon.java | 14 ++++++++++++++ .../config/NoiseDistributorTemplate.java | 18 ++++++++++++++++++ .../distributors/NoiseDistributor.java | 17 +++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 9c74fac62..4295cde1d 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -1,17 +1,27 @@ package com.dfsek.terra.addons.feature.distributor; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.util.seeded.SeededBuilder; + +import java.util.function.Supplier; @Addon("config-distributors") @Version("1.0.0") @Author("Terra") public class DistributorAddon extends TerraAddon implements EventListener { + public static final TypeKey>>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -21,4 +31,8 @@ public class DistributorAddon extends TerraAddon implements EventListener { } + public void packPreLoad(ConfigPackPreLoadEvent event) { + CheckedRegistry>>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); + distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); + } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java new file mode 100644 index 000000000..f4930b78f --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.util.seeded.SeededBuilder; +import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; + +public class NoiseDistributorTemplate implements ObjectTemplate> { + @Value("distribution") + private SeededNoiseSampler noise; + + @Override + public SeededBuilder get() { + return seed -> new NoiseDistributor(noise.build(seed)); + } +} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java new file mode 100644 index 000000000..00b4ad8fb --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.feature.distributor.distributors; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.Distributor; + +public class NoiseDistributor implements Distributor { + private final NoiseSampler sampler; + + public NoiseDistributor(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public boolean matches(int x, int z) { + return sampler.getNoise(x, z) > 0; + } +} From fc63798103439fe81cd624f61f9c5684c9e4b2b1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:41:08 -0700 Subject: [PATCH 0259/1529] create LocatorAddon --- .../addons/feature/locator/LocatorAddon.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java new file mode 100644 index 000000000..465deb6a5 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.feature.locator; + +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.injection.annotations.Inject; + +@Addon("config-locators") +@Version("1.0.0") +@Author("Terra") +public class LocatorAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From ac99d89e967e690ad565717e475d1adab874c23d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:43:09 -0700 Subject: [PATCH 0260/1529] register locator registry --- .../addons/feature/locator/LocatorAddon.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 465deb6a5..741e8210d 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,17 +1,28 @@ package com.dfsek.terra.addons.feature.locator; +import com.dfsek.tectonic.loading.object.ObjectTemplate; 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.util.seeded.SeededBuilder; + +import java.util.function.Supplier; @Addon("config-locators") @Version("1.0.0") @Author("Terra") public class LocatorAddon extends TerraAddon implements EventListener { + + public static final TypeKey>>> LOCATOR_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -19,4 +30,8 @@ public class LocatorAddon extends TerraAddon implements EventListener { public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + CheckedRegistry>>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); + } } From a70641e01b5c5966bf3bedf8235ff76644a1eec3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:50:16 -0700 Subject: [PATCH 0261/1529] create SurfaceLocator --- .../locator/locators/SurfaceLocator.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java new file mode 100644 index 000000000..a343a2376 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.world.Column; + +import java.util.Collections; +import java.util.List; + +public class SurfaceLocator implements Locator { + private final ConstantRange search; + + private final BlockState air; + + public SurfaceLocator(ConstantRange search, TerraPlugin main) { + this.search = search; + this.air = main.getWorldHandle().air(); + } + + @Override + public List getSuitableCoordinates(Column column) { + for(int y : search) { + if(column.getBlock(y).matches(air) && !column.getBlock(y-1).matches(air)) { + return Collections.singletonList(y); + } + } + return Collections.emptyList(); + } +} From 913e7fd6dfc7b6c095055c0a81dd885885d326eb Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:51:59 -0700 Subject: [PATCH 0262/1529] configure SurfaceLocator --- .../config/SurfaceLocatorTemplate.java | 25 +++++++++++++++++++ .../locator/locators/SurfaceLocator.java | 5 ++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java new file mode 100644 index 000000000..3619bca73 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.seeded.SeededBuilder; + +public class SurfaceLocatorTemplate implements ObjectTemplate> { + private final TerraPlugin main; + + @Value("range") + private Range range; + + public SurfaceLocatorTemplate(TerraPlugin main) { + this.main = main; + } + + @Override + public SeededBuilder get() { + return seed -> new SurfaceLocator(range, main); + } +} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java index a343a2376..8bcbde459 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -4,17 +4,18 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; import java.util.Collections; import java.util.List; public class SurfaceLocator implements Locator { - private final ConstantRange search; + private final Range search; private final BlockState air; - public SurfaceLocator(ConstantRange search, TerraPlugin main) { + public SurfaceLocator(Range search, TerraPlugin main) { this.search = search; this.air = main.getWorldHandle().air(); } From 7acfc5e3d05120f1c0659a1f3cc140041c2f84a4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 18 Jul 2021 15:52:39 -0700 Subject: [PATCH 0263/1529] register SurfaceLocator --- .../com/dfsek/terra/addons/feature/locator/LocatorAddon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 741e8210d..bca1e34c1 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -33,5 +34,6 @@ public class LocatorAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) { CheckedRegistry>>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); + locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); } } From 3bf8fe7901b7a75d0ade98b3b19855d738c8933e Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 19:24:54 -0700 Subject: [PATCH 0264/1529] pass seed to noise functions --- .../biome/image/ImageBiomeProvider.java | 2 +- .../biome/pipeline/BiomeHolderImpl.java | 16 +++---- .../biome/pipeline/BiomePipelineImpl.java | 6 +-- .../biome/pipeline/StandardBiomeProvider.java | 47 +++++++++++++++---- .../biome/pipeline/api/BiomeExpander.java | 2 +- .../biome/pipeline/api/BiomeHolder.java | 6 +-- .../biome/pipeline/api/BiomeMutator.java | 2 +- .../addons/biome/pipeline/api/Stage.java | 2 +- .../pipeline/expand/FractalExpander.java | 4 +- .../pipeline/mutator/BorderListMutator.java | 6 +-- .../biome/pipeline/mutator/BorderMutator.java | 4 +- .../pipeline/mutator/ReplaceListMutator.java | 6 +-- .../pipeline/mutator/ReplaceMutator.java | 4 +- .../biome/pipeline/mutator/SmoothMutator.java | 4 +- .../biome/pipeline/source/RandomSource.java | 4 +- .../biome/pipeline/stages/ExpanderStage.java | 4 +- .../biome/pipeline/stages/MutatorStage.java | 4 +- .../biome/single/SingleBiomeProvider.java | 2 +- .../generators/NoiseChunkGenerator3D.java | 19 ++++---- .../interpolation/ChunkInterpolator2D.java | 6 ++- .../interpolation/ChunkInterpolator3D.java | 6 ++- .../interpolation/ElevationInterpolator.java | 6 ++- .../generation/math/samplers/Sampler3D.java | 2 +- .../biome/command/biome/AsyncBiomeFinder.java | 2 +- .../biome/command/biome/BiomeCommand.java | 2 +- .../terra/addons/carver/CarverCache.java | 2 +- .../distributors/NoiseDistributor.java | 4 +- .../addons/flora/flora/gen/TerraFlora.java | 2 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 21 ++++----- .../config/templates/DomainWarpTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 4 +- .../templates/noise/GaborNoiseTemplate.java | 2 +- .../addons/noise/normalizer/Normalizer.java | 14 +----- .../defined/UserDefinedFunction.java | 6 +++ .../noise/paralithic/noise/NoiseFunction.java | 7 --- .../paralithic/noise/NoiseFunction2.java | 39 ++++----------- .../paralithic/noise/NoiseFunction3.java | 13 +++-- .../noise/paralithic/noise/SeedContext.java | 15 ++++++ .../noise/samplers/DomainWarpedSampler.java | 32 ++++--------- .../noise/samplers/ExpressionSampler.java | 19 ++------ .../addons/noise/samplers/ImageSampler.java | 16 ++----- .../addons/noise/samplers/KernelSampler.java | 18 ++----- .../noise/samplers/noise/CellularSampler.java | 15 +++--- .../noise/samplers/noise/ConstantSampler.java | 5 +- .../samplers/noise/ExpressionFunction.java | 10 ++-- .../samplers/noise/GaborNoiseSampler.java | 13 +++-- .../noise/samplers/noise/NoiseFunction.java | 28 ++--------- .../noise/fractal/BrownianMotionSampler.java | 6 +-- .../noise/fractal/FractalNoiseFunction.java | 3 +- .../noise/fractal/PingPongSampler.java | 6 +-- .../noise/fractal/RidgedFractalSampler.java | 6 +-- .../noise/random/GaussianNoiseSampler.java | 9 ++-- .../noise/random/WhiteNoiseSampler.java | 15 +++--- .../noise/simplex/OpenSimplex2SSampler.java | 10 ++-- .../noise/simplex/OpenSimplex2Sampler.java | 10 ++-- .../samplers/noise/simplex/PerlinSampler.java | 10 ++-- .../noise/simplex/SimplexSampler.java | 10 ++-- .../noise/simplex/SimplexStyleSampler.java | 4 -- .../noise/value/ValueCubicSampler.java | 10 ++-- .../samplers/noise/value/ValueSampler.java | 8 ++-- .../samplers/noise/value/ValueStyleNoise.java | 3 -- .../dfsek/terra/addons/ore/OrePopulator.java | 2 +- .../addons/palette/palette/NoisePalette.java | 4 +- .../addons/palette/palette/PaletteImpl.java | 10 ++-- .../addons/structure/StructurePopulator.java | 2 +- .../feature/FeatureGenerationStage.java | 5 +- .../flora/FloraGenerationStage.java | 3 +- .../addons/generation/flora/FloraLayer.java | 2 +- .../addons/generation/tree/TreeLayer.java | 2 +- .../addons/generation/tree/TreePopulator.java | 3 +- .../script/functions/BiomeFunction.java | 2 +- common/api/build.gradle.kts | 2 +- .../dfsek/terra/api/noise/NoiseSampler.java | 40 ++++------------ .../api/structure/feature/Distributor.java | 6 +-- .../collection/ProbabilityCollection.java | 12 ++--- .../world/biome/generation/BiomeProvider.java | 15 ++---- .../generation/pipeline/BiomeSource.java | 2 +- .../terra/api/world/generator/Palette.java | 2 +- .../fabric/generation/TerraBiomeSource.java | 2 +- 79 files changed, 299 insertions(+), 382 deletions(-) delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index ea715500d..1e2345580 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -29,7 +29,7 @@ public class ImageBiomeProvider implements BiomeProvider, SeededBuilder holderCache; + private final LoadingCache holderCache; private final BiomePipelineImpl pipeline; private final int resolution; private final NoiseSampler mutator; private final double noiseAmp; - private final int seed; public StandardBiomeProvider(BiomePipelineImpl pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp, int seed) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; - this.seed = seed; holderCache = CacheBuilder.newBuilder() .maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache()) .build( - new CacheLoader() { + new CacheLoader() { @Override - public BiomeHolder load(@NotNull Vector2 key) { - return pipeline.getBiomes(key.getBlockX(), key.getBlockZ()); + public BiomeHolder load(@NotNull SeededVector key) { + return pipeline.getBiomes(key.x, key.z, key.seed); } } ); @@ -39,9 +37,9 @@ public class StandardBiomeProvider implements BiomeProvider { } @Override - public TerraBiome getBiome(int x, int z) { - x += mutator.getNoiseSeeded(seed, x, z) * noiseAmp; - z += mutator.getNoiseSeeded(1 + seed, x, z) * noiseAmp; + public TerraBiome getBiome(int x, int z, long seed) { + x += mutator.getNoiseSeeded(seed + 1, x, z) * noiseAmp; + z += mutator.getNoiseSeeded(seed + 2, x, z) * noiseAmp; x = FastMath.floorToInt(FastMath.floorDiv(x, resolution)); @@ -50,6 +48,35 @@ public class StandardBiomeProvider implements BiomeProvider { int fdX = FastMath.floorDiv(x, pipeline.getSize()); int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.getUnchecked(new Vector2(fdX, fdZ)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); + return holderCache.getUnchecked(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); + } + + private static final class SeededVector { + private final int x; + private final int z; + private final long seed; + + private SeededVector(int x, int z, long seed) { + this.x = x; + this.z = z; + this.seed = seed; + } + + @Override + public int hashCode() { + int result = 0; + result = 31 * result + ((int) (seed ^ (seed >>> 32))); + result = 31 * result + x; + result = 31 * result + z; + return result; + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof SeededVector)) return false; + SeededVector that = (SeededVector) obj; + + return this.seed == that.seed && this.x == that.x && this.z == that.z; + } } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java index 3a00706ab..39bc22f73 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java @@ -3,5 +3,5 @@ package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeExpander { - TerraBiome getBetween(double x, double z, TerraBiome... others); + TerraBiome getBetween(double x, double z, long seed, TerraBiome... others); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java index 8c9d9711a..1757176a1 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -4,11 +4,11 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public interface BiomeHolder { - BiomeHolder expand(BiomeExpander expander); + BiomeHolder expand(BiomeExpander expander, long seed); - void mutate(BiomeMutator mutator); + void mutate(BiomeMutator mutator, long seed); - void fill(BiomeSource source); + void fill(BiomeSource source, long seed); TerraBiome getBiome(int x, int z); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java index abb8d2258..547409b5a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeMutator { - TerraBiome mutate(ViewPoint viewPoint, double x, double z); + TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed); class ViewPoint { private final BiomeHolder biomes; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java index 64d069c11..dbf9f2722 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -3,6 +3,6 @@ package com.dfsek.terra.addons.biome.pipeline.api; public interface Stage { boolean isExpansion(); - BiomeHolder apply(BiomeHolder in); + BiomeHolder apply(BiomeHolder in, long seed); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java index fa9532737..894d2a86a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -13,7 +13,7 @@ public class FractalExpander implements BiomeExpander { } @Override - public TerraBiome getBetween(double x, double z, TerraBiome... others) { - return others[MathUtil.normalizeIndex(sampler.getNoise(x, z), others.length)]; + public TerraBiome getBetween(double x, double z, long seed, TerraBiome... others) { + return others[MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), others.length)]; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java index b99c2e841..53273973e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -23,7 +23,7 @@ public class BorderListMutator implements BiomeMutator { } @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z) { + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome origin = viewPoint.getBiome(0, 0); if(origin.getTags().contains(defaultReplace)) { for(int xi = -1; xi <= 1; xi++) { @@ -33,10 +33,10 @@ public class BorderListMutator implements BiomeMutator { if(current == null) continue; if(current.getTags().contains(border)) { if(replace.containsKey(origin)) { - TerraBiome biome = replace.get(origin).get(noiseSampler, x, z); + TerraBiome biome = replace.get(origin).get(noiseSampler, x, z, seed); return biome == null ? origin : biome; } - TerraBiome biome = replaceDefault.get(noiseSampler, x, z); + TerraBiome biome = replaceDefault.get(noiseSampler, x, z, seed); return biome == null ? origin : biome; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java index e09b0e17b..dfd54aa9c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -19,7 +19,7 @@ public class BorderMutator implements BiomeMutator { } @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z) { + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome origin = viewPoint.getBiome(0, 0); if(origin.getTags().contains(replaceTag)) { for(int xi = -1; xi <= 1; xi++) { @@ -28,7 +28,7 @@ public class BorderMutator implements BiomeMutator { TerraBiome current = viewPoint.getBiome(xi, zi); if(current == null) continue; if(current.getTags().contains(border)) { - TerraBiome biome = replace.get(noiseSampler, x, z); + TerraBiome biome = replace.get(noiseSampler, x, z, seed); return biome == null ? origin : biome; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java index 029a9b668..8bdb314b8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -21,14 +21,14 @@ public class ReplaceListMutator implements BiomeMutator { } @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z) { + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome center = viewPoint.getBiome(0, 0); if(replace.containsKey(center)) { - TerraBiome biome = replace.get(center).get(sampler, x, z); + TerraBiome biome = replace.get(center).get(sampler, x, z, seed); return biome == null ? viewPoint.getBiome(0, 0) : biome; } if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { - TerraBiome biome = replaceDefault.get(sampler, x, z); + TerraBiome biome = replaceDefault.get(sampler, x, z, seed); return biome == null ? viewPoint.getBiome(0, 0) : biome; } return center; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java index 59899c322..ec1c7437c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -17,9 +17,9 @@ public class ReplaceMutator implements BiomeMutator { } @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z) { + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { - TerraBiome biome = replace.get(sampler, x, z); + TerraBiome biome = replace.get(sampler, x, z, seed); return biome == null ? viewPoint.getBiome(0, 0) : biome; } return viewPoint.getBiome(0, 0); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java index a62966a67..ac1c7c8a0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -16,7 +16,7 @@ public class SmoothMutator implements BiomeMutator { } @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z) { + public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome top = viewPoint.getBiome(1, 0); TerraBiome bottom = viewPoint.getBiome(-1, 0); TerraBiome left = viewPoint.getBiome(0, 1); @@ -27,7 +27,7 @@ public class SmoothMutator implements BiomeMutator { boolean horiz = Objects.equals(left, right) && left != null; if(vert && horiz) { - return MathUtil.normalizeIndex(sampler.getNoise(x, z), 2) == 0 ? left : top; + return MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), 2) == 0 ? left : top; } if(vert) return top; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java index 1c414ec11..41896d03f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java @@ -15,7 +15,7 @@ public class RandomSource implements BiomeSource { } @Override - public TerraBiome getBiome(double x, double z) { - return biomes.get(sampler, x, z); + public TerraBiome getBiome(double x, double z, long seed) { + return biomes.get(sampler, x, z, seed); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java index d73726634..839febab5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java @@ -17,8 +17,8 @@ public class ExpanderStage implements Stage { } @Override - public BiomeHolder apply(BiomeHolder in) { - return in.expand(expander); + public BiomeHolder apply(BiomeHolder in, long seed) { + return in.expand(expander, seed); } public enum Type { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java index fc6a18003..4f5f6bf6e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -17,8 +17,8 @@ public class MutatorStage implements Stage { } @Override - public BiomeHolder apply(BiomeHolder in) { - in.mutate(mutator); + public BiomeHolder apply(BiomeHolder in, long seed) { + in.mutate(mutator, seed); return in; } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 47ba7c052..0b0a42d84 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -12,7 +12,7 @@ public class SingleBiomeProvider implements BiomeProvider, SeededBuilder 0) { justSet = true; - data = PaletteUtil.getPalette(x, y, z, generator, sampler, paletteInfo).get(paletteLevel, cx, y, cz); + data = PaletteUtil.getPalette(x, y, z, generator, sampler, paletteInfo).get(paletteLevel, cx, y, cz, seed); chunk.setBlock(x, y, z, data); paletteLevel++; } else if(y <= sea) { - chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig)); + chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig, seed)); justSet = false; paletteLevel = 0; @@ -167,7 +170,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { public BlockState getBlock(World world, int x, int y, int z) { TerraWorld terraWorld = main.getWorld(world); BiomeProvider provider = terraWorld.getBiomeProvider(); - TerraBiome biome = provider.getBiome(x, z); + TerraBiome biome = provider.getBiome(x, z, world.getSeed()); Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); @@ -181,9 +184,9 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { if(sampler.sample(fdX, yi, fdZ) > 0) level++; else level = 0; } - return palette.get(level, x, y, z); + return palette.get(level, x, y, z, world.getSeed()); } else if(y <= paletteInfo.getSeaLevel()) { - return paletteInfo.getOcean().get(paletteInfo.getSeaLevel() - y, x, y, z); + return paletteInfo.getOcean().get(paletteInfo.getSeaLevel() - y, x, y, z, world.getSeed()); } else return air; } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java index 96ea6be8d..72c83a804 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java @@ -32,11 +32,13 @@ public class ChunkInterpolator2D implements ChunkInterpolator { int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; + long seed = w.getSeed(); + double[][] noiseStorage = new double[5][5]; for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2)).getGenerator(w); + Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); Map genMap = new HashMap<>(); int step = generator.getBlendStep(); @@ -44,7 +46,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step)).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index 0af1ab52e..4841398c8 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -45,9 +45,11 @@ public class ChunkInterpolator3D implements ChunkInterpolator { double[][][] noiseStorage = new double[5][5][size + 1]; + long seed = w.getSeed(); + for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2)).getGenerator(w); + Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); Map genMap = new HashMap<>(); int step = generator.getBlendStep(); @@ -55,7 +57,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step)).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java index bebd34b96..53a10f345 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java @@ -11,12 +11,14 @@ public class ElevationInterpolator { int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; + long seed = world.getSeed(); + Generator[][] gens = new Generator[18 + 2 * smooth][18 + 2 * smooth]; // Precompute generators. for(int x = -1 - smooth; x <= 16 + smooth; x++) { for(int z = -1 - smooth; z <= 16 + smooth; z++) { - gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z).getGenerator(world); + gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z, seed).getGenerator(world); } } @@ -27,7 +29,7 @@ public class ElevationInterpolator { for(int xi = -smooth; xi <= smooth; xi++) { for(int zi = -smooth; zi <= smooth; zi++) { Generator gen = gens[x + 1 + smooth + xi][z + 1 + smooth + zi]; - noise += gen.getElevationSampler().getNoise(xOrigin + x, zOrigin + z) * gen.getElevationWeight(); + noise += gen.getElevationSampler().getNoiseSeeded(seed, xOrigin + x, zOrigin + z) * gen.getElevationWeight(); div += gen.getElevationWeight(); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index ec4215f63..d0092503c 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -12,7 +12,7 @@ public class Sampler3D implements Sampler { private final ElevationInterpolator elevationInterpolator; public Sampler3D(int x, int z, BiomeProvider provider, World world, int elevationSmooth) { - this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler().getNoise(coord)); + this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler().getNoiseSeeded(coord, world.getSeed())); this.elevationInterpolator = new ElevationInterpolator(world, x, z, provider, elevationSmooth); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index c6278a50a..c639d772d 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -46,7 +46,7 @@ public class AsyncBiomeFinder implements Runnable { */ public boolean isValid(int x, int z, TerraBiome target) { int res = main.getTerraConfig().getBiomeSearchResolution(); - return getProvider().getBiome(x * res, z * res).equals(target); + return getProvider().getBiome(x * res, z * res, world.getSeed()).equals(target); } public Vector3 finalizeVector(Vector3 orig) { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index e4bbd74b5..42f5b9db3 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -38,7 +38,7 @@ public class BiomeCommand implements CommandTemplate { Player player = (Player) sender; BiomeProvider provider = main.getWorld(player.world()).getBiomeProvider(); - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position()); + UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position(), player.world().getSeed()); sender.sendMessage("You are standing in " + biome.getID()); } } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 498d88f6f..496a2861d 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -39,7 +39,7 @@ public class CarverCache { List points = new ArrayList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); - TerraBiome biome = provider.getBiome(carving.getRunning()); + TerraBiome biome = provider.getBiome(carving.getRunning(), w.getSeed()); /* if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop if we enter a biome this carver is not present in return Collections.emptyList(); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java index 00b4ad8fb..b97657e4d 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java @@ -11,7 +11,7 @@ public class NoiseDistributor implements Distributor { } @Override - public boolean matches(int x, int z) { - return sampler.getNoise(x, z) > 0; + public boolean matches(int x, int z, long seed) { + return sampler.getNoiseSeeded(seed, x, z) > 0; } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java index b7eef8658..6563f09ef 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java @@ -116,7 +116,7 @@ public class TerraFlora implements Flora { for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor int lvl = (FastMath.abs(i)); - BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), location.getZ()).clone(); + BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), location.getZ(), world.getSeed()).clone(); if(doRotation) { Direction oneFace = new ArrayList<>(faces).get(new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 0f66e6c37..d09305f99 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -16,8 +16,6 @@ import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractal import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate; -import com.dfsek.terra.addons.noise.samplers.ImageSampler; -import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2SSampler; @@ -64,10 +62,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) - .applyLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) - .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) - .applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object)) - .applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object)); + .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new); noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); @@ -81,20 +76,20 @@ public class NoiseAddon extends TerraAddon implements EventListener { noiseRegistry.register("PINGPONG", PingPongTemplate::new); noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(seed3 -> new OpenSimplex2Sampler())); + noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(seed3 -> new OpenSimplex2SSampler())); + noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(seed2 -> new PerlinSampler())); + noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(seed2 -> new SimplexSampler())); noiseRegistry.register("GABOR", GaborNoiseTemplate::new); noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(seed1 -> new ValueCubicSampler())); noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(seed -> new WhiteNoiseSampler())); + noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(seed -> new GaussianNoiseSampler())); noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 36a6bce86..e484256b3 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -24,6 +24,6 @@ public class DomainWarpTemplate extends SamplerTemplate { @Override public NoiseSampler build(long seed) { - return new DomainWarpedSampler(function.build(seed), warp.build(seed), (int) (seed + salt), amplitude); + return new DomainWarpedSampler(function.build(seed), warp.build(seed), amplitude); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index b8c10589a..bcbb3071c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -27,7 +27,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { private SeededNoiseSampler lookup = new SeededNoiseSampler() { @Override public NoiseSampler build(long seed) { - return new OpenSimplex2Sampler((int) seed); + return new OpenSimplex2Sampler(); } @Override @@ -38,7 +38,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Override public NoiseSampler build(long seed) { - CellularSampler sampler = new CellularSampler((int) seed + salt); + CellularSampler sampler = new CellularSampler(); sampler.setNoiseLookup(lookup.build(seed)); sampler.setFrequency(frequency); sampler.setJitterModifier(cellularJitter); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index fc7de1f74..96225821a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -28,7 +28,7 @@ public class GaborNoiseTemplate extends NoiseTemplate { @Override public NoiseSampler build(long seed) { - GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler((int) seed + salt); + GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler(); gaborNoiseSampler.setFrequency(frequency); gaborNoiseSampler.setRotation(rotation); gaborNoiseSampler.setIsotropic(isotropic); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java index a4dce32c0..08cc87eda 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java @@ -12,22 +12,12 @@ public abstract class Normalizer implements NoiseSampler { public abstract double normalize(double in); @Override - public double getNoise(double x, double y) { - return normalize(sampler.getNoise(x, y)); - } - - @Override - public double getNoise(double x, double y, double z) { - return normalize(sampler.getNoise(x, y, z)); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { + public double getNoiseSeeded(long seed, double x, double y) { return normalize(sampler.getNoiseSeeded(seed, x, y)); } @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { + public double getNoiseSeeded(long seed, double x, double y, double z) { return normalize(sampler.getNoiseSeeded(seed, x, y, z)); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index 33d93112b..d7d99aeb5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -4,6 +4,7 @@ import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.paralithic.functions.dynamic.Context; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; @@ -31,6 +32,11 @@ public class UserDefinedFunction implements DynamicFunction { return expression.evaluate(args); } + @Override + public double eval(Context context, double... args) { + return expression.evaluate(context, args); + } + @Override public boolean isStateless() { return true; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java deleted file mode 100644 index 20c2aa909..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.addons.noise.paralithic.noise; - - -import com.dfsek.paralithic.functions.dynamic.DynamicFunction; - -public interface NoiseFunction extends DynamicFunction { -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java index 4fe62fb7e..f12c1576e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java @@ -1,12 +1,13 @@ package com.dfsek.terra.addons.noise.paralithic.noise; +import com.dfsek.paralithic.functions.dynamic.Context; +import com.dfsek.paralithic.functions.dynamic.DynamicFunction; import com.dfsek.terra.addons.noise.util.HashMapDoubleDouble; import com.dfsek.terra.api.noise.NoiseSampler; -public class NoiseFunction2 implements NoiseFunction { +public class NoiseFunction2 implements DynamicFunction { private final NoiseSampler gen; - private final Cache cache = new Cache(); public NoiseFunction2(NoiseSampler gen) { this.gen = gen; @@ -19,36 +20,16 @@ public class NoiseFunction2 implements NoiseFunction { @Override public double eval(double... args) { - return cache.get(gen, args[0], args[1]); + throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); + } + + @Override + public double eval(Context context, double... args) { + return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1]); } @Override public boolean isStateless() { - return true; - } - - private static class Cache extends HashMapDoubleDouble { - private static final long serialVersionUID = 8915092734723467010L; - private static final int cacheSize = 384; - - public Cache() { - super(cacheSize); - } - - public double get(NoiseSampler noise, double x, double z) { - double xx = x >= 0 ? x * 2 : x * -2 - 1; - double zz = z >= 0 ? z * 2 : z * -2 - 1; - double key = (xx >= zz) ? (xx * xx + xx + zz) : (zz * zz + xx); - double value = this.get(key); - if(this.size() > cacheSize) { - this.clear(); - } - return (value == 4.9E-324D ? addAndReturn(noise.getNoise(x, z), key) : value); - } - - private synchronized double addAndReturn(double value, double key) { - this.put(key, value); - return value; - } + return false; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java index 67e7400dd..827eb6596 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.noise.paralithic.noise; +import com.dfsek.paralithic.functions.dynamic.Context; +import com.dfsek.paralithic.functions.dynamic.DynamicFunction; import com.dfsek.terra.api.noise.NoiseSampler; -public class NoiseFunction3 implements NoiseFunction { +public class NoiseFunction3 implements DynamicFunction { private final NoiseSampler gen; public NoiseFunction3(NoiseSampler gen) { @@ -16,11 +18,16 @@ public class NoiseFunction3 implements NoiseFunction { @Override public double eval(double... args) { - return gen.getNoise(args[0], args[1], args[2]); + throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); + } + + @Override + public double eval(Context context, double... args) { + return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1], args[2]); } @Override public boolean isStateless() { - return true; + return false; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java new file mode 100644 index 000000000..bc490d1c4 --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.noise.paralithic.noise; + +import com.dfsek.paralithic.functions.dynamic.Context; + +public class SeedContext implements Context { + private final long seed; + + public SeedContext(long seed) { + this.seed = seed; + } + + public long getSeed() { + return seed; + } +} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java index bb81468a6..eca97002c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java @@ -5,40 +5,28 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class DomainWarpedSampler implements NoiseSampler { private final NoiseSampler function; private final NoiseSampler warp; - private final int seed; private final double amplitude; - public DomainWarpedSampler(NoiseSampler function, NoiseSampler warp, int seed, double amplitude) { + public DomainWarpedSampler(NoiseSampler function, NoiseSampler warp, double amplitude) { this.function = function; this.warp = warp; - this.seed = seed; this.amplitude = amplitude; } @Override - public double getNoise(double x, double y) { - return getNoiseSeeded(seed, x, y); - } - - @Override - public double getNoise(double x, double y, double z) { - return getNoiseSeeded(seed, x, y, z); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { - return function.getNoise( - x + warp.getNoiseSeeded(seed, x, y) * amplitude, - y + warp.getNoiseSeeded(seed + 1, x, y) * amplitude + public double getNoiseSeeded(long seed, double x, double y) { + return function.getNoiseSeeded(seed++, + x + warp.getNoiseSeeded(seed++, x, y) * amplitude, + y + warp.getNoiseSeeded(seed, x, y) * amplitude ); } @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { - return function.getNoise( - x + warp.getNoiseSeeded(seed, x, y, z) * amplitude, - y + warp.getNoiseSeeded(seed + 1, x, y, z) * amplitude, - z + warp.getNoiseSeeded(seed + 2, x, y, z) * amplitude + public double getNoiseSeeded(long seed, double x, double y, double z) { + return function.getNoiseSeeded(seed++, + x + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, + y + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, + z + warp.getNoiseSeeded(seed, x, y, z) * amplitude ); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java index bed9d4c7b..58817c0ab 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java @@ -8,6 +8,7 @@ import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; +import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -46,22 +47,12 @@ public class ExpressionSampler implements NoiseSampler { } @Override - public double getNoise(double x, double y) { - return getNoise(x, 0, y); + public double getNoiseSeeded(long seed, double x, double y) { + return getNoiseSeeded(seed, x, y); } @Override - public double getNoise(double x, double y, double z) { - return expression.evaluate(x, y, z); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { - return getNoise(x, y); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { - return getNoise(x, y, z); + public double getNoiseSeeded(long seed, double x, double y, double z) { + return expression.evaluate(new SeedContext(seed), x, y, z); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java index 65ca10e92..d48dc2c26 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java @@ -18,23 +18,13 @@ public class ImageSampler implements NoiseSampler { } @Override - public double getNoise(double x, double y) { + public double getNoiseSeeded(long seed, double x, double y) { return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * 2; } @Override - public double getNoise(double x, double y, double z) { - return getNoise(x, y); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { - return getNoise(x, y); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { - return getNoise(x, y, z); + public double getNoiseSeeded(long seed, double x, double y, double z) { + return getNoiseSeeded(seed, x, y); } public enum Channel { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java index 897d193b1..b30e16510 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java @@ -13,24 +13,14 @@ public class KernelSampler implements NoiseSampler { } @Override - public double getNoise(double x, double y) { - return getNoiseSeeded(0, x, y); - } - - @Override - public double getNoise(double x, double y, double z) { - return getNoiseSeeded(0, x, y, z); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { + public double getNoiseSeeded(long seed, double x, double y) { x *= frequency; y *= frequency; double accumulator = 0; for(int kx = 0; kx < kernel.length; kx++) { for(int ky = 0; ky < kernel[kx].length; ky++) { - accumulator += in.getNoise(x + kx, y + ky) * kernel[kx][ky]; + accumulator += in.getNoiseSeeded(seed, x + kx, y + ky) * kernel[kx][ky]; } } @@ -38,7 +28,7 @@ public class KernelSampler implements NoiseSampler { } @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { + public double getNoiseSeeded(long seed, double x, double y, double z) { x *= frequency; y *= frequency; z *= frequency; @@ -46,7 +36,7 @@ public class KernelSampler implements NoiseSampler { for(int kx = 0; kx < kernel.length; kx++) { for(int ky = 0; ky < kernel[kx].length; ky++) { - accumulator += in.getNoise(x + kx, y, z + ky) * kernel[kx][ky]; + accumulator += in.getNoiseSeeded(seed, x + kx, y, z + ky) * kernel[kx][ky]; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 509440db3..83f972d7b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -192,9 +192,8 @@ public class CellularSampler extends NoiseFunction { private NoiseSampler noiseLookup; - public CellularSampler(int seed) { - super(seed); - noiseLookup = new OpenSimplex2Sampler(seed); + public CellularSampler() { + noiseLookup = new OpenSimplex2Sampler(); } public void setDistanceFunction(DistanceFunction distanceFunction) { @@ -214,7 +213,8 @@ public class CellularSampler extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; int xr = fastRound(x); int yr = fastRound(y); @@ -349,7 +349,7 @@ public class CellularSampler extends NoiseFunction { case Distance2Div: return distance0 / distance1 - 1; case NoiseLookup: - return noiseLookup.getNoise(center.getX(), center.getZ()); + return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ()); case Distance3: return distance2 - 1; case Distance3Add: @@ -366,7 +366,8 @@ public class CellularSampler extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; int xr = fastRound(x); int yr = fastRound(y); int zr = fastRound(z); @@ -523,7 +524,7 @@ public class CellularSampler extends NoiseFunction { case Distance2Div: return distance0 / distance1 - 1; case NoiseLookup: - return noiseLookup.getNoise(center.getX(), center.getY(), center.getZ()); + return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ()); case Distance3: return distance2 - 1; case Distance3Add: diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java index 74110466f..10833d194 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java @@ -7,17 +7,16 @@ public class ConstantSampler extends NoiseFunction { private final double constant; public ConstantSampler(double constant) { - super(0); this.constant = constant; } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { return constant; } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { return constant; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java index e736a8e91..469deec60 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java @@ -5,6 +5,7 @@ import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; +import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; import java.util.Map; @@ -15,7 +16,6 @@ public class ExpressionFunction extends NoiseFunction { private final Expression expression; public ExpressionFunction(Map functions, String eq, Map vars) throws ParseException { - super(0); Parser p = new Parser(); Scope scope = new Scope(); @@ -32,12 +32,12 @@ public class ExpressionFunction extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y) { - return expression.evaluate(x, 0, y); + public double getNoiseRaw(long seed, double x, double y) { + return expression.evaluate(new SeedContext(seed), x, 0, y); } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { - return expression.evaluate(x, y, z); + public double getNoiseRaw(long seed, double x, double y, double z) { + return expression.evaluate(new SeedContext(seed), x, y, z); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java index 4b779f768..00f1bde3d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java @@ -18,9 +18,8 @@ public class GaborNoiseSampler extends NoiseFunction { private double g = FastMath.exp(-impulsesPerCell); - public GaborNoiseSampler(int seed) { - super(seed); - rand = new WhiteNoiseSampler(seed); + public GaborNoiseSampler() { + rand = new WhiteNoiseSampler(); } public void setIsotropic(boolean isotropic) { @@ -57,16 +56,16 @@ public class GaborNoiseSampler extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double z) { + public double getNoiseRaw(long seed, double x, double z) { return gaborNoise(seed, x, z); } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { return gaborNoise(seed, x, z); } - private double gaborNoise(int seed, double x, double y) { + private double gaborNoise(long seed, double x, double y) { x /= kernelRadius; y /= kernelRadius; int xi = fastFloor(x); @@ -82,7 +81,7 @@ public class GaborNoiseSampler extends NoiseFunction { return noise; } - private double calculateCell(int seed, int xi, int yi, double x, double y) { + private double calculateCell(long seed, int xi, int yi, double x, double y) { long mashedSeed = murmur64(31L * xi + yi) + seed; double gaussianSource = (rand.getNoiseRaw(mashedSeed++) + 1) / 2; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index cd7acb646..dec509e4a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -20,11 +20,6 @@ public abstract class NoiseFunction implements NoiseSampler { } protected double frequency = 0.02d; - protected int seed; - - public NoiseFunction(int seed) { - this.seed = seed; - } protected static int fastFloor(double f) { return f >= 0 ? (int) f : (int) f - 1; @@ -114,11 +109,6 @@ public abstract class NoiseFunction implements NoiseSampler { return sinLookup((int) ((a + Math.PI / 2) * precision + 0.5f)); } - - public void setSeed(int seed) { - this.seed = seed; - } - public double getFrequency() { return frequency; } @@ -128,26 +118,16 @@ public abstract class NoiseFunction implements NoiseSampler { } @Override - public double getNoise(double x, double y) { - return getNoiseSeeded(seed, x, y); - } - - @Override - public double getNoise(double x, double y, double z) { - return getNoiseSeeded(seed, x, y, z); - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { + public double getNoiseSeeded(long seed, double x, double y) { return getNoiseRaw(seed, x * frequency, y * frequency); } @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { + public double getNoiseSeeded(long seed, double x, double y, double z) { return getNoiseRaw(seed, x * frequency, y * frequency, z * frequency); } - public abstract double getNoiseRaw(int seed, double x, double y); + public abstract double getNoiseRaw(long seed, double x, double y); - public abstract double getNoiseRaw(int seed, double x, double y, double z); + public abstract double getNoiseRaw(long seed, double x, double y, double z); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java index e95f89074..9d61b550a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -4,11 +4,11 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class BrownianMotionSampler extends FractalNoiseFunction { public BrownianMotionSampler(int seed, NoiseSampler input) { - super(seed, input); + super(input); } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; @@ -26,7 +26,7 @@ public class BrownianMotionSampler extends FractalNoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java index b558ef8be..32b110610 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -11,8 +11,7 @@ public abstract class FractalNoiseFunction extends NoiseFunction { protected double lacunarity = 2.0d; protected double weightedStrength = 0.0d; - public FractalNoiseFunction(int seed, NoiseSampler input) { - super(seed); + public FractalNoiseFunction(NoiseSampler input) { this.input = input; frequency = 1; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java index 1a1ef243a..73bd77460 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java @@ -6,7 +6,7 @@ public class PingPongSampler extends FractalNoiseFunction { private double pingPongStrength = 2.0; public PingPongSampler(int seed, NoiseSampler input) { - super(seed, input); + super(input); } @@ -20,7 +20,7 @@ public class PingPongSampler extends FractalNoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; @@ -38,7 +38,7 @@ public class PingPongSampler extends FractalNoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java index d11af4d06..ac88e41bf 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -5,11 +5,11 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class RidgedFractalSampler extends FractalNoiseFunction { public RidgedFractalSampler(int seed, NoiseSampler input) { - super(seed, input); + super(input); } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; @@ -27,7 +27,7 @@ public class RidgedFractalSampler extends FractalNoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java index 1dc5e95d5..154015af2 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -8,13 +8,12 @@ import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; public class GaussianNoiseSampler extends NoiseFunction { private final WhiteNoiseSampler whiteNoiseSampler; // Back with a white noise sampler. - public GaussianNoiseSampler(int seed) { - super(seed); - whiteNoiseSampler = new WhiteNoiseSampler(seed); + public GaussianNoiseSampler() { + whiteNoiseSampler = new WhiteNoiseSampler(); } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { double v1, v2, s; do { v1 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y); @@ -26,7 +25,7 @@ public class GaussianNoiseSampler extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { double v1, v2, s; do { v1 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y, z); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java index 335287137..8486ec12f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -8,8 +8,7 @@ import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; public class WhiteNoiseSampler extends NoiseFunction { private static final long POSITIVE_POW1 = 0b01111111111L << 52; // Bits that when applied to the exponent/sign section of a double, produce a positive number with a power of 1. - public WhiteNoiseSampler(int seed) { - super(seed); + public WhiteNoiseSampler() { } public double getNoiseRaw(long seed) { @@ -17,33 +16,33 @@ public class WhiteNoiseSampler extends NoiseFunction { } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long seed, double x, double y) { return (getNoiseUnmapped(seed, x, y) - 1.5) * 2; } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long seed, double x, double y, double z) { return (getNoiseUnmapped(seed, x, y, z) - 1.5) * 2; } - public double getNoiseUnmapped(int seed, double x, double y, double z) { + public double getNoiseUnmapped(long seed, double x, double y, double z) { long base = ((randomBits(seed, x, y, z)) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent return Double.longBitsToDouble(base); } - public double getNoiseUnmapped(int seed, double x, double y) { + public double getNoiseUnmapped(long seed, double x, double y) { long base = (randomBits(seed, x, y) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent return Double.longBitsToDouble(base); } - public long randomBits(int seed, double x, double y, double z) { + public long randomBits(long seed, double x, double y, double z) { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = (((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed) + Double.doubleToRawLongBits(z); return murmur64(hash); } - public long randomBits(int seed, double x, double y) { + public long randomBits(long seed, double x, double y) { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = ((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index cb8c91d69..eb9a152f4 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -4,13 +4,10 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. */ public class OpenSimplex2SSampler extends SimplexStyleSampler { - public OpenSimplex2SSampler(int seed) { - super(seed); - } - @Override @SuppressWarnings("NumericOverflow") - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; // 2D OpenSimplex2S case is a modified 2D simplex noise. final double SQRT3 = 1.7320508075688772935274463415059; @@ -117,7 +114,8 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { @Override @SuppressWarnings("NumericOverflow") - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; // 3D OpenSimplex2S case uses two offset rotated cube grids. final double R3 = (2.0 / 3.0); double r = (x + y + z) * R3; // Rotation, not skew diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index 6a8e46089..c4379b212 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -6,12 +6,9 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; public class OpenSimplex2Sampler extends SimplexStyleSampler { private static final double SQRT3 = 1.7320508075688772935274463415059; - public OpenSimplex2Sampler(int seed) { - super(seed); - } - @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; // 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex. final double G2 = (3 - SQRT3) / 6; @@ -71,7 +68,8 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; // 3D OpenSimplex2Sampler case uses two offset rotated cube grids. final double R3 = (2.0 / 3.0); double r = (x + y + z) * R3; // Rotation, not skew diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java index a20dd5c79..044029a39 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java @@ -4,12 +4,9 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; * NoiseSampler implementation to provide Perlin Noise. */ public class PerlinSampler extends SimplexStyleSampler { - public PerlinSampler(int seed) { - super(seed); - } - @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); @@ -33,7 +30,8 @@ public class PerlinSampler extends SimplexStyleSampler { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); int z0 = fastFloor(z); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java index 9190c981a..045441534 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java @@ -23,10 +23,6 @@ public class SimplexSampler extends SimplexStyleSampler { private static final int Z_PRIME = 6971; - public SimplexSampler(int seed) { - super(seed); - } - private static double gradCoord3D(int seed, int x, int y, int z, double xd, double yd, double zd) { int hash = seed; hash ^= X_PRIME * x; @@ -55,7 +51,8 @@ public class SimplexSampler extends SimplexStyleSampler { } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; double t = (x + y) * F2; int i = fastFloor(x + t); int j = fastFloor(y + t); @@ -111,7 +108,8 @@ public class SimplexSampler extends SimplexStyleSampler { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; double t = (x + y + z) * F3; int i = fastFloor(x + t); int j = fastFloor(y + t); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java index 39c0b6c7c..f6183e1ec 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -71,10 +71,6 @@ public abstract class SimplexStyleSampler extends NoiseFunction { 1, 1, 0, 0, 0, -1, 1, 0, -1, 1, 0, 0, 0, -1, -1, 0 }; - public SimplexStyleSampler(int seed) { - super(seed); - } - protected static double gradCoord(int seed, int xPrimed, int yPrimed, double xd, double yd) { int hash = hash(seed, xPrimed, yPrimed); hash ^= hash >> 15; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java index bb61eb93b..3f19dc41e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java @@ -1,12 +1,9 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueCubicSampler extends ValueStyleNoise { - public ValueCubicSampler(int seed) { - super(seed); - } - @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; int x1 = fastFloor(x); int y1 = fastFloor(y); @@ -35,7 +32,8 @@ public class ValueCubicSampler extends ValueStyleNoise { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; int x1 = fastFloor(x); int y1 = fastFloor(y); int z1 = fastFloor(z); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java index 1546177f6..c3edfcdd8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java @@ -2,11 +2,12 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; public class ValueSampler extends ValueStyleNoise { public ValueSampler(int seed) { - super(seed); + super(); } @Override - public double getNoiseRaw(int seed, double x, double y) { + public double getNoiseRaw(long sl, double x, double y) { + int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); @@ -25,7 +26,8 @@ public class ValueSampler extends ValueStyleNoise { } @Override - public double getNoiseRaw(int seed, double x, double y, double z) { + public double getNoiseRaw(long sl, double x, double y, double z) { + int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); int z0 = fastFloor(z); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java index 32483df29..8ed8f263c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java @@ -3,9 +3,6 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; public abstract class ValueStyleNoise extends NoiseFunction { - public ValueStyleNoise(int seed) { - super(seed); - } protected static double valCoord(int seed, int xPrimed, int yPrimed) { int hash = hash(seed, xPrimed, yPrimed); diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index d614e656c..73489249e 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -31,7 +31,7 @@ public class OrePopulator implements TerraGenerationStage { Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); int originX = ((chunk.getX() + cx) << 4); int originZ = ((chunk.getZ() + cz) << 4); - TerraBiome b = tw.getBiomeProvider().getBiome(originX + 8, originZ + 8); + TerraBiome b = tw.getBiomeProvider().getBiome(originX + 8, originZ + 8, world.getSeed()); /* BiomeTemplate config = ((UserDefinedBiome) b).getConfig(); int finalCx = cx; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java index 94922fd6b..f572422d8 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java @@ -15,7 +15,7 @@ public class NoisePalette extends PaletteImpl { } @Override - public BlockState get(int layer, double x, double y, double z) { + public BlockState get(int layer, double x, double y, double z, long seed) { PaletteLayer paletteLayer; if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); else { @@ -24,6 +24,6 @@ public class NoisePalette extends PaletteImpl { else paletteLayer = pl.get(layer); } NoiseSampler paletteSampler = paletteLayer.getSampler(); - return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, is2D); + return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, is2D, seed); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index b034c49f4..4fc059397 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -13,7 +13,7 @@ import java.util.Random; * A class representation of a "slice" of the world. * Used to get a section of blocks, based on the depth at which they are found. */ -public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator.Palette { +public abstract class PaletteImpl implements Palette { private final List pallet = new ArrayList<>(); /** @@ -96,9 +96,9 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator return m; } - public BlockState get(NoiseSampler random, double x, double y, double z, boolean is2D) { - if(col && is2D) return this.collection.get(random, x, z); - else if(col) return this.collection.get(random, x, y, z); + public BlockState get(NoiseSampler random, double x, double y, double z, boolean is2D, long seed) { + if(col && is2D) return this.collection.get(random, x, z, seed); + else if(col) return this.collection.get(random, x, y, z, seed); return m; } @@ -115,7 +115,7 @@ public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator } @Override - public BlockState get(int layer, double x, double y, double z) { + public BlockState get(int layer, double x, double y, double z, long seed) { return item; } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 8f3875e19..c2a126d2d 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -39,7 +39,7 @@ public class StructurePopulator implements TerraGenerationStage, Chunkified { for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); - if(!provider.getBiome(spawn).getContext().get(BiomeStructures.class).getStructures().contains(conf)) { + if(!provider.getBiome(spawn, world.getSeed()).getContext().get(BiomeStructures.class).getStructures().contains(conf)) { continue; } Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index a496854f8..9810afbce 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -25,13 +25,14 @@ public class FeatureGenerationStage implements TerraGenerationStage { try(ProfileFrame ignore = main.getProfiler().profile("feature")) { int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; + long seed = world.getSeed(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { int tx = cx + x; int tz = cz + z; ColumnImpl column = new ColumnImpl(tx, tz, world); - terraWorld.getBiomeProvider().getBiome(tx, tz).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { - if(feature.getDistributor().matches(tx, tz)) { + terraWorld.getBiomeProvider().getBiome(tx, tz, seed).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { + if(feature.getDistributor().matches(tx, tz, seed)) { feature.getLocator() .getSuitableCoordinates(column) .forEach(y -> diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 00a3354b8..7cf03a0b1 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -33,12 +33,13 @@ public class FloraGenerationStage implements TerraGenerationStage { try(ProfileFrame ignore = main.getProfiler().profile("flora")) { if(tw.getConfig().disableFlora()) return; + long seed = world.getSeed(); BiomeProvider provider = tw.getBiomeProvider(); Map> layers = new HashMap<>(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { Vector2 l = new Vector2(x, z); - layers.put(l, provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z).getContext().get(BiomeFlora.class).getLayers()); + layers.put(l, provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed).getContext().get(BiomeFlora.class).getLayers()); } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java index d5609e4c9..7f8c23b30 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java @@ -39,7 +39,7 @@ public class FloraLayer { public void place(Chunk chunk, Vector2 coords) { int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); - Flora item = layer.get(noise, cx + coords.getX(), cz + coords.getZ()); + Flora item = layer.get(noise, cx + coords.getX(), cz + coords.getZ(), chunk.getWorld().getSeed()); item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java index 3f2110f51..5b454d319 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java @@ -40,7 +40,7 @@ public class TreeLayer { } public void place(Chunk chunk, Vector2 coords) { - Tree item = layer.get(noise, coords.getX(), coords.getZ()); + Tree item = layer.get(noise, coords.getX(), coords.getZ(), chunk.getWorld().getSeed()); BlockState current; int cx = (chunk.getX()) << 4; int cz = (chunk.getZ()) << 4; diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java index a014b4d16..6328b3497 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java @@ -35,9 +35,10 @@ public class TreePopulator implements TerraGenerationStage { BiomeProvider provider = tw.getBiomeProvider(); Random random = PopulationUtil.getRandom(chunk); + long seed = world.getSeed(); for(int x = 0; x < 16; x += 2) { for(int z = 0; z < 16; z += 2) { - for(TreeLayer layer : provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z).getContext().get(BiomeTrees.class).getTrees()) { + for(TreeLayer layer : provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed).getContext().get(BiomeTrees.class).getTrees()) { if(layer.getDensity() >= random.nextDouble() * 100) { layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index f1bfa3094..201df7fd0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -40,7 +40,7 @@ public class BiomeFunction implements Function { BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); - return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())))).getID(); + return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 9197579d8..ef64d7c34 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -13,7 +13,7 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"("com.dfsek:Paralithic:0.3.2") + "shadedApi"("com.dfsek:Paralithic:0.4.0") "shadedApi"("com.dfsek.tectonic:common:2.1.1") "shadedApi"("com.dfsek.tectonic:yaml:2.1.1") diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index ad1de8b74..e3fc8a9bc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -8,50 +8,26 @@ public interface NoiseSampler { static NoiseSampler zero() { return new NoiseSampler() { @Override - public double getNoise(double x, double y) { + public double getNoiseSeeded(long seed, double x, double y) { return 0; } @Override - public double getNoise(double x, double y, double z) { - return 0; - } - - @Override - public double getNoiseSeeded(int seed, double x, double y) { - return 0; - } - - @Override - public double getNoiseSeeded(int seed, double x, double y, double z) { + public double getNoiseSeeded(long seed, double x, double y, double z) { return 0; } }; } - /** - * 2D noise at given position using current settings - *

- * Noise output bounded between -1...1 - */ - double getNoise(double x, double y); - - /** - * 3D noise at given position using current settings - *

- * Noise output bounded between -1...1 - */ - double getNoise(double x, double y, double z); - - default double getNoise(Vector3 vector3) { - return getNoise(vector3.getX(), vector3.getY(), vector3.getZ()); + default double getNoiseSeeded(Vector3 vector3, long seed) { + return getNoiseSeeded(seed, vector3.getX(), vector3.getY(), vector3.getZ()); } - default double getNoise(Vector2 vector2) { - return getNoise(vector2.getX(), vector2.getZ()); + default double getNoiseSeeded(Vector2 vector2, long seed) { + return getNoiseSeeded(seed, vector2.getX(), vector2.getZ()); } - double getNoiseSeeded(int seed, double x, double y); + double getNoiseSeeded(long seed, double x, double y); - double getNoiseSeeded(int seed, double x, double y, double z); + double getNoiseSeeded(long seed, double x, double y, double z); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java index be8b9cf11..2d9d33ca1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.structure.feature; public interface Distributor { - boolean matches(int x, int z); + boolean matches(int x, int z, long seed); default Distributor and(Distributor other) { - return (x, z) -> this.matches(x, z) && other.matches(x, z); + return (x, z, seed) -> this.matches(x, z, seed) && other.matches(x, z, seed); } default Distributor or(Distributor other) { - return (x, z) -> this.matches(x, z) || other.matches(x, z); + return (x, z, seed) -> this.matches(x, z, seed) || other.matches(x, z, seed); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java index b82017112..f2b7b1926 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java @@ -38,15 +38,15 @@ public class ProbabilityCollection implements Collection { } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, double x, double y, double z) { + public E get(NoiseSampler n, double x, double y, double z, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.getNoise(x, y, z), array.length)]; + return (E) array[MathUtil.normalizeIndex(n.getNoiseSeeded(seed, x, y, z), array.length)]; } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, double x, double z) { + public E get(NoiseSampler n, double x, double z, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.getNoise(x, z), array.length)]; + return (E) array[MathUtil.normalizeIndex(n.getNoiseSeeded(seed, x, z), array.length)]; } @SuppressWarnings("unchecked") @@ -183,12 +183,12 @@ public class ProbabilityCollection implements Collection { } @Override - public T get(NoiseSampler n, double x, double y, double z) { + public T get(NoiseSampler n, double x, double y, double z, long seed) { return single; } @Override - public T get(NoiseSampler n, double x, double z) { + public T get(NoiseSampler n, double x, double z, long seed) { return single; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index c42557317..807fd7888 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -5,18 +5,13 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeProvider { - TerraBiome getBiome(int x, int z); + TerraBiome getBiome(int x, int z, long seed); - default TerraBiome getBiome(Vector2 vector2) { - return getBiome(vector2.getBlockX(), vector2.getBlockZ()); + default TerraBiome getBiome(Vector2 vector2, long seed) { + return getBiome(vector2.getBlockX(), vector2.getBlockZ(), seed); } - default TerraBiome getBiome(Vector3 vector3) { - return getBiome(vector3.getBlockX(), vector3.getBlockZ()); - } - - @Deprecated - enum Type { - IMAGE, PIPELINE, SINGLE + default TerraBiome getBiome(Vector3 vector3, long seed) { + return getBiome(vector3.getBlockX(), vector3.getBlockZ(), seed); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java index ad8c208d0..6c6cc3629 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java @@ -3,7 +3,7 @@ package com.dfsek.terra.api.world.biome.generation.pipeline; import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeSource { - TerraBiome getBiome(double x, double z); + TerraBiome getBiome(double x, double z, long seed); enum Type { NOISE diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java index ca4f846d7..9d3de225e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -15,7 +15,7 @@ public interface Palette { * @param layer - The layer at which to fetch the material. * @return BlockData - The material fetched. */ - BlockState get(int layer, double x, double y, double z); + BlockState get(int layer, double x, double y, double z, long seed); int getSize(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 3b43d6c96..56c8caf8b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -53,7 +53,7 @@ public class TerraBiomeSource extends BiomeSource { @Override public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) { - TerraBiome biome = grid.getBiome(biomeX << 2, biomeZ << 2); + TerraBiome biome = grid.getBiome(biomeX << 2, biomeZ << 2, seed); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } } From 6f40e7b1f51a6b347f368bd44315985496b1a26b Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:10:49 -0700 Subject: [PATCH 0265/1529] remove SeededNoiseSampler from configs --- .../config/BiomePipelineTemplate.java | 2 +- .../config/BiomeProviderTemplate.java | 3 +- .../pipeline/config/NoiseSourceTemplate.java | 5 +- .../pipeline/config/stage/StageTemplate.java | 3 +- .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListMutatorTemplate.java | 2 +- .../stage/mutator/BorderMutatorTemplate.java | 2 +- .../mutator/ReplaceListMutatorTemplate.java | 2 +- .../stage/mutator/ReplaceMutatorTemplate.java | 2 +- .../stage/mutator/SmoothMutatorTemplate.java | 2 +- .../terra/addons/biome/BiomeTemplate.java | 47 ++++--------------- .../biome/UserDefinedSeededTerraBiome.java | 2 +- .../config/NoiseDistributorTemplate.java | 5 +- .../terra/addons/flora/FloraFactory.java | 2 +- .../terra/addons/flora/FloraTemplate.java | 5 +- .../DimensionApplicableNoiseSampler.java | 22 +++++++++ .../config/templates/DomainWarpTemplate.java | 6 +-- .../config/templates/KernelTemplate.java | 4 +- .../noise/CellularNoiseTemplate.java | 14 +----- .../noise/ExpressionFunctionTemplate.java | 7 +-- .../noise/fractal/BrownianMotionTemplate.java | 2 +- .../noise/fractal/FractalTemplate.java | 3 +- .../noise/fractal/PingPongTemplate.java | 2 +- .../noise/fractal/RidgedFractalTemplate.java | 2 +- .../normalizer/ClampNormalizerTemplate.java | 2 +- .../normalizer/LinearNormalizerTemplate.java | 2 +- .../normalizer/NormalNormalizerTemplate.java | 2 +- .../normalizer/NormalizerTemplate.java | 3 +- .../terra/addons/palette/PaletteFactory.java | 2 +- .../terra/addons/palette/PaletteTemplate.java | 5 +- .../addons/palette/palette/NoisePalette.java | 8 ++-- .../addons/palette/palette/PaletteImpl.java | 14 +----- .../generation/flora/FloraLayerLoader.java | 5 +- .../generation/tree/TreeLayerTemplate.java | 5 +- .../test/java/noise/NoiseConfigTemplate.java | 5 +- 35 files changed, 92 insertions(+), 109 deletions(-) create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 4dcadb2a6..0e1eea992 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -34,6 +34,6 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.build(seed), seed); - return new StandardBiomeProvider(pipeline, main, resolution, blend.build(seed), blendAmp, (int) seed); + return new StandardBiomeProvider(pipeline, main, resolution, blend, blendAmp, (int) seed); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 126347c8e..41883c92c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -13,7 +14,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate biomes; @Override public BiomeSource build(long seed) { - return new RandomSource(biomes.map((biome) -> biome.build(seed), false), noise.build(seed)); + return new RandomSource(biomes.map((biome) -> biome.build(seed), false), noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index d3c71ac8f..065bbf96e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -4,12 +4,13 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") - protected SeededNoiseSampler noise; + protected NoiseSampler noise; @Override public StageSeeded get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index 3222c40f9..38bfa2e81 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -8,6 +8,6 @@ import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; public class ExpanderStageTemplate extends StageTemplate { @Override public Stage build(long seed) { - return new ExpanderStage(new FractalExpander(noise.build(seed))); + return new ExpanderStage(new FractalExpander(noise)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index d17eb0fc0..5c186ca07 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -31,6 +31,6 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.build(seed), replacements.map(replacement -> replacement.build(seed), true))); - return new BorderListMutator(replaceMap, from, defaultReplace, noise.build(seed), defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true)); + return new BorderListMutator(replaceMap, from, defaultReplace, noise, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index cdd143bc2..6b50f632f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -19,6 +19,6 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { @Override public BiomeMutator getMutator(long seed) { - return new BorderMutator(from, replace, noise.build(seed), to.map(biomeBuilder -> biomeBuilder.build(seed), true)); + return new BorderMutator(from, replace, noise, to.map(biomeBuilder -> biomeBuilder.build(seed), true)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index e6418fdbe..6d3cbfb07 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -27,6 +27,6 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.build(seed), biomeBuilders.map(builder -> builder.build(seed), true))); - return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed)); + return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true), noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 984d17d1d..2cb2aecd6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -16,6 +16,6 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { @Override public BiomeMutator getMutator(long seed) { - return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed)); + return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.build(seed), true), noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index b4d266818..d07c74c53 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -6,6 +6,6 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override public BiomeMutator getMutator(long seed) { - return new SmoothMutator(noise.build(seed)); + return new SmoothMutator(noise); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 9933aea2f..a337eca2c 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -11,6 +11,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.Biome; @@ -42,14 +43,14 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("beta.carving.equation") @Default - private SeededNoiseSampler carvingEquation = SeededNoiseSampler.zero(3); + private NoiseSampler carvingEquation = NoiseSampler.zero(); @Value("vanilla") private ProbabilityCollection vanilla; @Value("biome-noise") @Default - private SeededNoiseSampler biomeNoise = SeededNoiseSampler.zero(2); + private NoiseSampler biomeNoise = NoiseSampler.zero(); @Value("blend.distance") @Default @@ -64,7 +65,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl private int blendStep = 4; @Value("noise") - private SeededNoiseSampler noiseEquation; + private NoiseSampler noiseEquation; @Value("ocean.level") @Default @@ -72,7 +73,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("elevation.equation") @Default - private SeededNoiseSampler elevationEquation = SeededNoiseSampler.zero(2); + private NoiseSampler elevationEquation = NoiseSampler.zero(); @Value("elevation.weight") @Default @@ -159,15 +160,15 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return stairPalettes; } - public SeededNoiseSampler getBiomeNoise() { + public NoiseSampler getBiomeNoise() { return biomeNoise; } - public SeededNoiseSampler getElevationEquation() { + public NoiseSampler getElevationEquation() { return elevationEquation; } - public SeededNoiseSampler getCarvingEquation() { + public NoiseSampler getCarvingEquation() { return carvingEquation; } @@ -187,7 +188,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl return vanilla; } - public SeededNoiseSampler getNoiseEquation() { + public NoiseSampler getNoiseEquation() { return noiseEquation; } @@ -206,36 +207,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Override public boolean validate() throws ValidationException { color |= 0xff000000; // Alpha adjustment - Parser tester = new Parser(); - Scope testScope = new Scope(); - - variables.forEach(testScope::create); - - testScope.addInvocationVariable("x"); - testScope.addInvocationVariable("y"); - testScope.addInvocationVariable("z"); - - - //pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions - - try { - noiseEquation.build(0L); - } catch(Exception e) { - throw new ValidationException("Invalid noise sampler: ", e); - } - - try { - carvingEquation.build(0L); - } catch(Exception e) { - throw new ValidationException("Invalid carving sampler: ", e); - } - - try { - elevationEquation.build(0L); - } catch(Exception e) { - throw new ValidationException("Invalid elevation sampler: ", e); - } - return true; } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java index 0707b186f..8bc199740 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java @@ -23,7 +23,7 @@ public class UserDefinedSeededTerraBiome implements SeededTerraBiome { synchronized(biomeMap) { return biomeMap.computeIfAbsent(seed, s -> { - UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().build(seed), template.getElevationEquation().build(seed), template.getCarvingEquation().build(seed), template.getBiomeNoise().build(seed), template.getElevationWeight(), + UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template, context); } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index f4930b78f..c91516c66 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.feature.distributor.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public class NoiseDistributorTemplate implements ObjectTemplate> { @Value("distribution") - private SeededNoiseSampler noise; + private NoiseSampler noise; @Override public SeededBuilder get() { - return seed -> new NoiseDistributor(noise.build(seed)); + return seed -> new NoiseDistributor(noise); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index abe73fb04..e04f6cd0b 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -8,6 +8,6 @@ import com.dfsek.terra.api.world.Flora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().build(2403)); + return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution()); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index 62eaa3fd0..c6d75b247 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -61,9 +62,9 @@ public class FloraTemplate implements AbstractableTemplate { private List layers; @Value("layer-distribution") - private SeededNoiseSampler noiseDistribution; + private NoiseSampler noiseDistribution; - public SeededNoiseSampler getNoiseDistribution() { + public NoiseSampler getNoiseDistribution() { return noiseDistribution; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java new file mode 100644 index 000000000..2d1194c52 --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.noise.config; + +import com.dfsek.terra.api.noise.NoiseSampler; + +public class DimensionApplicableNoiseSampler { + private final int dimensions; + + private final NoiseSampler sampler; + + public DimensionApplicableNoiseSampler(int dimensions, NoiseSampler sampler) { + this.dimensions = dimensions; + this.sampler = sampler; + } + + public int getDimensions() { + return dimensions; + } + + public NoiseSampler getSampler() { + return sampler; + } +} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index e484256b3..8f0f73cd5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -9,10 +9,10 @@ import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { @Value("warp") - private SeededNoiseSampler warp; + private NoiseSampler warp; @Value("function") - private SeededNoiseSampler function; + private NoiseSampler function; @Value("salt") @Default @@ -24,6 +24,6 @@ public class DomainWarpTemplate extends SamplerTemplate { @Override public NoiseSampler build(long seed) { - return new DomainWarpedSampler(function.build(seed), warp.build(seed), amplitude); + return new DomainWarpedSampler(function, warp, amplitude); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index b26f7e78e..69baa0139 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -21,7 +21,7 @@ public class KernelTemplate extends SamplerTemplate implements Va private double factor = 1; @Value("function") - private SeededNoiseSampler function; + private NoiseSampler function; @Value("frequency") @Default @@ -37,7 +37,7 @@ public class KernelTemplate extends SamplerTemplate implements Va } } - KernelSampler sampler = new KernelSampler(k, function.build(seed)); + KernelSampler sampler = new KernelSampler(k, function); sampler.setFrequency(frequency); return sampler; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index bcbb3071c..45ee7418c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -24,22 +24,12 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default - private SeededNoiseSampler lookup = new SeededNoiseSampler() { - @Override - public NoiseSampler build(long seed) { - return new OpenSimplex2Sampler(); - } - - @Override - public int getDimensions() { - return 2; - } - }; + private NoiseSampler lookup = new OpenSimplex2Sampler(); @Override public NoiseSampler build(long seed) { CellularSampler sampler = new CellularSampler(); - sampler.setNoiseLookup(lookup.build(seed)); + sampler.setNoiseLookup(lookup); sampler.setFrequency(frequency); sampler.setJitterModifier(cellularJitter); sampler.setReturnType(cellularReturnType); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index f159620a9..2a29956f6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -8,6 +8,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; @@ -32,7 +33,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate functions = new LinkedHashMap<>(); + private LinkedHashMap functions = new LinkedHashMap<>(); @Value("expressions") @Default private LinkedHashMap expressions = new LinkedHashMap<>(); @@ -77,8 +78,8 @@ public class ExpressionFunctionTemplate extends SamplerTemplate { if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed))); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed))); + noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); + } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); }); return noiseFunctionMap; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index 9815d349c..b44a7873f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override public NoiseSampler build(long seed) { - BrownianMotionSampler sampler = new BrownianMotionSampler((int) seed, function.build(seed)); + BrownianMotionSampler sampler = new BrownianMotionSampler((int) seed, function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 2f1228061..15017e568 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class FractalTemplate extends SamplerTemplate { @@ -24,5 +25,5 @@ public abstract class FractalTemplate extends Sa protected double weightedStrength = 0.0D; @Value("function") - protected SeededNoiseSampler function; + protected NoiseSampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index 72e517661..fc7bced26 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -13,7 +13,7 @@ public class PingPongTemplate extends FractalTemplate { @Override public NoiseSampler build(long seed) { - PingPongSampler sampler = new PingPongSampler((int) seed, function.build(seed)); + PingPongSampler sampler = new PingPongSampler((int) seed, function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index dec05c521..613d25a04 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override public NoiseSampler build(long seed) { - RidgedFractalSampler sampler = new RidgedFractalSampler((int) seed, function.build(seed)); + RidgedFractalSampler sampler = new RidgedFractalSampler((int) seed, function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index d7da4be6b..f022597b8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -14,6 +14,6 @@ public class ClampNormalizerTemplate extends NormalizerTemplate @Override public NoiseSampler build(long seed) { - return new ClampNormalizer(function.build(seed), min, max); + return new ClampNormalizer(function, min, max); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index eb65f7135..ed7ee1333 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -14,6 +14,6 @@ public class LinearNormalizerTemplate extends NormalizerTemplate extends SamplerTemplate { @Value("function") - protected SeededNoiseSampler function; + protected NoiseSampler function; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index d8c42fff3..f64eb7931 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.generator.Palette; public class PaletteFactory implements ConfigFactory { @Override public Palette build(PaletteTemplate config, TerraPlugin main) { - NoisePalette palette = new NoisePalette(config.getNoise().build(2403L), config.getNoise().getDimensions() == 2); + NoisePalette palette = new NoisePalette(config.getNoise()); for(PaletteLayerHolder layer : config.getPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index fa44c09a5..4b650d284 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; @@ -13,7 +14,7 @@ import java.util.List; public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Default - private SeededNoiseSampler noise = SeededNoiseSampler.zero(2); + private NoiseSampler noise = NoiseSampler.zero(); @Value("id") @Final @@ -30,7 +31,7 @@ public class PaletteTemplate implements AbstractableTemplate { return palette; } - public SeededNoiseSampler getNoise() { + public NoiseSampler getNoise() { return noise; } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java index f572422d8..24e1bac68 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java @@ -7,12 +7,10 @@ import java.util.List; public class NoisePalette extends PaletteImpl { private final NoiseSampler sampler; - private final boolean is2D; - public NoisePalette(NoiseSampler sampler, boolean is2D) { + public NoisePalette(NoiseSampler sampler) { this.sampler = sampler; - this.is2D = is2D; - } + } @Override public BlockState get(int layer, double x, double y, double z, long seed) { @@ -24,6 +22,6 @@ public class NoisePalette extends PaletteImpl { else paletteLayer = pl.get(layer); } NoiseSampler paletteSampler = paletteLayer.getSampler(); - return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, is2D, seed); + return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, seed); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 4fc059397..e11462958 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -86,19 +86,9 @@ public abstract class PaletteImpl implements Palette { return sampler; } - /** - * Gets a material from the layer. - * - * @return Material - the material.. - */ - public BlockState get(Random random) { - if(col) return this.collection.get(random); - return m; - } - public BlockState get(NoiseSampler random, double x, double y, double z, boolean is2D, long seed) { - if(col && is2D) return this.collection.get(random, x, z, seed); - else if(col) return this.collection.get(random, x, y, z, seed); + public BlockState get(NoiseSampler random, double x, double y, double z, long seed) { + if(col) return this.collection.get(random, x, y, z, seed); return m; } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index 3dfb3a5f8..73467723f 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -18,11 +19,11 @@ public class FloraLayerLoader implements ObjectTemplate { private ProbabilityCollection items; @Value("distribution") - private SeededNoiseSampler distribution; + private NoiseSampler distribution; @Override public FloraLayer get() { - return new FloraLayer(density, y, items, distribution.build(2403L)); + return new FloraLayer(density, y, items, distribution); } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java index 60c71750e..247e07c2b 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.generation.tree; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -18,10 +19,10 @@ public class TreeLayerTemplate implements ObjectTemplate { private ProbabilityCollection items; @Value("distribution") - private SeededNoiseSampler distribution; + private NoiseSampler distribution; @Override public TreeLayer get() { - return new TreeLayer(density, y, items, distribution.build(2403L)); + return new TreeLayer(density, y, items, distribution); } } diff --git a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java index 4cc2df0ad..48a8cfc6e 100644 --- a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java +++ b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java @@ -2,15 +2,16 @@ package noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("unused") public class NoiseConfigTemplate implements ConfigTemplate { @Value(".") - private SeededNoiseSampler builder; + private NoiseSampler builder; - public SeededNoiseSampler getBuilder() { + public NoiseSampler getBuilder() { return builder; } } From f0441cbefcb38d006db3698d2cd656d2eb02ecb2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:19:57 -0700 Subject: [PATCH 0266/1529] dont implement seedednoisesampler in noise addon --- .../dfsek/terra/addons/noise/NoiseAddon.java | 24 ++++++++++--------- .../addons/noise/NoiseConfigPackTemplate.java | 5 ++-- .../config/NoiseSamplerBuilderLoader.java | 11 +++++---- .../config/templates/DomainWarpTemplate.java | 2 +- .../templates/ImageSamplerTemplate.java | 2 +- .../config/templates/KernelTemplate.java | 2 +- .../config/templates/SamplerTemplate.java | 8 +------ .../noise/CellularNoiseTemplate.java | 2 +- .../noise/ConstantNoiseTemplate.java | 2 +- .../noise/ExpressionFunctionTemplate.java | 16 ++++++------- .../templates/noise/GaborNoiseTemplate.java | 2 +- .../templates/noise/SimpleNoiseTemplate.java | 9 +++---- .../noise/fractal/BrownianMotionTemplate.java | 4 ++-- .../noise/fractal/PingPongTemplate.java | 4 ++-- .../noise/fractal/RidgedFractalTemplate.java | 4 ++-- .../normalizer/ClampNormalizerTemplate.java | 2 +- .../normalizer/LinearNormalizerTemplate.java | 2 +- .../normalizer/NormalNormalizerTemplate.java | 2 +- .../noise/fractal/BrownianMotionSampler.java | 2 +- .../noise/fractal/PingPongSampler.java | 2 +- .../noise/fractal/RidgedFractalSampler.java | 2 +- .../samplers/noise/value/ValueSampler.java | 4 ---- 22 files changed, 54 insertions(+), 59 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index d09305f99..0d2ea8efe 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; @@ -32,6 +33,7 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -47,7 +49,7 @@ public class NoiseAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin plugin; - public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() {}; + public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() {}; @Override public void initialize() { @@ -55,9 +57,9 @@ public class NoiseAddon extends TerraAddon implements EventListener { } public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); event.getPack() - .applyLoader(SeededNoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) + .applyLoader(NoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) @@ -76,26 +78,26 @@ public class NoiseAddon extends TerraAddon implements EventListener { noiseRegistry.register("PINGPONG", PingPongTemplate::new); noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(seed3 -> new OpenSimplex2Sampler())); - noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(seed3 -> new OpenSimplex2SSampler())); - noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(seed2 -> new PerlinSampler())); - noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(seed2 -> new SimplexSampler())); + noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); noiseRegistry.register("GABOR", GaborNoiseTemplate::new); noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(seed1 -> new ValueCubicSampler())); + noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(seed -> new WhiteNoiseSampler())); - noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(seed -> new GaussianNoiseSampler())); + noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); noiseRegistry.register("KERNEL", KernelTemplate::new); - Map packFunctions = new HashMap<>(); + Map packFunctions = new HashMap<>(); noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index d9e7637dd..b11378675 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -2,15 +2,16 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.Map; public class NoiseConfigPackTemplate implements ConfigTemplate { @Value("noise") - private Map noiseBuilderMap; + private Map noiseBuilderMap; - public Map getNoiseBuilderMap() { + public Map getNoiseBuilderMap() { return noiseBuilderMap; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 2173786d0..9e42a79c0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @@ -15,21 +16,21 @@ import java.util.Map; import java.util.function.Supplier; @SuppressWarnings("unchecked") -public class NoiseSamplerBuilderLoader implements TypeLoader { - private final Registry>> noiseRegistry; +public class NoiseSamplerBuilderLoader implements TypeLoader { + private final Registry>> noiseRegistry; - public NoiseSamplerBuilderLoader(Registry>> noiseRegistry) { + public NoiseSamplerBuilderLoader(Registry>> noiseRegistry) { this.noiseRegistry = noiseRegistry; } @Override - public SeededNoiseSampler load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public NoiseSampler load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map map = (Map) c; try { if(!noiseRegistry.contains((String) map.get("type"))) { throw new LoadException("No such noise function: " + map.get("type")); } - ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); + ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type"))).get(); loader.load(normalizerTemplate, new MapConfiguration(map)); return normalizerTemplate.get(); } catch(ConfigException e) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 8f0f73cd5..d99fe1a60 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -23,7 +23,7 @@ public class DomainWarpTemplate extends SamplerTemplate { private double amplitude = 1; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { return new DomainWarpedSampler(function, warp, amplitude); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index d26c1f7ae..35dfd78ef 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -19,7 +19,7 @@ public class ImageSamplerTemplate extends SamplerTemplate { private ImageSampler.Channel channel; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { return new ImageSampler(image, channel, frequency); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 69baa0139..021fcdbb7 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -28,7 +28,7 @@ public class KernelTemplate extends SamplerTemplate implements Va private double frequency = 1; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { double[][] k = new double[kernel.size()][kernel.get(0).size()]; for(int x = 0; x < kernel.size(); x++) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 80b69d8bb..393e03cce 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -6,10 +6,9 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("FieldMayBeFinal") -public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate, SeededNoiseSampler { +public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { @Value("dimensions") @Default private int dimensions = 2; @@ -23,9 +22,4 @@ public abstract class SamplerTemplate implements Validat if(dimensions != 2 && dimensions != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions); return true; } - - @Override - public SeededNoiseSampler get() { - return this; - } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 45ee7418c..1969a49fb 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -27,7 +27,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { private NoiseSampler lookup = new OpenSimplex2Sampler(); @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { CellularSampler sampler = new CellularSampler(); sampler.setNoiseLookup(lookup); sampler.setFrequency(frequency); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index a5d5d38b0..226bcf30d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -13,7 +13,7 @@ public class ConstantNoiseTemplate extends SamplerTemplate { private double value = 0d; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { return new ConstantSampler(value); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 2a29956f6..35886ef0d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -25,7 +25,7 @@ import java.util.Map; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class ExpressionFunctionTemplate extends SamplerTemplate implements ValidatedConfigTemplate { - private final Map otherFunctions; + private final Map otherFunctions; @Value("variables") @Default private Map vars = new HashMap<>(); @@ -38,14 +38,14 @@ public class ExpressionFunctionTemplate extends SamplerTemplate expressions = new LinkedHashMap<>(); - public ExpressionFunctionTemplate(Map otherFunctions) { + public ExpressionFunctionTemplate(Map otherFunctions) { this.otherFunctions = otherFunctions; } @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { try { - Map noiseFunctionMap = generateFunctions(seed); + Map noiseFunctionMap = generateFunctions(); return new ExpressionFunction(noiseFunctionMap, equation, vars); } catch(ParseException e) { throw new IllegalStateException(e); @@ -55,7 +55,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate noiseFunctionMap = generateFunctions(0L); + Map noiseFunctionMap = generateFunctions(); new ExpressionFunction(noiseFunctionMap, equation, vars); } catch(ParseException e) { throw new ValidationException("Errors occurred while parsing noise equation: ", e); @@ -63,7 +63,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate generateFunctions(Long seed) throws ParseException { + private Map generateFunctions() throws ParseException { Map noiseFunctionMap = new HashMap<>(); for(Map.Entry entry : expressions.entrySet()) { @@ -72,8 +72,8 @@ public class ExpressionFunctionTemplate extends SamplerTemplate { if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed))); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed))); + noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); + } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); }); functions.forEach((id, function) -> { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index 96225821a..8cbb381b2 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -27,7 +27,7 @@ public class GaborNoiseTemplate extends NoiseTemplate { private double f0 = 0.625; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler(); gaborNoiseSampler.setFrequency(frequency); gaborNoiseSampler.setRotation(rotation); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index 68b1dd8bd..2e0c338d7 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.function.Function; +import java.util.function.Supplier; public class SimpleNoiseTemplate extends NoiseTemplate { - private final Function samplerSupplier; + private final Supplier samplerSupplier; - public SimpleNoiseTemplate(Function samplerSupplier) { + public SimpleNoiseTemplate(Supplier samplerSupplier) { this.samplerSupplier = samplerSupplier; } @Override - public NoiseSampler build(long seed) { - NoiseFunction sampler = samplerSupplier.apply((int) seed + salt); + public NoiseSampler get() { + NoiseFunction sampler = samplerSupplier.get(); sampler.setFrequency(frequency); return sampler; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index b44a7873f..3a3ce6c9d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class BrownianMotionTemplate extends FractalTemplate { @Override - public NoiseSampler build(long seed) { - BrownianMotionSampler sampler = new BrownianMotionSampler((int) seed, function); + public NoiseSampler get() { + BrownianMotionSampler sampler = new BrownianMotionSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index fc7bced26..fafd0863b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -12,8 +12,8 @@ public class PingPongTemplate extends FractalTemplate { private double pingPong = 2.0D; @Override - public NoiseSampler build(long seed) { - PingPongSampler sampler = new PingPongSampler((int) seed, function); + public NoiseSampler get() { + PingPongSampler sampler = new PingPongSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index 613d25a04..85c69a4b1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class RidgedFractalTemplate extends FractalTemplate { @Override - public NoiseSampler build(long seed) { - RidgedFractalSampler sampler = new RidgedFractalSampler((int) seed, function); + public NoiseSampler get() { + RidgedFractalSampler sampler = new RidgedFractalSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); sampler.setOctaves(octaves); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index f022597b8..e737c0240 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -13,7 +13,7 @@ public class ClampNormalizerTemplate extends NormalizerTemplate private double min; @Override - public NoiseSampler build(long seed) { + public NoiseSampler get() { return new ClampNormalizer(function, min, max); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index ed7ee1333..33156d032 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -13,7 +13,7 @@ public class LinearNormalizerTemplate extends NormalizerTemplate Date: Mon, 19 Jul 2021 21:20:59 -0700 Subject: [PATCH 0267/1529] remove unused class ExpressionSampler --- .../noise/samplers/ExpressionSampler.java | 58 ------------------- .../api/util/seeded/SeededNoiseSampler.java | 13 ----- 2 files changed, 71 deletions(-) delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java deleted file mode 100644 index 58817c0ab..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ExpressionSampler.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; -import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; - -import java.util.Map; - -/** - * Sampler3D implementation using Paralithic expression - */ -public class ExpressionSampler implements NoiseSampler { - private final Expression expression; - - public ExpressionSampler(String equation, Scope parent, long seed, Map functions, Map definedFunctions) throws ParseException { - Parser parser = new Parser(); - Scope scope = new Scope().withParent(parent); - - scope.addInvocationVariable("x"); - scope.addInvocationVariable("y"); - scope.addInvocationVariable("z"); - - functions.forEach((id, noise) -> { - switch(noise.getDimensions()) { - case 2: - parser.registerFunction(id, new NoiseFunction2(noise.build(seed))); - break; - case 3: - parser.registerFunction(id, new NoiseFunction3(noise.build(seed))); - break; - } - }); - - for(Map.Entry entry : definedFunctions.entrySet()) { - parser.registerFunction(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), parser, parent)); - } - - this.expression = parser.parse(equation, scope); - } - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - return getNoiseSeeded(seed, x, y); - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - return expression.evaluate(new SeedContext(seed), x, y, z); - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java index 86fe7fc58..a37abfced 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java @@ -3,19 +3,6 @@ package com.dfsek.terra.api.util.seeded; import com.dfsek.terra.api.noise.NoiseSampler; public interface SeededNoiseSampler extends SeededBuilder { - static SeededNoiseSampler zero(int dimensions) { - return new SeededNoiseSampler() { - @Override - public NoiseSampler build(long seed) { - return NoiseSampler.zero(); - } - - @Override - public int getDimensions() { - return dimensions; - } - }; - } int getDimensions(); } From d036ed289c42309d1e809d158c57d570967aeb2a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:21:56 -0700 Subject: [PATCH 0268/1529] delete SeededNoiseSampler --- .../biome/pipeline/config/BiomeProviderTemplate.java | 1 - .../addons/biome/pipeline/config/NoiseSourceTemplate.java | 1 - .../addons/biome/pipeline/config/stage/StageTemplate.java | 1 - .../java/com/dfsek/terra/addons/biome/BiomeTemplate.java | 3 --- .../distributor/config/NoiseDistributorTemplate.java | 1 - .../java/com/dfsek/terra/addons/flora/FloraTemplate.java | 1 - .../java/com/dfsek/terra/addons/noise/NoiseAddon.java | 1 - .../dfsek/terra/addons/noise/NoiseConfigPackTemplate.java | 1 - .../addons/noise/config/NoiseSamplerBuilderLoader.java | 2 -- .../addons/noise/config/templates/DomainWarpTemplate.java | 1 - .../addons/noise/config/templates/KernelTemplate.java | 1 - .../config/templates/noise/CellularNoiseTemplate.java | 1 - .../templates/noise/ExpressionFunctionTemplate.java | 1 - .../config/templates/noise/fractal/FractalTemplate.java | 1 - .../config/templates/normalizer/NormalizerTemplate.java | 1 - .../com/dfsek/terra/addons/palette/PaletteTemplate.java | 1 - .../terra/addons/palette/palette/PaletteLayerLoader.java | 3 +-- .../terra/addons/generation/flora/FloraLayerLoader.java | 1 - .../terra/addons/generation/tree/TreeLayerTemplate.java | 1 - .../dfsek/terra/api/util/seeded/SeededNoiseSampler.java | 8 -------- .../src/test/java/noise/NoiseConfigTemplate.java | 1 - 21 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 41883c92c..30def40d5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public abstract class BiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index d10a1a9a6..f041f1ae3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class NoiseSourceTemplate extends SourceTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index 065bbf96e..b1177ac67 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index a337eca2c..5cc51de9e 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; @@ -13,7 +11,6 @@ import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index c91516c66..b5a083e7c 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -6,7 +6,6 @@ import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.util.seeded.SeededBuilder; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public class NoiseDistributorTemplate implements ObjectTemplate> { @Value("distribution") diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index c6d75b247..3f16bbb4a 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -8,7 +8,6 @@ import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 0d2ea8efe..347c2d010 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -36,7 +36,6 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index b11378675..ab2e8baa6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.Map; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java index 9e42a79c0..8d057043e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java @@ -8,10 +8,8 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.lang.reflect.AnnotatedType; -import java.util.Locale; import java.util.Map; import java.util.function.Supplier; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index d99fe1a60..ad918d654 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 021fcdbb7..ae032efd0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.addons.noise.samplers.KernelSampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 1969a49fb..eb00a599b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 35886ef0d..434698f3e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -16,7 +16,6 @@ import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 15017e568..2f0061ea9 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index d4a0f1674..d782830ed 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.normalizer.Normalizer; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index 4b650d284..0ded0a85b 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.util.List; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index 24e8f6b49..a5c73728f 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import java.lang.reflect.AnnotatedType; import java.util.Map; @@ -33,7 +32,7 @@ public class PaletteLayerLoader implements TypeLoader { NoiseSampler sampler = null; if(map.containsKey("noise")) { - sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).build(2403L); + sampler = configLoader.loadType(NoiseSampler.class, map.get("noise")); } if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index 73467723f..627bedec3 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.Flora; public class FloraLayerLoader implements ObjectTemplate { diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java index 247e07c2b..3b6ba5b8a 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.world.Tree; public class TreeLayerTemplate implements ObjectTemplate { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java deleted file mode 100644 index a37abfced..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededNoiseSampler.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.noise.NoiseSampler; - -public interface SeededNoiseSampler extends SeededBuilder { - - int getDimensions(); -} diff --git a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java index 48a8cfc6e..17c0da528 100644 --- a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java +++ b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java @@ -3,7 +3,6 @@ package noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; @SuppressWarnings("unused") From 785323f3f67d0fd6837e3f0aa47476b7be90510b Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:23:37 -0700 Subject: [PATCH 0269/1529] register DimensionApplicableNoiseSampler loader --- .../dfsek/terra/addons/noise/NoiseAddon.java | 3 ++- .../DimensionApplicableNoiseSampler.java | 20 +++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 347c2d010..750a8f9cb 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -63,7 +63,8 @@ public class NoiseAddon extends TerraAddon implements EventListener { .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) - .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new); + .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) + .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java index 2d1194c52..d508f37ec 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java @@ -1,16 +1,15 @@ package com.dfsek.terra.addons.noise.config; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -public class DimensionApplicableNoiseSampler { - private final int dimensions; +public class DimensionApplicableNoiseSampler implements ObjectTemplate { + @Value("dimensions") + private int dimensions; - private final NoiseSampler sampler; - - public DimensionApplicableNoiseSampler(int dimensions, NoiseSampler sampler) { - this.dimensions = dimensions; - this.sampler = sampler; - } + @Value(".") + private NoiseSampler sampler; public int getDimensions() { return dimensions; @@ -19,4 +18,9 @@ public class DimensionApplicableNoiseSampler { public NoiseSampler getSampler() { return sampler; } + + @Override + public DimensionApplicableNoiseSampler get() { + return this; + } } From 04bdd0b4a36f738b993022310f1c0e82889109bd Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:26:52 -0700 Subject: [PATCH 0270/1529] BiomeConfigAddon -> BiomeAddon --- .../addons/biome/{BiomeConfigAddon.java => BiomeAddon.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/{BiomeConfigAddon.java => BiomeAddon.java} (93%) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java similarity index 93% rename from common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index 1fae0d0e1..7ca4191f7 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -14,7 +14,7 @@ import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-biome") @Author("Terra") @Version("1.0.0") -public class BiomeConfigAddon extends TerraAddon implements EventListener { +public class BiomeAddon extends TerraAddon implements EventListener { @Inject private TerraPlugin main; From 458fc422de96293dc4715f8f847372baa3b94076 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:29:41 -0700 Subject: [PATCH 0271/1529] directly instantiate biomes --- .../terra/addons/biome/BiomeConfigType.java | 15 ++++--- .../terra/addons/biome/BiomeFactory.java | 9 ++-- .../terra/addons/biome/UserDefinedBiome.java | 5 +-- .../biome/UserDefinedSeededTerraBiome.java | 43 ------------------- 4 files changed, 16 insertions(+), 56 deletions(-) delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 75ba8ad31..34e61df86 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -9,14 +9,15 @@ import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.function.Supplier; -public class BiomeConfigType implements ConfigType { +public class BiomeConfigType implements ConfigType { private final ConfigPack pack; private final BiomeFactory factory; - public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() {}; + public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() {}; public BiomeConfigType(ConfigPack pack) { this.pack = pack; @@ -29,20 +30,20 @@ public class BiomeConfigType implements ConfigType getFactory() { + public ConfigFactory getFactory() { return factory; } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeClass() { return BIOME_TYPE_TOKEN; } @Override - public Supplier> registrySupplier() { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + public Supplier> registrySupplier() { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(c.equals("SELF")) return null; - SeededTerraBiome obj = registry.get((String) c); + TerraBiome obj = registry.get((String) c); if(obj == null) throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); return obj; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index e52b764fc..2a6736107 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -4,8 +4,9 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; -public class BiomeFactory implements ConfigFactory { +public class BiomeFactory implements ConfigFactory { private final ConfigPack pack; public BiomeFactory(ConfigPack pack) { @@ -13,7 +14,9 @@ public class BiomeFactory implements ConfigFactory tags; - private final Context context; + private final Context context = new Context(); - public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config, Context context) { + public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); this.config = config; this.color = config.getColor(); this.tags = config.getTags(); - this.context = context; tags.add("BIOME:" + id); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java deleted file mode 100644 index 8bc199740..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedSeededTerraBiome.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.terra.api.properties.Context; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; -import com.dfsek.terra.api.world.biome.Biome; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class UserDefinedSeededTerraBiome implements SeededTerraBiome { - private final BiomeTemplate template; - private final Context context = new Context(); - - private final Map biomeMap = new ConcurrentHashMap<>(); - - public UserDefinedSeededTerraBiome(BiomeTemplate template) { - this.template = template; - } - - @Override - public UserDefinedBiome build(long seed) { - synchronized(biomeMap) { - return biomeMap.computeIfAbsent(seed, - s -> { - UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), template.getElevationWeight(), - template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); - return new UserDefinedBiome(template.getVanilla(), generator, template, context); - } - ); - } - } - - @Override - public ProbabilityCollection getVanillaBiomes() { - return template.getVanilla(); - } - - @Override - public Context getContext() { - return context; - } -} From 03e4636ef917d427f1af912e8d620a9b220533b8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:35:53 -0700 Subject: [PATCH 0272/1529] remove SeededTerraBiome --- .../addons/biome/image/ImageProviderTemplate.java | 12 ++++++------ .../biome/pipeline/config/NoiseSourceTemplate.java | 6 +++--- .../stage/mutator/BorderListMutatorTemplate.java | 12 +++--------- .../config/stage/mutator/BorderMutatorTemplate.java | 6 +++--- .../stage/mutator/ReplaceListMutatorTemplate.java | 12 +++--------- .../config/stage/mutator/ReplaceMutatorTemplate.java | 6 +++--- .../biome/single/SingleBiomeProviderTemplate.java | 6 +++--- .../chunkgenerator/NoiseChunkGenerator3DAddon.java | 6 +++--- .../dfsek/terra/addons/biome/BiomeConfigType.java | 1 - .../com/dfsek/terra/addons/biome/BiomeFactory.java | 1 - .../generation/feature/FeatureGenerationAddon.java | 6 +++--- .../generation/flora/FloraGenerationAddon.java | 6 +++--- .../addons/generation/tree/TreeGenerationAddon.java | 6 +++--- .../terra/api/util/seeded/SeededTerraBiome.java | 12 ------------ .../com/dfsek/terra/api/world/biome/TerraBiome.java | 3 --- .../com/dfsek/terra/config/pack/WorldConfigImpl.java | 8 -------- .../com/dfsek/terra/fabric/TerraFabricPlugin.java | 4 ++-- .../fabric/config/PostLoadCompatibilityOptions.java | 10 +++++----- .../java/com/dfsek/terra/fabric/util/FabricUtil.java | 4 ++-- 19 files changed, 45 insertions(+), 82 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index 813c7a617..f0388a941 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -2,14 +2,14 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; -import java.util.stream.Collectors; +import java.util.HashSet; public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { - private final Registry biomes; + private final Registry biomes; @Value("image.name") private BufferedImage image; @@ -18,12 +18,12 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { private int resolution; - public ImageProviderTemplate(Registry set) { + public ImageProviderTemplate(Registry set) { this.biomes = set; } //@Override - public BiomeProvider build(long seed) { - return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.build(seed)).collect(Collectors.toSet()), image, resolution, align); + public BiomeProvider build() { + return new ImageBiomeProvider(new HashSet<>(biomes.entries()), image, resolution, align); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index f041f1ae3..ab3d10c07 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class NoiseSourceTemplate extends SourceTemplate { @@ -12,10 +12,10 @@ public class NoiseSourceTemplate extends SourceTemplate { private NoiseSampler noise; @Value("biomes") - private ProbabilityCollection biomes; + private ProbabilityCollection biomes; @Override public BiomeSource build(long seed) { - return new RandomSource(biomes.map((biome) -> biome.build(seed), false), noise); + return new RandomSource(biomes, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 5c186ca07..c41da7946 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -4,10 +4,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.HashMap; import java.util.Map; @SuppressWarnings("unused") @@ -19,18 +17,14 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { private String defaultReplace; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollection defaultTo; @Value("replace") - private Map> replace; + private Map> replace; @Override public BiomeMutator getMutator(long seed) { - Map> replaceMap = new HashMap<>(); - - replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.build(seed), replacements.map(replacement -> replacement.build(seed), true))); - - return new BorderListMutator(replaceMap, from, defaultReplace, noise, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true)); + return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 6b50f632f..d315c84d6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") public class BorderMutatorTemplate extends MutatorStageTemplate { @@ -15,10 +15,10 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private String replace; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollection to; @Override public BiomeMutator getMutator(long seed) { - return new BorderMutator(from, replace, noise, to.map(biomeBuilder -> biomeBuilder.build(seed), true)); + return new BorderMutator(from, replace, noise, to); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 6d3cbfb07..c68f698ad 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -4,10 +4,8 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.HashMap; import java.util.Map; @SuppressWarnings("unused") @@ -16,17 +14,13 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private String defaultFrom; @Value("default-to") - private ProbabilityCollection defaultTo; + private ProbabilityCollection defaultTo; @Value("to") - private Map> replace; + private Map> replace; @Override public BiomeMutator getMutator(long seed) { - Map> replaceMap = new HashMap<>(); - - replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.build(seed), biomeBuilders.map(builder -> builder.build(seed), true))); - - return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true), noise); + return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 2cb2aecd6..55b75d2c0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends MutatorStageTemplate { @@ -12,10 +12,10 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private String from; @Value("to") - private ProbabilityCollection to; + private ProbabilityCollection to; @Override public BiomeMutator getMutator(long seed) { - return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.build(seed), true), noise); + return new ReplaceMutator(from, to, noise); } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 3b6a9b2ba..4229af40d 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -3,16 +3,16 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.SeededBuilder; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class SingleBiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { @Value("biome") - private SeededTerraBiome biome; + private TerraBiome biome; @Override public BiomeProvider build(long seed) { - return new SingleBiomeProvider(biome.build(seed)); + return new SingleBiomeProvider(biome); } @Override diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 5b0e5e0de..6aa2c2ad5 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @Addon("chunk-generator-noise-3d") @@ -37,8 +37,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(SeededTerraBiome.class)) { - event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 34e61df86..7616a3e65 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.function.Supplier; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index 2a6736107..1b2526193 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome; public class BiomeFactory implements ConfigFactory { diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 58081c971..9016d06da 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-feature") @@ -30,8 +30,8 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(SeededTerraBiome.class)) { - event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); } } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 0995ff372..de6f38d09 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-flora") @@ -31,8 +31,8 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(SeededTerraBiome.class)) { - event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); } } } diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java index 251d7ec32..852aac8cd 100644 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java +++ b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java @@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-tree") @@ -31,8 +31,8 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener { } public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(SeededTerraBiome.class)) { - event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); } } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java deleted file mode 100644 index 53783be32..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededTerraBiome.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -import com.dfsek.terra.api.properties.PropertyHolder; -import com.dfsek.terra.api.properties.annotations.Linked; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.TerraBiome; - -@Linked(TerraBiome.class) -public interface SeededTerraBiome extends SeededBuilder, PropertyHolder { - ProbabilityCollection getVanillaBiomes(); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 08a6160f6..92464823b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -2,9 +2,7 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.properties.PropertyHolder; -import com.dfsek.terra.api.properties.annotations.Linked; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.World; import java.util.Set; @@ -12,7 +10,6 @@ import java.util.Set; /** * Represents a custom biome */ -@Linked(SeededTerraBiome.class) public interface TerraBiome extends PropertyHolder { /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 371cc4c76..33b97e3a4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -2,15 +2,11 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.registry.LockedRegistryImpl; -import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.world.SamplerCacheImpl; import java.lang.reflect.Type; @@ -34,10 +30,6 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); - OpenRegistry biomeOpenRegistry = new OpenRegistryImpl<>(); - pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.build(world.getWorld().getSeed()))); - registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); - this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); } 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 a120ba6fc..44f621772 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 @@ -28,10 +28,10 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.config.GenericLoaders; @@ -364,7 +364,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public void injectBiomes(BiomeRegistrationEvent event) { logger.info("Registering biomes..."); Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. logger.info("Biomes registered."); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java index ca1a6bd8a..ed6d64444 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java @@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import net.minecraft.util.Identifier; import java.util.HashMap; @@ -14,17 +14,17 @@ import java.util.Set; public class PostLoadCompatibilityOptions implements ConfigTemplate { @Value("structures.inject-biome.exclude-biomes") @Default - private Map> excludedPerBiomeStructures = new HashMap<>(); + private Map> excludedPerBiomeStructures = new HashMap<>(); @Value("features.inject-biome.exclude-biomes") @Default - private Map> excludedPerBiomeFeatures = new HashMap<>(); + private Map> excludedPerBiomeFeatures = new HashMap<>(); - public Map> getExcludedPerBiomeFeatures() { + public Map> getExcludedPerBiomeFeatures() { return excludedPerBiomeFeatures; } - public Map> getExcludedPerBiomeStructures() { + public Map> getExcludedPerBiomeStructures() { return excludedPerBiomeStructures; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 09a499d6d..574e4ab50 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.seeded.SeededTerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; @@ -43,7 +43,7 @@ public final class FabricUtil { * @param pack The ConfigPack this biome belongs to. * @return The Minecraft delegate biome. */ - public static Biome createBiome(SeededTerraBiome biome, ConfigPack pack, DynamicRegistryManager registryManager) { + public static Biome createBiome(TerraBiome biome, ConfigPack pack, DynamicRegistryManager registryManager) { // BiomeTemplate template = biome.getTemplate(); Map colors = new HashMap<>(); // template.getColors(); From d997fc69bfb63397d1829f4a74cd9193b1c2fed2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:43:47 -0700 Subject: [PATCH 0273/1529] delete StageSeeded --- .../biome/image/ImageBiomeProvider.java | 7 +------ .../biome/pipeline/BiomePipelineAddon.java | 14 +++++++------- .../biome/pipeline/BiomePipelineImpl.java | 12 +++++------- .../addons/biome/pipeline/StageSeeded.java | 8 -------- .../biome/pipeline/StandardBiomeProvider.java | 2 +- .../config/BiomePipelineTemplate.java | 13 ++++++------- .../config/BiomeProviderBuilderLoader.java | 7 +++---- .../config/BiomeProviderTemplate.java | 7 +------ .../pipeline/config/NoiseSourceTemplate.java | 2 +- ...ceBuilderLoader.java => SourceLoader.java} | 7 +++---- .../biome/pipeline/config/SourceTemplate.java | 7 ++----- .../config/stage/StageBuilderLoader.java | 19 +++++++++---------- .../pipeline/config/stage/StageTemplate.java | 9 +-------- .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListMutatorTemplate.java | 2 +- .../stage/mutator/BorderMutatorTemplate.java | 2 +- .../stage/mutator/MutatorStageTemplate.java | 6 +++--- .../mutator/ReplaceListMutatorTemplate.java | 2 +- .../stage/mutator/ReplaceMutatorTemplate.java | 2 +- .../stage/mutator/SmoothMutatorTemplate.java | 2 +- 20 files changed, 49 insertions(+), 83 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/{SourceBuilderLoader.java => SourceLoader.java} (73%) diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 1e2345580..eab74da90 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class ImageBiomeProvider implements BiomeProvider, SeededBuilder { // This provider does not need a seed, so it is its own builder. +public class ImageBiomeProvider implements BiomeProvider { private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; @@ -40,11 +40,6 @@ public class ImageBiomeProvider implements BiomeProvider, SeededBuilder> BIOME_PROVIDER_BUILDER_TOKEN = new TypeKey<>(){}; - public static final TypeKey> BIOME_SOURCE_BUILDER_TOKEN = new TypeKey<>(){}; + public static final TypeKey BIOME_PROVIDER_BUILDER_TOKEN = new TypeKey<>(){}; + public static final TypeKey BIOME_SOURCE_BUILDER_TOKEN = new TypeKey<>(){}; @Override public void initialize() { @@ -44,8 +44,8 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceBuilderLoader()) - .applyLoader(StageSeeded.class, new StageBuilderLoader()) + event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) + .applyLoader(Stage.class, new StageBuilderLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) .applyLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) @@ -55,7 +55,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(ReplaceListMutatorTemplate.class, ReplaceListMutatorTemplate::new) .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) - .applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderBuilderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java index 0b99f6c84..a60b9d479 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java @@ -42,7 +42,7 @@ public class BiomePipelineImpl { public static final class BiomePipelineBuilder { private final int init; - List stages = new ArrayList<>(); + List stages = new ArrayList<>(); private int expand; public BiomePipelineBuilder(int init) { @@ -50,17 +50,15 @@ public class BiomePipelineImpl { expand = init; } - public BiomePipelineImpl build(BiomeSource source, long seed) { - List stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.build(seed)).collect(Collectors.toList()); - - for(Stage stage : stagesBuilt) { + public BiomePipelineImpl build(BiomeSource source) { + for(Stage stage : stages) { if(stage.isExpansion()) expand = expand * 2 - 1; } - return new BiomePipelineImpl(source, stagesBuilt, expand, init); + return new BiomePipelineImpl(source, stages, expand, init); } - public BiomePipelineBuilder addStage(StageSeeded stage) { + public BiomePipelineBuilder addStage(Stage stage) { stages.add(stage); return this; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java deleted file mode 100644 index b01109fe0..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StageSeeded.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.api.util.seeded.SeededBuilder; - -@FunctionalInterface -public interface StageSeeded extends SeededBuilder { -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java index 93148d4c4..b2c4c0687 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java @@ -19,7 +19,7 @@ public class StandardBiomeProvider implements BiomeProvider { private final NoiseSampler mutator; private final double noiseAmp; - public StandardBiomeProvider(BiomePipelineImpl pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp, int seed) { + public StandardBiomeProvider(BiomePipelineImpl pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 0e1eea992..6443ccb10 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -3,10 +3,9 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; -import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -20,20 +19,20 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { private int initialSize = 2; @Value("pipeline.stages") - private List stages; + private List stages; @Value("pipeline.source") - private SeededBuilder source; + private BiomeSource source; public BiomePipelineTemplate(TerraPlugin main) { this.main = main; } @Override - public BiomeProvider build(long seed) { + public BiomeProvider get() { BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); - BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.build(seed), seed); - return new StandardBiomeProvider(pipeline, main, resolution, blend, blendAmp, (int) seed); + BiomePipelineImpl pipeline = biomePipelineBuilder.build(source); + return new StandardBiomeProvider(pipeline, main, resolution, blend, blendAmp); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java index 41f3f7f1c..d23154347 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java @@ -3,14 +3,13 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; -public class BiomeProviderBuilderLoader implements TypeLoader> { +public class BiomeProviderBuilderLoader implements TypeLoader { @Override - public SeededBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadType(BiomePipelineTemplate.class, c); // TODO: actually implement this lol + public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + return loader.loadType(BiomePipelineTemplate.class, c).get(); // TODO: actually implement this lol } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 30def40d5..7cb1a019b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public abstract class BiomeProviderTemplate implements ObjectTemplate>, SeededBuilder { +public abstract class BiomeProviderTemplate implements ObjectTemplate { @Value("resolution") @Default protected int resolution = 1; @@ -17,9 +17,4 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate get() { - return this; - } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index ab3d10c07..c9ea1dd31 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -15,7 +15,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private ProbabilityCollection biomes; @Override - public BiomeSource build(long seed) { + public BiomeSource get() { return new RandomSource(biomes, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java similarity index 73% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java index 3dd500673..2031486d7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java @@ -3,22 +3,21 @@ package com.dfsek.terra.addons.biome.pipeline.config; 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.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; import java.util.Map; @SuppressWarnings("unchecked") -public class SourceBuilderLoader implements TypeLoader> { +public class SourceLoader implements TypeLoader { @Override - public SeededBuilder load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public BiomeSource load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map source = (Map) c; BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); if(type == BiomeSource.Type.NOISE) { - return loader.loadType(NoiseSourceTemplate.class, source); + return loader.loadType(NoiseSourceTemplate.class, source).get(); } throw new LoadException("No such loader type: " + type); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index 10935d983..1c06cccda 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -4,9 +4,6 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -public abstract class SourceTemplate implements ObjectTemplate>, SeededBuilder { - @Override - public SeededBuilder get() { - return this; - } +public abstract class SourceTemplate implements ObjectTemplate{ + } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java index 762e0eb66..4395a946e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.StageSeeded; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; @@ -14,13 +14,12 @@ import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.Map; @SuppressWarnings("unchecked") -public class StageBuilderLoader implements TypeLoader { +public class StageBuilderLoader implements TypeLoader { @Override - public StageSeeded load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + public Stage load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map raw = (Map) c; if(raw.size() != 1) throw new LoadException("Illegal stage map size: " + raw.size()); @@ -36,20 +35,20 @@ public class StageBuilderLoader implements TypeLoader { if(entry.getKey().equals("expand")) { ExpanderStage.Type stageType = loader.loadType(ExpanderStage.Type.class, mutator.get("type")); if(stageType.equals(ExpanderStage.Type.FRACTAL)) { - return loader.loadType(ExpanderStageTemplate.class, mutator); + return loader.loadType(ExpanderStageTemplate.class, mutator).get(); } else throw new LoadException("No such expander \"" + stageType + "\""); } else if(entry.getKey().equals("mutate")) { switch(loader.loadType(MutatorStage.Type.class, mutator.get("type"))) { case SMOOTH: - return loader.loadType(SmoothMutatorTemplate.class, mutator); + return loader.loadType(SmoothMutatorTemplate.class, mutator).get(); case REPLACE: - return loader.loadType(ReplaceMutatorTemplate.class, mutator); + return loader.loadType(ReplaceMutatorTemplate.class, mutator).get(); case REPLACE_LIST: - return loader.loadType(ReplaceListMutatorTemplate.class, mutator); + return loader.loadType(ReplaceListMutatorTemplate.class, mutator).get(); case BORDER: - return loader.loadType(BorderMutatorTemplate.class, mutator); + return loader.loadType(BorderMutatorTemplate.class, mutator).get(); case BORDER_LIST: - return loader.loadType(BorderListMutatorTemplate.class, mutator); + return loader.loadType(BorderListMutatorTemplate.class, mutator).get(); default: throw new LoadException("No such mutator type \"" + mutator.get("type")); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index b1177ac67..64fe3a369 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -2,17 +2,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.StageSeeded; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededBuilder; -public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { +public abstract class StageTemplate implements ObjectTemplate { @Value("noise") protected NoiseSampler noise; - - @Override - public StageSeeded get() { - return this; - } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index 38bfa2e81..6ccf0e9af 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; public class ExpanderStageTemplate extends StageTemplate { @Override - public Stage build(long seed) { + public Stage get() { return new ExpanderStage(new FractalExpander(noise)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index c41da7946..3f595953d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -24,7 +24,7 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator(long seed) { + public BiomeMutator getMutator() { return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index d315c84d6..82a12f596 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -18,7 +18,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator(long seed) { + public BiomeMutator getMutator() { return new BorderMutator(from, replace, noise, to); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index afe1df756..8084ee894 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -6,10 +6,10 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; public abstract class MutatorStageTemplate extends StageTemplate { - public abstract BiomeMutator getMutator(long seed); + public abstract BiomeMutator getMutator(); @Override - public Stage build(long seed) { - return new MutatorStage(getMutator(seed)); + public Stage get() { + return new MutatorStage(getMutator()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index c68f698ad..1a450c8a0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -20,7 +20,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private Map> replace; @Override - public BiomeMutator getMutator(long seed) { + public BiomeMutator getMutator() { return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 55b75d2c0..24cd6c5b1 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -15,7 +15,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator(long seed) { + public BiomeMutator getMutator() { return new ReplaceMutator(from, to, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index d07c74c53..c1eb81c45 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator(long seed) { + public BiomeMutator getMutator() { return new SmoothMutator(noise); } } From 24a4ff4044769d397bbcdf415f088636eab7cd9b Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:47:21 -0700 Subject: [PATCH 0274/1529] delete SeededBuilder --- .../terra/addons/biome/image/ImageBiomeProvider.java | 1 - .../biome/pipeline/config/BiomeProviderTemplate.java | 1 - .../addons/biome/pipeline/config/SourceTemplate.java | 1 - .../terra/addons/biome/single/SingleBiomeProvider.java | 8 +------- .../biome/single/SingleBiomeProviderTemplate.java | 10 ++-------- .../addons/feature/distributor/DistributorAddon.java | 5 ++--- .../distributor/config/NoiseDistributorTemplate.java | 7 +++---- .../terra/addons/feature/locator/LocatorAddon.java | 6 ++---- .../feature/locator/config/SurfaceLocatorTemplate.java | 7 +++---- .../java/com/dfsek/terra/api/config/ConfigPack.java | 3 +-- .../com/dfsek/terra/api/util/seeded/SeededBuilder.java | 6 ------ .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 7 ++----- .../terra/config/pack/ConfigPackPostTemplate.java | 5 ++--- 13 files changed, 18 insertions(+), 49 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index eab74da90..5f609e206 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,6 +1,5 @@ package com.dfsek.terra.addons.biome.image; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 7cb1a019b..97e79d107 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public abstract class BiomeProviderTemplate implements ObjectTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index 1c06cccda..c85785ec1 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public abstract class SourceTemplate implements ObjectTemplate{ diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 0b0a42d84..2b171547f 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -1,10 +1,9 @@ package com.dfsek.terra.addons.biome.single; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -public class SingleBiomeProvider implements BiomeProvider, SeededBuilder { +public class SingleBiomeProvider implements BiomeProvider { private final TerraBiome biome; public SingleBiomeProvider(TerraBiome biome) { @@ -15,9 +14,4 @@ public class SingleBiomeProvider implements BiomeProvider, SeededBuilder>, SeededBuilder { +public class SingleBiomeProviderTemplate implements ObjectTemplate { @Value("biome") private TerraBiome biome; @Override - public BiomeProvider build(long seed) { + public BiomeProvider get() { return new SingleBiomeProvider(biome); } - - @Override - public SeededBuilder get() { - return this; - } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 4295cde1d..3b6f0d0f5 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -13,7 +13,6 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import java.util.function.Supplier; @@ -21,7 +20,7 @@ import java.util.function.Supplier; @Version("1.0.0") @Author("Terra") public class DistributorAddon extends TerraAddon implements EventListener { - public static final TypeKey>>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; + public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -32,7 +31,7 @@ public class DistributorAddon extends TerraAddon implements EventListener { public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); + CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index b5a083e7c..e87ce15c2 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -5,14 +5,13 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.util.seeded.SeededBuilder; -public class NoiseDistributorTemplate implements ObjectTemplate> { +public class NoiseDistributorTemplate implements ObjectTemplate { @Value("distribution") private NoiseSampler noise; @Override - public SeededBuilder get() { - return seed -> new NoiseDistributor(noise); + public Distributor get() { + return new NoiseDistributor(noise); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index bca1e34c1..3bddc8a80 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -11,10 +11,8 @@ import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import java.util.function.Supplier; @@ -23,7 +21,7 @@ import java.util.function.Supplier; @Author("Terra") public class LocatorAddon extends TerraAddon implements EventListener { - public static final TypeKey>>> LOCATOR_TOKEN = new TypeKey<>() {}; + public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -33,7 +31,7 @@ public class LocatorAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); + CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java index 3619bca73..a85b37179 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java @@ -6,9 +6,8 @@ import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.seeded.SeededBuilder; -public class SurfaceLocatorTemplate implements ObjectTemplate> { +public class SurfaceLocatorTemplate implements ObjectTemplate { private final TerraPlugin main; @Value("range") @@ -19,7 +18,7 @@ public class SurfaceLocatorTemplate implements ObjectTemplate get() { - return seed -> new SurfaceLocator(range, main); + public Locator get() { + return new SurfaceLocator(range, main); } } 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 29262444c..edcbe9bcc 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 @@ -7,7 +7,6 @@ import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @@ -19,7 +18,7 @@ import java.util.Map; import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { - SeededBuilder getBiomeProviderBuilder(); + BiomeProvider getBiomeProviderBuilder(); CheckedRegistry getOrCreateRegistry(Type clazz); default CheckedRegistry getOrCreateRegistry(Class clazz) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java deleted file mode 100644 index 80276342f..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.dfsek.terra.api.util.seeded; - -@FunctionalInterface -public interface SeededBuilder { - T build(long seed); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 3117208f2..15d66e5ca 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -30,7 +30,6 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @@ -84,7 +83,7 @@ public class ConfigPackImpl implements ConfigPack { private final Set addons; - private final SeededBuilder seededBiomeProvider; + private final BiomeProvider seededBiomeProvider; private final Map, CheckedRegistry>> registryMap = new HashMap<>(); @@ -125,7 +124,6 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, configuration); seededBiomeProvider = packPostTemplate.getProviderBuilder(); - seededBiomeProvider.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); } catch(FileNotFoundException e) { throw new LoadException("No pack.yml file found in " + folder.getAbsolutePath(), e); @@ -178,7 +176,6 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.load(packPostTemplate, configuration); seededBiomeProvider = packPostTemplate.getProviderBuilder(); - seededBiomeProvider.build(0); // Build dummy provider to catch errors at load time. checkDeadEntries(main); } catch(IOException e) { throw new LoadException("Unable to load pack.yml from ZIP file", e); @@ -295,7 +292,7 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public SeededBuilder getBiomeProviderBuilder() { + public BiomeProvider getBiomeProviderBuilder() { return seededBiomeProvider; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index eea9d85ac..e0e220e80 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,14 +2,13 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") - private SeededBuilder providerBuilder; + private BiomeProvider providerBuilder; - public SeededBuilder getProviderBuilder() { + public BiomeProvider getProviderBuilder() { return providerBuilder; } } From 9673ab8ce1e9679cce6ed3a58c62ee1542ed9a89 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:51:38 -0700 Subject: [PATCH 0275/1529] cleanup --- .../java/com/dfsek/terra/config/pack/WorldConfigImpl.java | 2 +- .../com/dfsek/terra/fabric/generation/TerraBiomeSource.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 33b97e3a4..1b13aacdd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -30,7 +30,7 @@ public class WorldConfigImpl implements WorldConfig { pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); - this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); + this.provider = pack.getBiomeProviderBuilder(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 56c8caf8b..f054a0c20 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -28,7 +28,7 @@ public class TerraBiomeSource extends BiomeSource { private final Registry biomeRegistry; private final long seed; - private final BiomeProvider grid; + private final BiomeProvider provider; private final ConfigPack pack; public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { @@ -37,7 +37,7 @@ public class TerraBiomeSource extends BiomeSource { .collect(Collectors.toList())); this.biomeRegistry = biomes; this.seed = seed; - this.grid = pack.getBiomeProviderBuilder().build(seed); + this.provider = pack.getBiomeProviderBuilder(); this.pack = pack; } @@ -53,7 +53,7 @@ public class TerraBiomeSource extends BiomeSource { @Override public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) { - TerraBiome biome = grid.getBiome(biomeX << 2, biomeZ << 2, seed); + TerraBiome biome = provider.getBiome(biomeX << 2, biomeZ << 2, seed); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } } From 165642806c6d913264e56aacfa9b5e2cb5ccdea7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 21:57:53 -0700 Subject: [PATCH 0276/1529] register cellular enum loaders --- .../src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 750a8f9cb..68420f7c0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -17,6 +17,7 @@ import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractal import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate; +import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2SSampler; @@ -60,6 +61,8 @@ public class NoiseAddon extends TerraAddon implements EventListener { event.getPack() .applyLoader(NoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) + .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) + .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) From e7af30350b7758c41506e13dc458dc9c84cdc085 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:03:12 -0700 Subject: [PATCH 0277/1529] StageBuilderLoader -> StageLoader --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 6 ++---- .../stage/{StageBuilderLoader.java => StageLoader.java} | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/{StageBuilderLoader.java => StageLoader.java} (97%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 44b4d6c3d..2c91c1bad 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderBuilderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.SourceLoader; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageLoader; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; @@ -26,8 +26,6 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -import java.lang.reflect.Type; - @Addon("biome-provider-pipeline") @Author("Terra") @Version("1.0.0") @@ -45,7 +43,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) { event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) - .applyLoader(Stage.class, new StageBuilderLoader()) + .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) .applyLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java similarity index 97% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java index 4395a946e..8791c5090 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java @@ -17,7 +17,7 @@ import java.lang.reflect.AnnotatedType; import java.util.Map; @SuppressWarnings("unchecked") -public class StageBuilderLoader implements TypeLoader { +public class StageLoader implements TypeLoader { @Override public Stage load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { Map raw = (Map) c; From 4dc04131f447e394df5798f18e3d17915be78e99 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:03:41 -0700 Subject: [PATCH 0278/1529] BiomeProviderBuilderLoader -> BiomeProviderLoader --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 4 ++-- ...omeProviderBuilderLoader.java => BiomeProviderLoader.java} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/{BiomeProviderBuilderLoader.java => BiomeProviderLoader.java} (87%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 2c91c1bad..ef6ef1b31 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderBuilderLoader; +import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.SourceLoader; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageLoader; @@ -54,6 +54,6 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) .applyLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderBuilderLoader()); + .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java similarity index 87% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index d23154347..924d40ff6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderBuilderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; -public class BiomeProviderBuilderLoader implements TypeLoader { +public class BiomeProviderLoader implements TypeLoader { @Override public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { return loader.loadType(BiomePipelineTemplate.class, c).get(); // TODO: actually implement this lol From 04d78c1e32c54a58418075cdb32b38301bf69753 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:21:49 -0700 Subject: [PATCH 0279/1529] fix config loading issues --- .../biome/pipeline/BiomePipelineAddon.java | 22 ++++++++++++------- .../pipeline/config/BiomeProviderLoader.java | 4 +++- .../biome/pipeline/config/SourceLoader.java | 3 ++- .../pipeline/config/stage/StageLoader.java | 17 +++++++++----- .../mutator/BorderListMutatorTemplate.java | 2 +- .../stage/mutator/BorderMutatorTemplate.java | 2 +- .../stage/mutator/MutatorStageTemplate.java | 14 ++++++------ .../mutator/ReplaceListMutatorTemplate.java | 2 +- .../stage/mutator/ReplaceMutatorTemplate.java | 2 +- .../stage/mutator/SmoothMutatorTemplate.java | 2 +- 10 files changed, 42 insertions(+), 28 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index ef6ef1b31..c8312604b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -12,6 +12,12 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorT import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; +import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.TerraPlugin; @@ -46,14 +52,14 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(NoiseSourceTemplate.class, NoiseSourceTemplate::new) - .applyLoader(ReplaceMutatorTemplate.class, ReplaceMutatorTemplate::new) - .applyLoader(BorderMutatorTemplate.class, BorderMutatorTemplate::new) - .applyLoader(BorderListMutatorTemplate.class, BorderListMutatorTemplate::new) - .applyLoader(ReplaceListMutatorTemplate.class, ReplaceListMutatorTemplate::new) - .applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new) - .applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new) - .applyLoader(BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(RandomSource.class, NoiseSourceTemplate::new) + .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) + .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) + .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) + .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) + .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) + .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) + .applyLoader(StandardBiomeProvider.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index 924d40ff6..b6afe08f9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -3,6 +3,8 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; @@ -10,6 +12,6 @@ import java.lang.reflect.AnnotatedType; public class BiomeProviderLoader implements TypeLoader { @Override public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadType(BiomePipelineTemplate.class, c).get(); // TODO: actually implement this lol + return loader.loadType(StandardBiomeProvider.class, c); // TODO: actually implement this lol } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java index 2031486d7..83b40f880 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; @@ -17,7 +18,7 @@ public class SourceLoader implements TypeLoader { BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); if(type == BiomeSource.Type.NOISE) { - return loader.loadType(NoiseSourceTemplate.class, source).get(); + return loader.loadType(RandomSource.class, source); } throw new LoadException("No such loader type: " + type); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java index 8791c5090..6805f4fcb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java @@ -10,6 +10,11 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorT import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; @@ -35,20 +40,20 @@ public class StageLoader implements TypeLoader { if(entry.getKey().equals("expand")) { ExpanderStage.Type stageType = loader.loadType(ExpanderStage.Type.class, mutator.get("type")); if(stageType.equals(ExpanderStage.Type.FRACTAL)) { - return loader.loadType(ExpanderStageTemplate.class, mutator).get(); + return loader.loadType(ExpanderStage.class, mutator); } else throw new LoadException("No such expander \"" + stageType + "\""); } else if(entry.getKey().equals("mutate")) { switch(loader.loadType(MutatorStage.Type.class, mutator.get("type"))) { case SMOOTH: - return loader.loadType(SmoothMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(SmoothMutator.class, mutator)); case REPLACE: - return loader.loadType(ReplaceMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(ReplaceMutator.class, mutator)); case REPLACE_LIST: - return loader.loadType(ReplaceListMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(ReplaceListMutator.class, mutator)); case BORDER: - return loader.loadType(BorderMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(BorderMutator.class, mutator)); case BORDER_LIST: - return loader.loadType(BorderListMutatorTemplate.class, mutator).get(); + return new MutatorStage(loader.loadType(BorderListMutator.class, mutator)); default: throw new LoadException("No such mutator type \"" + mutator.get("type")); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 3f595953d..9ced2ae5a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -24,7 +24,7 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 82a12f596..3bf37de7d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -18,7 +18,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new BorderMutator(from, replace, noise, to); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index 8084ee894..285b55c93 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -1,15 +1,15 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.noise.NoiseSampler; -public abstract class MutatorStageTemplate extends StageTemplate { - public abstract BiomeMutator getMutator(); +public abstract class MutatorStageTemplate implements ObjectTemplate { + @Value("noise") + protected NoiseSampler noise; @Override - public Stage get() { - return new MutatorStage(getMutator()); - } + public abstract BiomeMutator get(); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 1a450c8a0..07d60fb56 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -20,7 +20,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private Map> replace; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 24cd6c5b1..7659a0478 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -15,7 +15,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private ProbabilityCollection to; @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new ReplaceMutator(from, to, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index c1eb81c45..20f98e993 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator getMutator() { + public BiomeMutator get() { return new SmoothMutator(noise); } } From f9a199f177db278d4ed895b18635138ce056d237 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:22:24 -0700 Subject: [PATCH 0280/1529] BiomePipelineImpl -> BiomePipeline --- .../{BiomePipelineImpl.java => BiomePipeline.java} | 9 ++++----- .../addons/biome/pipeline/StandardBiomeProvider.java | 5 ++--- .../biome/pipeline/config/BiomePipelineTemplate.java | 6 +++--- .../biome/pipeline/config/BiomeProviderLoader.java | 1 - 4 files changed, 9 insertions(+), 12 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{BiomePipelineImpl.java => BiomePipeline.java} (84%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java similarity index 84% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java index a60b9d479..e16920325 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -7,15 +7,14 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; -public class BiomePipelineImpl { +public class BiomePipeline { private final BiomeSource source; private final List stages; private final int size; private final int init; - private BiomePipelineImpl(BiomeSource source, List stages, int size, int init) { + private BiomePipeline(BiomeSource source, List stages, int size, int init) { this.source = source; this.stages = stages; this.size = size; @@ -50,12 +49,12 @@ public class BiomePipelineImpl { expand = init; } - public BiomePipelineImpl build(BiomeSource source) { + public BiomePipeline build(BiomeSource source) { for(Stage stage : stages) { if(stage.isExpansion()) expand = expand * 2 - 1; } - return new BiomePipelineImpl(source, stages, expand, init); + return new BiomePipeline(source, stages, expand, init); } public BiomePipelineBuilder addStage(Stage stage) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java index b2c4c0687..9c5a5ba31 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.google.common.cache.CacheBuilder; @@ -14,12 +13,12 @@ import org.jetbrains.annotations.NotNull; public class StandardBiomeProvider implements BiomeProvider { private final LoadingCache holderCache; - private final BiomePipelineImpl pipeline; + private final BiomePipeline pipeline; private final int resolution; private final NoiseSampler mutator; private final double noiseAmp; - public StandardBiomeProvider(BiomePipelineImpl pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { + public StandardBiomeProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 6443ccb10..b72a0ec65 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.TerraPlugin; @@ -30,9 +30,9 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { @Override public BiomeProvider get() { - BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); + BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); - BiomePipelineImpl pipeline = biomePipelineBuilder.build(source); + BiomePipeline pipeline = biomePipelineBuilder.build(source); return new StandardBiomeProvider(pipeline, main, resolution, blend, blendAmp); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index b6afe08f9..6ef227727 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineImpl; import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; From a8d4354851e0d6121d61429d884998d8fb9e2bfa Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:23:03 -0700 Subject: [PATCH 0281/1529] StandardBiomeProvider -> BiomePipelineProvider --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 2 +- ...{StandardBiomeProvider.java => BiomePipelineProvider.java} | 4 ++-- .../addons/biome/pipeline/config/BiomePipelineTemplate.java | 4 ++-- .../addons/biome/pipeline/config/BiomeProviderLoader.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{StandardBiomeProvider.java => BiomePipelineProvider.java} (95%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index c8312604b..0eb47fda7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -59,7 +59,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) - .applyLoader(StandardBiomeProvider.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java similarity index 95% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java index 9c5a5ba31..21aa51e6e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/StandardBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -11,14 +11,14 @@ import com.google.common.cache.LoadingCache; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -public class StandardBiomeProvider implements BiomeProvider { +public class BiomePipelineProvider implements BiomeProvider { private final LoadingCache holderCache; private final BiomePipeline pipeline; private final int resolution; private final NoiseSampler mutator; private final double noiseAmp; - public StandardBiomeProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { + public BiomePipelineProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index b72a0ec65..a9d4a04eb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; -import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -33,6 +33,6 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); BiomePipeline pipeline = biomePipelineBuilder.build(source); - return new StandardBiomeProvider(pipeline, main, resolution, blend, blendAmp); + return new BiomePipelineProvider(pipeline, main, resolution, blend, blendAmp); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index 6ef227727..2d181efe7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.StandardBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.lang.reflect.AnnotatedType; @@ -11,6 +11,6 @@ import java.lang.reflect.AnnotatedType; public class BiomeProviderLoader implements TypeLoader { @Override public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadType(StandardBiomeProvider.class, c); // TODO: actually implement this lol + return loader.loadType(BiomePipelineProvider.class, c); // TODO: actually implement this lol } } From 4c25a8f909e1035ca245482f3aef40025c21002d Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 19 Jul 2021 22:23:32 -0700 Subject: [PATCH 0282/1529] RandomSource -> NoiseSource --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 4 ++-- .../addons/biome/pipeline/config/NoiseSourceTemplate.java | 4 ++-- .../terra/addons/biome/pipeline/config/SourceLoader.java | 4 ++-- .../pipeline/source/{RandomSource.java => NoiseSource.java} | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/{RandomSource.java => NoiseSource.java} (80%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 0eb47fda7..fec99804d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -17,7 +17,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; +import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.TerraPlugin; @@ -52,7 +52,7 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(RandomSource.class, NoiseSourceTemplate::new) + .applyLoader(NoiseSource.class, NoiseSourceTemplate::new) .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index c9ea1dd31..ab425be7b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; +import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -16,6 +16,6 @@ public class NoiseSourceTemplate extends SourceTemplate { @Override public BiomeSource get() { - return new RandomSource(biomes, noise); + return new NoiseSource(biomes, noise); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java index 83b40f880..792f5455b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; +import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import java.lang.reflect.AnnotatedType; @@ -18,7 +18,7 @@ public class SourceLoader implements TypeLoader { BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); if(type == BiomeSource.Type.NOISE) { - return loader.loadType(RandomSource.class, source); + return loader.loadType(NoiseSource.class, source); } throw new LoadException("No such loader type: " + type); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java similarity index 80% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java index 41896d03f..9edc2859f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/RandomSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java @@ -5,11 +5,11 @@ import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; -public class RandomSource implements BiomeSource { +public class NoiseSource implements BiomeSource { private final ProbabilityCollection biomes; private final NoiseSampler sampler; - public RandomSource(ProbabilityCollection biomes, NoiseSampler sampler) { + public NoiseSource(ProbabilityCollection biomes, NoiseSampler sampler) { this.biomes = biomes; this.sampler = sampler; } From 7a554a1fdb0d7b716633c74eb20acf2f43ddd799 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 15:00:46 -0700 Subject: [PATCH 0283/1529] create feature config addon module --- common/addons/config-feature/build.gradle.kts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/config-feature/build.gradle.kts diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/config-feature/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From c1dfcafa1d0feedcd25b869045e043f445296458 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 15:06:23 -0700 Subject: [PATCH 0284/1529] create base FeatureAddon --- .../terra/addons/feature/FeatureAddon.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java new file mode 100644 index 000000000..765420f61 --- /dev/null +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.feature; + +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.injection.annotations.Inject; + +@Addon("config-feature") +@Version("1.0.0") +@Author("Terra") +public class FeatureAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } +} From d807abb1656e3d328f88b7bbf2ab5055f1744ee6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 15:09:51 -0700 Subject: [PATCH 0285/1529] pass pack to ConfigType#registrySupplier --- .../java/com/dfsek/terra/addons/biome/BiomeConfigType.java | 4 ++-- .../java/com/dfsek/terra/addons/flora/FloraConfigType.java | 4 ++-- .../main/java/com/dfsek/terra/addons/ore/OreConfigType.java | 4 ++-- .../com/dfsek/terra/addons/palette/PaletteConfigType.java | 4 ++-- .../main/java/com/dfsek/terra/addons/tree/TreeConfigType.java | 4 ++-- .../src/main/java/com/dfsek/terra/api/config/ConfigType.java | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 7616a3e65..9e1e95ee4 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -39,8 +39,8 @@ public class BiomeConfigType implements ConfigType { } @Override - public Supplier> registrySupplier() { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + public Supplier> registrySupplier(ConfigPack pack) { + return () -> this.pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(c.equals("SELF")) return null; TerraBiome obj = registry.get((String) c); if(obj == null) diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index f0e4044c9..d8d34164b 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -36,7 +36,7 @@ public class FloraConfigType implements ConfigType { } @Override - public Supplier> registrySupplier() { - return pack.getRegistryFactory()::create; + public Supplier> registrySupplier(ConfigPack pack) { + return this.pack.getRegistryFactory()::create; } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index 1a6fd9695..cd17b4212 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -35,7 +35,7 @@ public class OreConfigType implements ConfigType { } @Override - public Supplier> registrySupplier() { - return pack.getRegistryFactory()::create; + public Supplier> registrySupplier(ConfigPack pack) { + return this.pack.getRegistryFactory()::create; } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 49c77e386..0455910de 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -41,8 +41,8 @@ public class PaletteConfigType implements ConfigType { } @Override - public Supplier> registrySupplier() { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + public Supplier> registrySupplier(ConfigPack pack) { + return () -> this.pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(((String) c).startsWith("BLOCK:")) return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. Palette obj = registry.get((String) c); diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java index b6da598d1..85a79f88f 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -35,7 +35,7 @@ public class TreeConfigType implements ConfigType { } @Override - public Supplier> registrySupplier() { - return pack.getRegistryFactory()::create; + public Supplier> registrySupplier(ConfigPack pack) { + return this.pack.getRegistryFactory()::create; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 482bfc8d4..15ad2541d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -13,5 +13,5 @@ public interface ConfigType { TypeKey getTypeClass(); - Supplier> registrySupplier(); + Supplier> registrySupplier(ConfigPack pack); } From 0ff6a9cce1ea9d1d693a89578b0be8b6fc86f7e0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 15:12:06 -0700 Subject: [PATCH 0286/1529] dont use pack instance where unneeded --- .../java/com/dfsek/terra/addons/biome/BiomeConfigType.java | 4 +--- .../main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 2 +- .../java/com/dfsek/terra/addons/flora/FloraConfigType.java | 7 +------ .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 2 +- .../java/com/dfsek/terra/addons/ore/OreConfigType.java | 7 +------ .../java/com/dfsek/terra/addons/palette/PaletteAddon.java | 2 +- .../com/dfsek/terra/addons/palette/PaletteConfigType.java | 6 ++---- .../main/java/com/dfsek/terra/addons/tree/TreeAddon.java | 2 +- .../java/com/dfsek/terra/addons/tree/TreeConfigType.java | 6 +----- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 2 +- 10 files changed, 11 insertions(+), 29 deletions(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 9e1e95ee4..9f9786b07 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -13,13 +13,11 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.function.Supplier; public class BiomeConfigType implements ConfigType { - private final ConfigPack pack; private final BiomeFactory factory; public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() {}; public BiomeConfigType(ConfigPack pack) { - this.pack = pack; this.factory = new BiomeFactory(pack); } @@ -40,7 +38,7 @@ public class BiomeConfigType implements ConfigType { @Override public Supplier> registrySupplier(ConfigPack pack) { - return () -> this.pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(c.equals("SELF")) return null; TerraBiome obj = registry.get((String) c); if(obj == null) diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 6dd284243..101a6aa90 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -25,7 +25,7 @@ public class FloraAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); + event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index d8d34164b..1fc80a9b4 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -12,14 +12,9 @@ import java.util.function.Supplier; public class FloraConfigType implements ConfigType { private final FloraFactory factory = new FloraFactory(); - private final ConfigPack pack; public static final TypeKey FLORA_TYPE_TOKEN = new TypeKey<>(){}; - public FloraConfigType(ConfigPack pack) { - this.pack = pack; - } - @Override public FloraTemplate getTemplate(ConfigPack pack, TerraPlugin main) { return new FloraTemplate(); @@ -37,6 +32,6 @@ public class FloraConfigType implements ConfigType { @Override public Supplier> registrySupplier(ConfigPack pack) { - return this.pack.getRegistryFactory()::create; + return pack.getRegistryFactory()::create; } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 3ad6c7474..16ec7e418 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -25,7 +25,7 @@ public class OreAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1); + event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index cd17b4212..e284b41d3 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -12,13 +12,8 @@ import java.util.function.Supplier; public class OreConfigType implements ConfigType { private final OreFactory factory = new OreFactory(); - private final ConfigPack pack; public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>(){}; - public OreConfigType(ConfigPack pack) { - this.pack = pack; - } - @Override public OreTemplate getTemplate(ConfigPack pack, TerraPlugin main) { return new OreTemplate(); @@ -36,6 +31,6 @@ public class OreConfigType implements ConfigType { @Override public Supplier> registrySupplier(ConfigPack pack) { - return this.pack.getRegistryFactory()::create; + return pack.getRegistryFactory()::create; } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 5e3e2bb5c..45817a62b 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -24,7 +24,7 @@ public class PaletteAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().registerConfigType(new PaletteConfigType(event.getPack(), main), "PALETTE", 2); + event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 0455910de..2a3c821be 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -15,13 +15,11 @@ import java.util.function.Supplier; public class PaletteConfigType implements ConfigType { private final PaletteFactory factory = new PaletteFactory(); - private final ConfigPack pack; private final TerraPlugin main; public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>(){}; - public PaletteConfigType(ConfigPack pack, TerraPlugin main) { - this.pack = pack; + public PaletteConfigType(TerraPlugin main) { this.main = main; } @@ -42,7 +40,7 @@ public class PaletteConfigType implements ConfigType { @Override public Supplier> registrySupplier(ConfigPack pack) { - return () -> this.pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { + return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(((String) c).startsWith("BLOCK:")) return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. Palette obj = registry.get((String) c); diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 2f9020275..053f07cfc 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -23,6 +23,6 @@ public class TreeAddon extends TerraAddon implements EventListener { } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); + event.getPack().registerConfigType(new TreeConfigType(), "TREE", 2); } } diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java index 85a79f88f..179463470 100644 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java +++ b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -12,12 +12,8 @@ import java.util.function.Supplier; public class TreeConfigType implements ConfigType { private final TreeFactory factory = new TreeFactory(); - private final ConfigPack pack; public static final TypeKey TREE_TYPE_TOKEN = new TypeKey<>(){}; - public TreeConfigType(ConfigPack pack) { - this.pack = pack; - } @Override public TreeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { @@ -36,6 +32,6 @@ public class TreeConfigType implements ConfigType { @Override public Supplier> registrySupplier(ConfigPack pack) { - return this.pack.getRegistryFactory()::create; + return pack.getRegistryFactory()::create; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 15d66e5ca..37883b349 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -191,7 +191,7 @@ public class ConfigPackImpl implements ConfigPack { @SuppressWarnings("unchecked") private ConfigTypeRegistry createRegistry() { return new ConfigTypeRegistry(main, (id, configType) -> { - OpenRegistry openRegistry = configType.registrySupplier().get(); + OpenRegistry openRegistry = configType.registrySupplier(this).get(); if(registryMap.containsKey(configType.getTypeClass().getType())) { // Someone already registered something; we need to copy things to the new registry. registryMap.get(configType.getTypeClass().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); } From 3a7edcb1e4e2e77cd435eb8087224c9552c584dc Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 15:18:03 -0700 Subject: [PATCH 0287/1529] feature configuration --- .../addons/feature/ConfiguredFeature.java | 39 +++++++++++++++ .../terra/addons/feature/FeatureAddon.java | 5 ++ .../addons/feature/FeatureConfigType.java | 37 ++++++++++++++ .../terra/addons/feature/FeatureFactory.java | 13 +++++ .../terra/addons/feature/FeatureTemplate.java | 50 +++++++++++++++++++ 5 files changed, 144 insertions(+) create mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java create mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java create mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java create mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java new file mode 100644 index 000000000..c3c5cae2d --- /dev/null +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.feature; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.structure.feature.Feature; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.world.World; + +public class ConfiguredFeature implements Feature { + private final ProbabilityCollection structures; + + private final NoiseSampler structureSelector; + private final Distributor distributor; + private final Locator locator; + + public ConfiguredFeature(ProbabilityCollection structures, NoiseSampler structureSelector, Distributor distributor, Locator locator) { + this.structures = structures; + this.structureSelector = structureSelector; + this.distributor = distributor; + this.locator = locator; + } + + @Override + public Structure getStructure(World world, int x, int y, int z) { + return structures.get(structureSelector, x, y, z, world.getSeed()); + } + + @Override + public Distributor getDistributor() { + return distributor; + } + + @Override + public Locator getLocator() { + return locator; + } +} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 765420f61..144f2088c 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -6,6 +6,7 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-feature") @@ -19,4 +20,8 @@ public class FeatureAddon extends TerraAddon implements EventListener { public void initialize() { main.getEventManager().registerListener(this, this); } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2); + } } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java new file mode 100644 index 000000000..3d2c3e709 --- /dev/null +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java @@ -0,0 +1,37 @@ +package com.dfsek.terra.addons.feature; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.structure.feature.Feature; +import com.dfsek.terra.api.util.reflection.TypeKey; + +import java.util.function.Supplier; + +public class FeatureConfigType implements ConfigType { + public static final TypeKey FEATURE_TYPE_KEY = new TypeKey<>() {}; + + private final FeatureFactory factory = new FeatureFactory(); + + @Override + public FeatureTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new FeatureTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeClass() { + return FEATURE_TYPE_KEY; + } + + @Override + public Supplier> registrySupplier(ConfigPack pack) { + return pack.getRegistryFactory()::create; + } +} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java new file mode 100644 index 000000000..83f07ecc5 --- /dev/null +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.feature; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.structure.feature.Feature; + +public class FeatureFactory implements ConfigFactory { + @Override + public Feature build(FeatureTemplate config, TerraPlugin main) throws LoadException { + return new ConfiguredFeature(config.getStructures(), config.getStructureNoise(), config.getDistributor(), config.getLocator()); + } +} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java new file mode 100644 index 000000000..4adfa8736 --- /dev/null +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java @@ -0,0 +1,50 @@ +package com.dfsek.terra.addons.feature; + +import com.dfsek.tectonic.annotations.Final; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.feature.Distributor; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + +public class FeatureTemplate implements AbstractableTemplate { + @Value("id") + @Final + private String id; + + @Value("distributor") + private Distributor distributor; + + @Value("locator") + private Locator locator; + + @Value("structures.distribution") + private NoiseSampler structureNoise; + + @Value("structures.structures") + private ProbabilityCollection structures; + + @Override + public String getID() { + return id; + } + + public Distributor getDistributor() { + return distributor; + } + + public Locator getLocator() { + return locator; + } + + public NoiseSampler getStructureNoise() { + return structureNoise; + } + + public ProbabilityCollection getStructures() { + return structures; + } +} From c8bb9bbfeb9727f3f217c60d48809a3acff07df3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 16:05:54 -0700 Subject: [PATCH 0288/1529] automatically register loader for Supplier> --- .../GenericTemplateSupplierLoader.java | 38 +++++++++++++++++++ .../terra/config/pack/ConfigPackImpl.java | 29 +++++++++++++- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java new file mode 100644 index 000000000..f21a560ba --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.config.loaders; + +import com.dfsek.tectonic.config.MapConfiguration; +import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.registry.Registry; + +import java.lang.reflect.AnnotatedType; +import java.util.Map; +import java.util.function.Supplier; + +public class GenericTemplateSupplierLoader implements TypeLoader { + private final Registry>> registry; + + public GenericTemplateSupplierLoader(Registry>> registry) { + this.registry = registry; + } + + @SuppressWarnings("unchecked") + @Override + public T load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + Map map = (Map) c; + try { + if(!registry.contains((String) map.get("type"))) { + throw new LoadException("No such entry: " + map.get("type")); + } + ObjectTemplate template = registry.get(((String) map.get("type"))).get(); + loader.load(template, new MapConfiguration(map)); + return template.get(); + } catch(ConfigException e) { + throw new LoadException("Unable to load object: ", e); + } + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 37883b349..ec945ff43 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -18,18 +18,19 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.events.config.type.ConfigTypePostLoadEvent; import com.dfsek.terra.api.event.events.config.type.ConfigTypePreLoadEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; -import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @@ -37,6 +38,7 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; +import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -50,6 +52,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collections; @@ -304,6 +307,28 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerLoader(c, registry); abstractConfigLoader.registerLoader(c, registry); main.getDebugLogger().info("Registered loader for registry of class " + ReflectionUtil.typeToString(c)); + + if(type instanceof ParameterizedType) { + ParameterizedType param = (ParameterizedType) type; + Type base = param.getRawType(); + if(base instanceof Class // should always be true but we'll check anyways + && Supplier.class.isAssignableFrom((Class) base)) { // If it's a supplier + Type supplied = param.getActualTypeArguments()[0]; // Grab the supplied type + if(supplied instanceof ParameterizedType) { + ParameterizedType suppliedParam = (ParameterizedType) supplied; + Type suppliedBase = suppliedParam.getRawType(); + if(suppliedBase instanceof Class // should always be true but we'll check anyways + && ObjectTemplate.class.isAssignableFrom((Class) suppliedBase)) { + Type templateType = suppliedParam.getActualTypeArguments()[0]; + GenericTemplateSupplierLoader loader = new GenericTemplateSupplierLoader<>((Registry>>>>) registry); + selfLoader.registerLoader(templateType, loader); + abstractConfigLoader.registerLoader(templateType, loader); + main.getDebugLogger().info("Registered template loader for registry of class " + ReflectionUtil.typeToString(templateType)); + } + } + } + } + return ImmutablePair.of(registry, new CheckedRegistryImpl<>(registry)); }).getRight(); } From 7b1853823c1ce9d94653bf9dac370bc9a345a69d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 16:08:58 -0700 Subject: [PATCH 0289/1529] remove unneeded NoiseSamplerBuilderLoader --- .../dfsek/terra/addons/noise/NoiseAddon.java | 7 ---- .../config/NoiseSamplerBuilderLoader.java | 38 ------------------- 2 files changed, 45 deletions(-) delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 68420f7c0..0af3b2782 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; -import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; import com.dfsek.terra.addons.noise.config.templates.KernelTemplate; @@ -59,14 +58,8 @@ public class NoiseAddon extends TerraAddon implements EventListener { public void packPreLoad(ConfigPackPreLoadEvent event) { CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); event.getPack() - .applyLoader(NoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry)) - .applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new) .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new) - .applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new) - .applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new) - .applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new) .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java deleted file mode 100644 index 8d057043e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/NoiseSamplerBuilderLoader.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.noise.config; - -import com.dfsek.tectonic.config.MapConfiguration; -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.registry.Registry; - -import java.lang.reflect.AnnotatedType; -import java.util.Map; -import java.util.function.Supplier; - -@SuppressWarnings("unchecked") -public class NoiseSamplerBuilderLoader implements TypeLoader { - private final Registry>> noiseRegistry; - - public NoiseSamplerBuilderLoader(Registry>> noiseRegistry) { - this.noiseRegistry = noiseRegistry; - } - - @Override - public NoiseSampler load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - Map map = (Map) c; - try { - if(!noiseRegistry.contains((String) map.get("type"))) { - throw new LoadException("No such noise function: " + map.get("type")); - } - ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type"))).get(); - loader.load(normalizerTemplate, new MapConfiguration(map)); - return normalizerTemplate.get(); - } catch(ConfigException e) { - throw new LoadException("Unable to load noise function: ", e); - } - } -} From d6e2acce38ac51d0c5d7f22795943c0be2fb0560 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 17:34:33 -0700 Subject: [PATCH 0290/1529] make salt long --- .../config/NoiseDistributorTemplate.java | 7 ++++++- .../distributor/distributors/NoiseDistributor.java | 6 ++++-- .../templates/noise/CellularNoiseTemplate.java | 1 + .../config/templates/noise/GaborNoiseTemplate.java | 1 + .../config/templates/noise/NoiseTemplate.java | 3 ++- .../templates/noise/SimpleNoiseTemplate.java | 1 + .../addons/noise/samplers/noise/NoiseFunction.java | 14 ++++++++++++-- 7 files changed, 27 insertions(+), 6 deletions(-) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index e87ce15c2..b0e47dc42 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.feature.distributor.config; +import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; @@ -10,8 +11,12 @@ public class NoiseDistributorTemplate implements ObjectTemplate { @Value("distribution") private NoiseSampler noise; + @Value("threshold") + @Default + private double threshold = 0; + @Override public Distributor get() { - return new NoiseDistributor(noise); + return new NoiseDistributor(noise, threshold); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java index b97657e4d..876beb2aa 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java @@ -6,12 +6,14 @@ import com.dfsek.terra.api.structure.feature.Distributor; public class NoiseDistributor implements Distributor { private final NoiseSampler sampler; - public NoiseDistributor(NoiseSampler sampler) { + private final double threshold; + public NoiseDistributor(NoiseSampler sampler, double threshold) { this.sampler = sampler; + this.threshold = threshold; } @Override public boolean matches(int x, int z, long seed) { - return sampler.getNoiseSeeded(seed, x, z) > 0; + return sampler.getNoiseSeeded(seed, x, z) > threshold; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index eb00a599b..a84d95cd0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -33,6 +33,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { sampler.setJitterModifier(cellularJitter); sampler.setReturnType(cellularReturnType); sampler.setDistanceFunction(cellularDistanceFunction); + sampler.setSalt(salt); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index 8cbb381b2..46aacdbf5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -35,6 +35,7 @@ public class GaborNoiseTemplate extends NoiseTemplate { gaborNoiseSampler.setDeviation(deviation); gaborNoiseSampler.setImpulsesPerKernel(impulses); gaborNoiseSampler.setFrequency0(f0); + gaborNoiseSampler.setSalt(salt); return gaborNoiseSampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index 4b9e6fad5..691249d7c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { @@ -13,5 +14,5 @@ public abstract class NoiseTemplate extends SamplerTemp @Value("salt") @Default - protected int salt = 0; + protected long salt = 0; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index 2e0c338d7..915b06dcc 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -17,6 +17,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate { public NoiseSampler get() { NoiseFunction sampler = samplerSupplier.get(); sampler.setFrequency(frequency); + sampler.setSalt(salt); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index dec509e4a..c5b20abe6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -21,6 +21,16 @@ public abstract class NoiseFunction implements NoiseSampler { protected double frequency = 0.02d; + protected long salt; + + public void setSalt(long salt) { + this.salt = salt; + } + + public NoiseFunction() { + this.salt = 0; + } + protected static int fastFloor(double f) { return f >= 0 ? (int) f : (int) f - 1; } @@ -119,12 +129,12 @@ public abstract class NoiseFunction implements NoiseSampler { @Override public double getNoiseSeeded(long seed, double x, double y) { - return getNoiseRaw(seed, x * frequency, y * frequency); + return getNoiseRaw(seed + salt, x * frequency, y * frequency); } @Override public double getNoiseSeeded(long seed, double x, double y, double z) { - return getNoiseRaw(seed, x * frequency, y * frequency, z * frequency); + return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency); } public abstract double getNoiseRaw(long seed, double x, double y); From 137206884c95c8223e5c84f01e50be0429576aef Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 19:43:14 -0700 Subject: [PATCH 0291/1529] create RandomLocator --- .../locator/locators/RandomLocator.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java new file mode 100644 index 000000000..792e5b88f --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.world.Column; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class RandomLocator implements Locator { + private final Range height; + + private final Range points; + + public RandomLocator(Range height, Range points) { + this.height = height; + this.points = points; + } + + @Override + public List getSuitableCoordinates(Column column) { + long seed = column.getWorld().getSeed(); + seed = 31 * seed + column.getX(); + seed = 31 * seed + column.getZ(); + + Random r = new Random(seed); + + int size = points.get(r); + + List results = new ArrayList<>(size); + for(int i = 0; i < size; i++) { + results.set(i, height.get(r)); + } + + return results; + } +} From 7b9a473275411b7d60803da932b9a37d02a60e86 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 19:48:00 -0700 Subject: [PATCH 0292/1529] create and register RandomLocatorTemplate --- .../addons/feature/locator/LocatorAddon.java | 2 ++ .../locator/config/RandomLocatorTemplate.java | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 3bddc8a80..0427d9dd4 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; @@ -33,5 +34,6 @@ public class LocatorAddon extends TerraAddon implements EventListener { public void onPackLoad(ConfigPackPreLoadEvent event) { CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); + locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java new file mode 100644 index 000000000..ca666e201 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.locators.RandomLocator; +import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; + +public class RandomLocatorTemplate implements ObjectTemplate { + @Value("height") + private Range height; + + @Value("amount") + private Range amount; + + @Override + public Locator get() { + return new RandomLocator(height, amount); + } +} From 6be4c0b7c685fee57a178e5d5a78cc5a88b4cfb2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 19:57:31 -0700 Subject: [PATCH 0293/1529] create and register PointSetDistributor --- .../feature/distributor/DistributorAddon.java | 7 ++++ .../config/PointSetDistributorTemplate.java | 19 +++++++++++ .../distributors/PointSetDistributor.java | 19 +++++++++++ .../feature/distributor/util/Point.java | 34 +++++++++++++++++++ .../distributor/util/PointTemplate.java | 17 ++++++++++ 5 files changed, 96 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 3b6f0d0f5..83a2bde8f 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -2,6 +2,9 @@ package com.dfsek.terra.addons.feature.distributor; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; +import com.dfsek.terra.addons.feature.distributor.config.PointSetDistributorTemplate; +import com.dfsek.terra.addons.feature.distributor.util.Point; +import com.dfsek.terra.addons.feature.distributor.util.PointTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -33,5 +36,9 @@ public class DistributorAddon extends TerraAddon implements EventListener { public void packPreLoad(ConfigPackPreLoadEvent event) { CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); + distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); + + event.getPack() + .applyLoader(Point.class, PointTemplate::new); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java new file mode 100644 index 000000000..a69b49a5e --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.distributor.distributors.PointSetDistributor; +import com.dfsek.terra.addons.feature.distributor.util.Point; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.Set; + +public class PointSetDistributorTemplate implements ObjectTemplate { + @Value("points") + private Set points; + + @Override + public Distributor get() { + return new PointSetDistributor(points); + } +} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java new file mode 100644 index 000000000..78f514513 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.feature.distributor.distributors; + +import com.dfsek.terra.addons.feature.distributor.util.Point; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.Set; + +public class PointSetDistributor implements Distributor { + private final Set points; + + public PointSetDistributor(Set points) { + this.points = points; + } + + @Override + public boolean matches(int x, int z, long seed) { + return points.contains(new Point(x, z)); + } +} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java new file mode 100644 index 000000000..cd7063db2 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.addons.feature.distributor.util; + +public class Point { + private final int x; + private final int z; + + private final int hash; + + public Point(int x, int z) { + this.x = x; + this.z = z; + this.hash = 31 * x + z; + } + + public int getX() { + return x; + } + + public int getZ() { + return z; + } + + @Override + public int hashCode() { + return hash; + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Point)) return false; + Point that = (Point) obj; + return this.x == that.x && this.z == that.z; + } +} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java new file mode 100644 index 000000000..600590c28 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.feature.distributor.util; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +public class PointTemplate implements ObjectTemplate { + @Value("x") + private int x; + + @Value("z") + private int z; + + @Override + public Point get() { + return new Point(x, z); + } +} From 1349d5b00ecba330426a3bdad4a4008edd01d21e Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 20:03:30 -0700 Subject: [PATCH 0294/1529] delete tree generation stage addon --- .../generation-stage-tree/build.gradle.kts | 45 ---------------- .../generation/tree/BiomeTreeTemplate.java | 19 ------- .../addons/generation/tree/BiomeTrees.java | 17 ------ .../generation/tree/TreeGenerationAddon.java | 38 ------------- .../addons/generation/tree/TreeLayer.java | 54 ------------------- .../generation/tree/TreeLayerTemplate.java | 27 ---------- .../addons/generation/tree/TreePopulator.java | 50 ----------------- 7 files changed, 250 deletions(-) delete mode 100644 common/addons/generation-stage-tree/build.gradle.kts delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java delete mode 100644 common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java diff --git a/common/addons/generation-stage-tree/build.gradle.kts b/common/addons/generation-stage-tree/build.gradle.kts deleted file mode 100644 index 07542d899..000000000 --- a/common/addons/generation-stage-tree/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies - -plugins { - `java-library` - `maven-publish` - idea -} - -configureCompilation() -configureDependencies() - -group = "com.dfsek.terra.common" - -dependencies { - "shadedApi"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") -} - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java deleted file mode 100644 index 964194095..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTreeTemplate.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.Collections; -import java.util.List; - -public class BiomeTreeTemplate implements ObjectTemplate { - @Value("trees") - @Default - private List trees = Collections.emptyList(); - - @Override - public BiomeTrees get() { - return new BiomeTrees(trees); - } -} diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java deleted file mode 100644 index bebade00b..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/BiomeTrees.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -import com.dfsek.terra.api.properties.Properties; - -import java.util.List; - -public class BiomeTrees implements Properties { - private final List trees; - - public BiomeTrees(List trees) { - this.trees = trees; - } - - public List getTrees() { - return trees; - } -} diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java deleted file mode 100644 index 852aac8cd..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeGenerationAddon.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -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.ConfigurationLoadEvent; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; - -@Addon("generation-stage-tree") -@Version("1.0.0") -@Author("Tree") -public class TreeGenerationAddon 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().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main)); - event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); - } - } -} diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java deleted file mode 100644 index 5b454d319..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayer.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Tree; - -public class TreeLayer { - protected final double density; - protected final Range level; - protected final ProbabilityCollection layer; - protected final NoiseSampler noise; - - public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { - this.density = density; - this.level = level; - this.layer = layer; - this.noise = noise; - } - - public NoiseSampler getNoise() { - return noise; - } - - public double getDensity() { - return density; - } - - public Range getLevel() { - return level; - } - - public ProbabilityCollection getLayer() { - return layer; - } - - public void place(Chunk chunk, Vector2 coords) { - Tree item = layer.get(noise, coords.getX(), coords.getZ(), chunk.getWorld().getSeed()); - BlockState current; - int cx = (chunk.getX()) << 4; - int cz = (chunk.getZ()) << 4; - for(int y : level) { - current = chunk.getBlock((int) coords.getX(), y, (int) coords.getZ()); - if(item.getSpawnable().contains(current.getBlockType())) { - item.plant(new Vector3((int) coords.getX() + cx, y+1, (int) coords.getZ() + cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode())); - } - } - } -} diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java deleted file mode 100644 index 3b6ba5b8a..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreeLayerTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.Tree; - -public class TreeLayerTemplate implements ObjectTemplate { - @Value("density") - private double density; - - @Value("y") - private Range y; - - @Value("items") - private ProbabilityCollection items; - - @Value("distribution") - private NoiseSampler distribution; - - @Override - public TreeLayer get() { - return new TreeLayer(density, y, items, distribution); - } -} diff --git a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java b/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java deleted file mode 100644 index 6328b3497..000000000 --- a/common/addons/generation-stage-tree/src/main/java/com/dfsek/terra/addons/generation/tree/TreePopulator.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.addons.generation.tree; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import java.util.Random; - - -public class TreePopulator implements TerraGenerationStage { - private final TerraPlugin main; - - public TreePopulator(TerraPlugin main) { - this.main = main; - } - - private static int offset(Random r, int i) { - return FastMath.min(FastMath.max(i + r.nextInt(3) - 1, 0), 15); - } - - @Override - @SuppressWarnings("try") - public void populate(@NotNull World world, @NotNull Chunk chunk) { - TerraWorld tw = main.getWorld(world); - try(ProfileFrame ignore = main.getProfiler().profile("tree")) { - if(tw.getConfig().disableTrees()) return; - - BiomeProvider provider = tw.getBiomeProvider(); - Random random = PopulationUtil.getRandom(chunk); - long seed = world.getSeed(); - for(int x = 0; x < 16; x += 2) { - for(int z = 0; z < 16; z += 2) { - for(TreeLayer layer : provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed).getContext().get(BiomeTrees.class).getTrees()) { - if(layer.getDensity() >= random.nextDouble() * 100) { - layer.place(chunk, new Vector2(offset(random, x), offset(random, z))); - } - } - } - } - } - } -} From e63d675549ec9a3e2b035c61c73fe88a613a2fb4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 20:04:00 -0700 Subject: [PATCH 0295/1529] delete tree config addon --- common/addons/config-tree/README.md | 3 -- common/addons/config-tree/build.gradle.kts | 45 ------------------- .../dfsek/terra/addons/tree/TreeAddon.java | 28 ------------ .../terra/addons/tree/TreeConfigType.java | 37 --------------- .../dfsek/terra/addons/tree/TreeFactory.java | 13 ------ .../dfsek/terra/addons/tree/TreeTemplate.java | 42 ----------------- .../terra/addons/tree/tree/TerraTree.java | 33 -------------- 7 files changed, 201 deletions(-) delete mode 100644 common/addons/config-tree/README.md delete mode 100644 common/addons/config-tree/build.gradle.kts delete mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java delete mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java delete mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java delete mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java delete mode 100644 common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java diff --git a/common/addons/config-tree/README.md b/common/addons/config-tree/README.md deleted file mode 100644 index a4244540e..000000000 --- a/common/addons/config-tree/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-tree - -Registers the default configuration for Terra Trees, `TREE`. \ No newline at end of file diff --git a/common/addons/config-tree/build.gradle.kts b/common/addons/config-tree/build.gradle.kts deleted file mode 100644 index 07542d899..000000000 --- a/common/addons/config-tree/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies - -plugins { - `java-library` - `maven-publish` - idea -} - -configureCompilation() -configureDependencies() - -group = "com.dfsek.terra.common" - -dependencies { - "shadedApi"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") -} - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java deleted file mode 100644 index 053f07cfc..000000000 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.tree; - -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.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; - -@Addon("config-tree") -@Author("Terra") -@Version("1.0.0") -public class TreeAddon 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().registerConfigType(new TreeConfigType(), "TREE", 2); - } -} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java deleted file mode 100644 index 179463470..000000000 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.addons.tree; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.Tree; - -import java.util.function.Supplier; - -public class TreeConfigType implements ConfigType { - private final TreeFactory factory = new TreeFactory(); - - public static final TypeKey TREE_TYPE_TOKEN = new TypeKey<>(){}; - - @Override - public TreeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new TreeTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeClass() { - return TREE_TYPE_TOKEN; - } - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return pack.getRegistryFactory()::create; - } -} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java deleted file mode 100644 index e41d765a8..000000000 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.tree; - -import com.dfsek.terra.addons.tree.tree.TerraTree; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.world.Tree; - -public class TreeFactory implements ConfigFactory { - @Override - public Tree build(TreeTemplate config, TerraPlugin main) { - return new TerraTree(config.getSpawnable(), config.getyOffset(), config.getStructures()); - } -} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java deleted file mode 100644 index e10aedd46..000000000 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/TreeTemplate.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.addons.tree; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - -@SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class TreeTemplate implements AbstractableTemplate { - @Value("scripts") - private ProbabilityCollection structure; - - @Value("id") - @Final - private String id; - - @Value("y-offset") - @Default - private int yOffset = 0; - - @Value("spawnable") - private MaterialSet spawnable; - - public ProbabilityCollection getStructures() { - return structure; - } - - public String getID() { - return id; - } - - public int getyOffset() { - return yOffset; - } - - public MaterialSet getSpawnable() { - return spawnable; - } -} diff --git a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java b/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java deleted file mode 100644 index b73210c4a..000000000 --- a/common/addons/config-tree/src/main/java/com/dfsek/terra/addons/tree/tree/TerraTree.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.tree.tree; - -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.World; - -import java.util.Random; - -public class TerraTree implements Tree { - private final MaterialSet spawnable; - private final int yOffset; - private final ProbabilityCollection structure; - - public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollection structure) { - this.spawnable = spawnable; - this.yOffset = yOffset; - this.structure = structure; - } - - @Override - public synchronized boolean plant(Vector3 location, World world, Random random) { - return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); - } - - @Override - public MaterialSet getSpawnable() { - return spawnable; - } -} From a6324ae6e23f1426f58c4ae491af6b7900cb1783 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 20:07:17 -0700 Subject: [PATCH 0296/1529] dont inject trees on Fabric --- .../dfsek/terra/fabric/TerraFabricPlugin.java | 26 ------------------- 1 file changed, 26 deletions(-) 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 44f621772..32e63586d 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 @@ -320,32 +320,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { } - @Priority(Priority.HIGHEST) - @Global - public void injectTrees(ConfigTypePostLoadEvent event) { - if(!event.is(Tree.class)) return; - CheckedRegistry treeRegistry = event.getPack().getOrCreateRegistry(Tree.class); - injectTree(treeRegistry, "BROWN_MUSHROOM", ConfiguredFeatures.HUGE_BROWN_MUSHROOM); - injectTree(treeRegistry, "RED_MUSHROOM", ConfiguredFeatures.HUGE_RED_MUSHROOM); - injectTree(treeRegistry, "JUNGLE", ConfiguredFeatures.MEGA_JUNGLE_TREE); - injectTree(treeRegistry, "JUNGLE_COCOA", ConfiguredFeatures.JUNGLE_TREE); - injectTree(treeRegistry, "LARGE_OAK", ConfiguredFeatures.FANCY_OAK); - injectTree(treeRegistry, "LARGE_SPRUCE", ConfiguredFeatures.PINE); - injectTree(treeRegistry, "SMALL_JUNGLE", ConfiguredFeatures.JUNGLE_TREE); - injectTree(treeRegistry, "SWAMP_OAK", ConfiguredFeatures.SWAMP_OAK); - injectTree(treeRegistry, "TALL_BIRCH", ConfiguredFeatures.BIRCH_TALL); - injectTree(treeRegistry, "ACACIA", ConfiguredFeatures.ACACIA); - injectTree(treeRegistry, "BIRCH", ConfiguredFeatures.BIRCH); - injectTree(treeRegistry, "DARK_OAK", ConfiguredFeatures.DARK_OAK); - injectTree(treeRegistry, "OAK", ConfiguredFeatures.OAK); - injectTree(treeRegistry, "CHORUS_PLANT", ConfiguredFeatures.CHORUS_PLANT); - injectTree(treeRegistry, "SPRUCE", ConfiguredFeatures.SPRUCE); - injectTree(treeRegistry, "JUNGLE_BUSH", ConfiguredFeatures.JUNGLE_BUSH); - injectTree(treeRegistry, "MEGA_SPRUCE", ConfiguredFeatures.MEGA_SPRUCE); - injectTree(treeRegistry, "CRIMSON_FUNGUS", ConfiguredFeatures.CRIMSON_FUNGI); - injectTree(treeRegistry, "WARPED_FUNGUS", ConfiguredFeatures.WARPED_FUNGI); - } - @Priority(Priority.HIGHEST) @Global public void createInjectionOptions(ConfigPackPostLoadEvent event) { From feea26dea76fd34c6fa3da0fe8a49de271615008 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 20:13:21 -0700 Subject: [PATCH 0297/1529] fix typo --- .../src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 32e63586d..39f9ac747 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 @@ -253,7 +253,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll(getClass().getClassLoader())) { - throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); + throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); } logger.info("Loaded addons."); From c71445d3e555fbeaa49e8fdf4cf23b12b01a3849 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 20:22:01 -0700 Subject: [PATCH 0298/1529] create Meta annotation --- .../java/com/dfsek/terra/api/config/meta/Meta.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java b/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java new file mode 100644 index 000000000..cfac598c7 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.api.config.meta; + +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_USE) +public @interface Meta { +} From fe60e12f16664c34c3fc40a3f3f2f64cba892f4f Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:01:37 -0700 Subject: [PATCH 0299/1529] create MetaValuePreprocessor --- .../dfsek/terra/addons/yaml/YamlAddon.java | 2 +- common/api/build.gradle.kts | 4 +- .../config/ConfigurationDiscoveryEvent.java | 9 ++-- .../terra/config/pack/ConfigPackImpl.java | 11 +++-- .../preprocessor/MetaValuePreprocessor.java | 44 +++++++++++++++++++ 5 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index a8567658e..2d5840c41 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -23,6 +23,6 @@ public class YamlAddon extends TerraAddon implements EventListener { } public void loadYamlConfigs(ConfigurationDiscoveryEvent event) { - event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> event.register(new YamlConfiguration(entry.getValue(), entry.getKey())))); + event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())))); } } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index ef64d7c34..a903cf25c 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -15,8 +15,8 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("com.dfsek:Paralithic:0.4.0") - "shadedApi"("com.dfsek.tectonic:common:2.1.1") - "shadedApi"("com.dfsek.tectonic:yaml:2.1.1") + "shadedApi"("com.dfsek.tectonic:common:2.1.2") + "shadedApi"("com.dfsek.tectonic:yaml:2.1.2") "shadedApi"("net.jafama:jafama:2.3.2") "shadedApi"("org.yaml:snakeyaml:1.27") diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java index 0037dacc2..ada69920a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.event.events.PackEvent; +import java.util.function.BiConsumer; import java.util.function.Consumer; /** @@ -17,9 +18,9 @@ public class ConfigurationDiscoveryEvent implements PackEvent { private final ConfigPack pack; private final Loader loader; - private final Consumer consumer; + private final BiConsumer consumer; - public ConfigurationDiscoveryEvent(ConfigPack pack, Loader loader, Consumer consumer) { + public ConfigurationDiscoveryEvent(ConfigPack pack, Loader loader, BiConsumer consumer) { this.pack = pack; this.loader = loader; this.consumer = consumer; @@ -34,7 +35,7 @@ public class ConfigurationDiscoveryEvent implements PackEvent { return loader; } - public void register(Configuration config) { - consumer.accept(config); + public void register(String identifier, Configuration config) { + consumer.accept(identifier, config); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ec945ff43..39a28eeef 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -18,6 +18,7 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; @@ -40,6 +41,7 @@ import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; +import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; @@ -234,13 +236,16 @@ public class ConfigPackImpl implements ConfigPack { varScope.create(var.getKey(), var.getValue()); } - List configurations = new ArrayList<>(); + Map configurations = new HashMap<>(); - main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::add)); // Create all the configs. + main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. + + selfLoader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurations)); + abstractConfigLoader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurations)); Map, List> configs = new HashMap<>(); - for(Configuration configuration : configurations) { // Sort the configs + for(Configuration configuration : configurations.values()) { // Sort the configs ProtoConfig config = new ProtoConfig(); selfLoader.load(config, configuration); configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java new file mode 100644 index 000000000..81a39bc37 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java @@ -0,0 +1,44 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.preprocessor.Result; +import com.dfsek.tectonic.preprocessor.ValuePreprocessor; +import com.dfsek.terra.api.config.meta.Meta; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; +import java.util.Map; + +public class MetaValuePreprocessor implements ValuePreprocessor { + private final Map configs; + + public MetaValuePreprocessor(Map configs) { + this.configs = configs; + } + + @SuppressWarnings("unchecked") + @Override + public @NotNull Result process(AnnotatedType t, T c, ConfigLoader configLoader, Meta annotation) { + if(c instanceof String) { + String value = ((String) c).trim(); + if(value.startsWith("$")) { // it's a meta value. + String raw = value.substring(1); + int sep = raw.indexOf(':'); + String file = raw.substring(0, sep); + String key = raw.substring(sep + 1); + + if(!configs.containsKey(file)) throw new LoadException("Cannot fetch metavalue: No such config: " + file); + + Configuration config = configs.get(file); + + if(!config.contains(key)) + throw new LoadException("Cannot fetch metavalue: No such key " + key + " in configuration " + config.getName()); + + return (Result) Result.overwrite(config.get(key)); + } + } + return Result.noOp(); + } +} From 299bf0dae8c4093b1416b3d75b38a4bfa23746cd Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:05:01 -0700 Subject: [PATCH 0300/1529] Only sort configs with type key --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 39a28eeef..dba98e565 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -246,9 +246,11 @@ public class ConfigPackImpl implements ConfigPack { Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations.values()) { // Sort the configs - ProtoConfig config = new ProtoConfig(); - selfLoader.load(config, configuration); - configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); + if(configuration.contains("type")) { // Only sort configs with type key + ProtoConfig config = new ProtoConfig(); + selfLoader.load(config, configuration); + configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); + } } for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs From 6285b7646bb9a6df94177a2b5db68972d9b2ddca Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:05:55 -0700 Subject: [PATCH 0301/1529] dont exclude pack.yml --- .../java/com/dfsek/terra/config/fileloaders/FolderLoader.java | 1 - .../main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java | 1 - 2 files changed, 2 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java index b1ebb1aea..5d846c5f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java @@ -31,7 +31,6 @@ public class FolderLoader extends LoaderImpl { paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(extension)).forEach(file -> { try { String rel = newPath.toPath().relativize(file).toString(); - if(rel.equals("pack.yml")) return; streams.put(rel, new FileInputStream(file.toFile())); } catch(FileNotFoundException e) { e.printStackTrace(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java index 573494354..59e25cbcc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java @@ -27,7 +27,6 @@ public class ZIPLoader extends LoaderImpl { Enumeration entries = file.entries(); while(entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); - if(entry.getName().equals("pack.yml")) continue; if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(extension)) { try { String rel = entry.getName().substring(directory.length()); From 6158cda74090d29647f26b02c15a222b01737332 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:08:23 -0700 Subject: [PATCH 0302/1529] debug-log discovered configs --- .../src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index 2d5840c41..4e394f343 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -23,6 +23,9 @@ public class YamlAddon extends TerraAddon implements EventListener { } public void loadYamlConfigs(ConfigurationDiscoveryEvent event) { - event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())))); + event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { + main.getDebugLogger().info("Discovered config " + entry.getKey()); + event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); + })); } } From 23731741324ddfa4127250b6cb53dd8e02fcd984 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:29:30 -0700 Subject: [PATCH 0303/1529] @Meta all the things --- .../config/BiomePipelineTemplate.java | 7 +-- .../config/BiomeProviderTemplate.java | 7 +-- .../pipeline/config/NoiseSourceTemplate.java | 5 ++- .../pipeline/config/stage/StageTemplate.java | 3 +- .../mutator/BorderListMutatorTemplate.java | 9 ++-- .../stage/mutator/BorderMutatorTemplate.java | 7 +-- .../stage/mutator/MutatorStageTemplate.java | 3 +- .../mutator/ReplaceListMutatorTemplate.java | 7 +-- .../stage/mutator/ReplaceMutatorTemplate.java | 5 ++- .../single/SingleBiomeProviderTemplate.java | 3 +- .../chunkgenerator/BiomePaletteTemplate.java | 9 ++-- .../terra/addons/biome/BiomeTemplate.java | 41 ++++++++--------- .../terra/addons/carver/CarverTemplate.java | 45 ++++++++++--------- .../config/NoiseDistributorTemplate.java | 5 ++- .../config/PointSetDistributorTemplate.java | 3 +- .../distributor/util/PointTemplate.java | 5 ++- .../terra/addons/feature/FeatureTemplate.java | 9 ++-- .../terra/addons/flora/FloraTemplate.java | 25 ++++++----- .../flora/config/BlockLayerTemplate.java | 5 ++- .../locator/config/RandomLocatorTemplate.java | 5 ++- .../config/SurfaceLocatorTemplate.java | 3 +- .../addons/noise/NoiseConfigPackTemplate.java | 3 +- .../DimensionApplicableNoiseSampler.java | 5 ++- .../config/templates/DomainWarpTemplate.java | 11 ++--- .../config/templates/FunctionTemplate.java | 3 +- .../templates/ImageSamplerTemplate.java | 7 +-- .../config/templates/KernelTemplate.java | 9 ++-- .../config/templates/SamplerTemplate.java | 3 +- .../noise/CellularNoiseTemplate.java | 9 ++-- .../noise/ConstantNoiseTemplate.java | 3 +- .../noise/ExpressionFunctionTemplate.java | 12 +++-- .../templates/noise/GaborNoiseTemplate.java | 11 ++--- .../config/templates/noise/NoiseTemplate.java | 5 ++- .../noise/fractal/FractalTemplate.java | 11 ++--- .../noise/fractal/PingPongTemplate.java | 3 +- .../normalizer/ClampNormalizerTemplate.java | 5 ++- .../normalizer/LinearNormalizerTemplate.java | 5 ++- .../normalizer/NormalNormalizerTemplate.java | 7 +-- .../normalizer/NormalizerTemplate.java | 3 +- .../dfsek/terra/addons/ore/OreTemplate.java | 15 ++++--- .../terra/addons/palette/PaletteTemplate.java | 5 ++- .../structure/BiomeStructuresTemplate.java | 3 +- .../addons/structure/StructureTemplate.java | 7 +-- .../feature/config/BiomeFeaturesTemplate.java | 3 +- .../generation/flora/BiomeFloraTemplate.java | 3 +- .../generation/flora/FloraLayerLoader.java | 9 ++-- .../config/pack/ConfigPackPostTemplate.java | 3 +- .../terra/config/pack/ConfigPackTemplate.java | 33 +++++++------- .../test/java/noise/ColorConfigTemplate.java | 5 ++- 49 files changed, 230 insertions(+), 182 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index a9d4a04eb..3c3183325 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -6,6 +6,7 @@ import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -16,13 +17,13 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { private final TerraPlugin main; @Value("pipeline.initial-size") @Default - private int initialSize = 2; + private @Meta int initialSize = 2; @Value("pipeline.stages") - private List stages; + private @Meta List<@Meta Stage> stages; @Value("pipeline.source") - private BiomeSource source; + private @Meta BiomeSource source; public BiomePipelineTemplate(TerraPlugin main) { this.main = main; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index 97e79d107..fc8909455 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,17 +3,18 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public abstract class BiomeProviderTemplate implements ObjectTemplate { @Value("resolution") @Default - protected int resolution = 1; + protected @Meta int resolution = 1; @Value("blend.noise") @Default - protected NoiseSampler blend = NoiseSampler.zero(); + protected @Meta NoiseSampler blend = NoiseSampler.zero(); @Value("blend.amplitude") @Default - protected double blendAmp = 0d; + protected @Meta double blendAmp = 0d; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index ab425be7b..84a2c573b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -9,10 +10,10 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class NoiseSourceTemplate extends SourceTemplate { @Value("noise") - private NoiseSampler noise; + private @Meta NoiseSampler noise; @Value("biomes") - private ProbabilityCollection biomes; + private @Meta ProbabilityCollection<@Meta TerraBiome> biomes; @Override public BiomeSource get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index 64fe3a369..b7451b871 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -3,9 +3,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public abstract class StageTemplate implements ObjectTemplate { @Value("noise") - protected NoiseSampler noise; + protected @Meta NoiseSampler noise; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 9ced2ae5a..2538c9f9d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -11,16 +12,16 @@ import java.util.Map; @SuppressWarnings("unused") public class BorderListMutatorTemplate extends MutatorStageTemplate { @Value("from") - private String from; + private @Meta String from; @Value("default-replace") - private String defaultReplace; + private @Meta String defaultReplace; @Value("default-to") - private ProbabilityCollection defaultTo; + private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; @Value("replace") - private Map> replace; + private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; @Override diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 3bf37de7d..be8676afa 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -3,19 +3,20 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") public class BorderMutatorTemplate extends MutatorStageTemplate { @Value("from") - private String from; + private @Meta String from; @Value("replace") - private String replace; + private @Meta String replace; @Value("to") - private ProbabilityCollection to; + private @Meta ProbabilityCollection<@Meta TerraBiome> to; @Override public BiomeMutator get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java index 285b55c93..d19357f16 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java @@ -4,11 +4,12 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public abstract class MutatorStageTemplate implements ObjectTemplate { @Value("noise") - protected NoiseSampler noise; + protected @Meta NoiseSampler noise; @Override public abstract BiomeMutator get(); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 07d60fb56..6f23b76b7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -11,13 +12,13 @@ import java.util.Map; @SuppressWarnings("unused") public class ReplaceListMutatorTemplate extends MutatorStageTemplate { @Value("default-from") - private String defaultFrom; + private @Meta String defaultFrom; @Value("default-to") - private ProbabilityCollection defaultTo; + private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; @Value("to") - private Map> replace; + private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; @Override public BiomeMutator get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 7659a0478..9adb4aab5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends MutatorStageTemplate { @Value("from") - private String from; + private @Meta String from; @Value("to") - private ProbabilityCollection to; + private @Meta ProbabilityCollection<@Meta TerraBiome> to; @Override public BiomeMutator get() { diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index 77dd1567c..bbb3f4f1e 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,12 +2,13 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class SingleBiomeProviderTemplate implements ObjectTemplate { @Value("biome") - private TerraBiome biome; + private @Meta TerraBiome biome; @Override public BiomeProvider get() { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java index 86ca44180..ed14d2faf 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java @@ -6,21 +6,22 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.generator.Palette; public class BiomePaletteTemplate implements ObjectTemplate { @Value("palette") - private PaletteHolder palette; + private @Meta PaletteHolder palette; @Value("slant") @Default - private SlantHolder slant = null; + private @Meta SlantHolder slant = null; @Value("ocean.level") - private int seaLevel; + private @Meta int seaLevel; @Value("ocean.palette") - private Palette oceanPalette; + private @Meta Palette oceanPalette; @Override public PaletteInfo get() { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 5cc51de9e..0137ababb 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; @@ -27,7 +28,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("id") @Final - private String id; + private @Meta String id; @Value("extends") @Final @@ -36,78 +37,78 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl @Value("variables") @Default - private Map variables = new HashMap<>(); + private @Meta Map variables = new HashMap<>(); @Value("beta.carving.equation") @Default - private NoiseSampler carvingEquation = NoiseSampler.zero(); + private @Meta NoiseSampler carvingEquation = NoiseSampler.zero(); @Value("vanilla") - private ProbabilityCollection vanilla; + private @Meta ProbabilityCollection vanilla; @Value("biome-noise") @Default - private NoiseSampler biomeNoise = NoiseSampler.zero(); + private @Meta NoiseSampler biomeNoise = NoiseSampler.zero(); @Value("blend.distance") @Default - private int blendDistance = 3; + private @Meta int blendDistance = 3; @Value("blend.weight") @Default - private double blendWeight = 1; + private @Meta double blendWeight = 1; @Value("blend.step") @Default - private int blendStep = 4; + private @Meta int blendStep = 4; @Value("noise") - private NoiseSampler noiseEquation; + private @Meta NoiseSampler noiseEquation; @Value("ocean.level") @Default - private int seaLevel = 62; + private @Meta int seaLevel = 62; @Value("elevation.equation") @Default - private NoiseSampler elevationEquation = NoiseSampler.zero(); + private @Meta NoiseSampler elevationEquation = NoiseSampler.zero(); @Value("elevation.weight") @Default - private double elevationWeight = 1; + private @Meta double elevationWeight = 1; @Value("slabs.enable") @Default - private boolean doSlabs = false; + private @Meta boolean doSlabs = false; @Value("slabs.threshold") @Default - private double slabThreshold = 0.0075D; + private @Meta double slabThreshold = 0.0075D; @Value("slabs.palettes") @Default - private Map slabPalettes; + private @Meta Map<@Meta BlockType, @Meta Palette> slabPalettes; @Value("slabs.stair-palettes") @Default - private Map stairPalettes; + private @Meta Map<@Meta BlockType, @Meta Palette> stairPalettes; @Value("interpolate-elevation") @Default - private boolean interpolateElevation = true; + private @Meta boolean interpolateElevation = true; @Value("color") @Final @Default - private int color = 0; + private @Meta int color = 0; @Value("tags") @Default - private Set tags = new HashSet<>(); + private @Meta Set<@Meta String> tags = new HashSet<>(); @Value("colors") @Default - private Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). + private @Meta Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). public BiomeTemplate(ConfigPack pack, TerraPlugin main) { this.pack = pack; diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index dfa58e0a5..1ae81d0e2 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -21,76 +22,76 @@ public class CarverTemplate implements AbstractableTemplate { @Value("step") @Default - private int step = 2; + private @Meta int step = 2; @Value("recalculate-magnitude") @Default - private double recaclulateMagnitude = 4; + private @Meta double recaclulateMagnitude = 4; @Value("recalculate-direction") @Default - private Range recalc = new ConstantRange(8, 10); + private @Meta Range recalc = new ConstantRange(8, 10); @Value("length") - private Range length; + private @Meta Range length; @Value("start.x") - private double startX; + private @Meta double startX; @Value("start.y") - private double startY; + private @Meta double startY; @Value("start.z") - private double startZ; + private @Meta double startZ; @Value("start.radius.x") - private String radMX; + private @Meta String radMX; @Value("start.radius.y") - private String radMY; + private @Meta String radMY; @Value("start.radius.z") - private String radMZ; + private @Meta String radMZ; @Value("start.height") - private Range height; + private @Meta Range height; @Value("cut.bottom") @Default - private int cutBottom = 0; + private @Meta int cutBottom = 0; @Value("cut.top") @Default - private int cutTop = 0; + private @Meta int cutTop = 0; @Value("mutate.x") - private double mutateX; + private @Meta double mutateX; @Value("mutate.y") - private double mutateY; + private @Meta double mutateY; @Value("mutate.z") - private double mutateZ; + private @Meta double mutateZ; @Value("palette.top") - private CarverPalette top; + private @Meta CarverPalette top; @Value("palette.bottom") - private CarverPalette bottom; + private @Meta CarverPalette bottom; @Value("palette.outer") - private CarverPalette outer; + private @Meta CarverPalette outer; @Value("palette.inner") - private CarverPalette inner; + private @Meta CarverPalette inner; @Value("shift") @Default - private Map shift = new HashMap<>(); + private @Meta Map<@Meta BlockType, @Meta MaterialSet> shift = new HashMap<>(); @Value("update") @Default - private MaterialSet update = new MaterialSet(); + private @Meta MaterialSet update = new MaterialSet(); public String getID() { return id; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index b0e47dc42..1982d71b2 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -4,16 +4,17 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; public class NoiseDistributorTemplate implements ObjectTemplate { @Value("distribution") - private NoiseSampler noise; + private @Meta NoiseSampler noise; @Value("threshold") @Default - private double threshold = 0; + private @Meta double threshold = 0; @Override public Distributor get() { diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java index a69b49a5e..5def1904b 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java @@ -4,13 +4,14 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.PointSetDistributor; import com.dfsek.terra.addons.feature.distributor.util.Point; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; import java.util.Set; public class PointSetDistributorTemplate implements ObjectTemplate { @Value("points") - private Set points; + private @Meta Set<@Meta Point> points; @Override public Distributor get() { diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java index 600590c28..cd208a059 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java @@ -2,13 +2,14 @@ package com.dfsek.terra.addons.feature.distributor.util; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; public class PointTemplate implements ObjectTemplate { @Value("x") - private int x; + private @Meta int x; @Value("z") - private int z; + private @Meta int z; @Override public Point get() { diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java index 4adfa8736..7deaaa2fc 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.feature.Distributor; @@ -16,16 +17,16 @@ public class FeatureTemplate implements AbstractableTemplate { private String id; @Value("distributor") - private Distributor distributor; + private @Meta Distributor distributor; @Value("locator") - private Locator locator; + private @Meta Locator locator; @Value("structures.distribution") - private NoiseSampler structureNoise; + private @Meta NoiseSampler structureNoise; @Value("structures.structures") - private ProbabilityCollection structures; + private @Meta ProbabilityCollection structures; @Override public String getID() { diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index 3f16bbb4a..dad47d26b 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -18,50 +19,50 @@ public class FloraTemplate implements AbstractableTemplate { private String id; @Value("spawnable") - private MaterialSet spawnable; + private @Meta MaterialSet spawnable; @Value("spawn-blacklist") @Default - private boolean spawnBlacklist = false; + private @Meta boolean spawnBlacklist = false; @Value("replaceable") @Default - private MaterialSet replaceable = MaterialSet.empty(); + private @Meta MaterialSet replaceable = MaterialSet.empty(); @Value("irrigable") @Default - private MaterialSet irrigable = null; + private @Meta MaterialSet irrigable = null; @Value("rotatable") @Default - private MaterialSet rotatable = MaterialSet.empty(); + private @Meta MaterialSet rotatable = MaterialSet.empty(); @Value("physics") @Default - private boolean doPhysics = false; + private @Meta boolean doPhysics = false; @Value("ceiling") @Default - private boolean ceiling = false; + private @Meta boolean ceiling = false; @Value("search") @Default - private TerraFlora.Search search = TerraFlora.Search.UP; + private TerraFlora.@Meta Search search = TerraFlora.Search.UP; @Value("max-placements") @Default - private int maxPlacements = -1; + private @Meta int maxPlacements = -1; @Value("irrigable-offset") @Default - private int irrigableOffset; + private @Meta int irrigableOffset; @Value("layers") - private List layers; + private @Meta List<@Meta BlockLayer> layers; @Value("layer-distribution") - private NoiseSampler noiseDistribution; + private @Meta NoiseSampler noiseDistribution; public NoiseSampler getNoiseDistribution() { return noiseDistribution; diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java index bc709769e..184a6fb3d 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java @@ -4,14 +4,15 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class BlockLayerTemplate implements ObjectTemplate { @Value("layers") - private int layers; + private @Meta int layers; @Value("materials") - private ProbabilityCollection data; + private @Meta ProbabilityCollection data; @Override public BlockLayer get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java index ca666e201..543ce5ca8 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java @@ -4,15 +4,16 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.RandomLocator; import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; public class RandomLocatorTemplate implements ObjectTemplate { @Value("height") - private Range height; + private @Meta Range height; @Value("amount") - private Range amount; + private @Meta Range amount; @Override public Locator get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java index a85b37179..731cc68a8 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; @@ -11,7 +12,7 @@ public class SurfaceLocatorTemplate implements ObjectTemplate { private final TerraPlugin main; @Value("range") - private Range range; + private @Meta Range range; public SurfaceLocatorTemplate(TerraPlugin main) { this.main = main; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index ab2e8baa6..9bff92dbd 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -3,12 +3,13 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.terra.api.config.meta.Meta; import java.util.Map; public class NoiseConfigPackTemplate implements ConfigTemplate { @Value("noise") - private Map noiseBuilderMap; + private @Meta Map noiseBuilderMap; public Map getNoiseBuilderMap() { return noiseBuilderMap; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java index d508f37ec..7fdc5d393 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java @@ -2,14 +2,15 @@ package com.dfsek.terra.addons.noise.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public class DimensionApplicableNoiseSampler implements ObjectTemplate { @Value("dimensions") - private int dimensions; + private @Meta int dimensions; @Value(".") - private NoiseSampler sampler; + private @Meta NoiseSampler sampler; public int getDimensions() { return dimensions; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index ad918d654..0305197a0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -3,23 +3,20 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class DomainWarpTemplate extends SamplerTemplate { @Value("warp") - private NoiseSampler warp; + private @Meta NoiseSampler warp; @Value("function") - private NoiseSampler function; - - @Value("salt") - @Default - private int salt = 0; + private @Meta NoiseSampler function; @Value("amplitude") @Default - private double amplitude = 1; + private @Meta double amplitude = 1; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java index 1d7d8da82..54f88a18d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import java.util.List; @@ -11,7 +12,7 @@ public class FunctionTemplate implements ObjectTemplate { private List args; @Value("function") - private String function; + private @Meta String function; public List getArgs() { return args; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index 35dfd78ef..dd541873f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.ImageSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import java.awt.image.BufferedImage; @@ -10,13 +11,13 @@ import java.awt.image.BufferedImage; public class ImageSamplerTemplate extends SamplerTemplate { @Value("image") - private BufferedImage image; + private @Meta BufferedImage image; @Value("frequency") - private double frequency; + private @Meta double frequency; @Value("channel") - private ImageSampler.Channel channel; + private ImageSampler.@Meta Channel channel; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index ae032efd0..173ce0f1c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.addons.noise.samplers.KernelSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.List; @@ -13,18 +14,18 @@ import java.util.List; public class KernelTemplate extends SamplerTemplate implements ValidatedConfigTemplate { @Value("kernel") - private List> kernel; + private @Meta List<@Meta List<@Meta Double>> kernel; @Value("factor") @Default - private double factor = 1; + private @Meta double factor = 1; @Value("function") - private NoiseSampler function; + private @Meta NoiseSampler function; @Value("frequency") @Default - private double frequency = 1; + private @Meta double frequency = 1; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 393e03cce..319d85ed1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -5,13 +5,14 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings("FieldMayBeFinal") public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { @Value("dimensions") @Default - private int dimensions = 2; + private @Meta int dimensions = 2; public int getDimensions() { return dimensions; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index a84d95cd0..728ee7254 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -4,26 +4,27 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { @Value("distance") @Default - private CellularSampler.DistanceFunction cellularDistanceFunction = CellularSampler.DistanceFunction.EuclideanSq; + private CellularSampler.@Meta DistanceFunction cellularDistanceFunction = CellularSampler.DistanceFunction.EuclideanSq; @Value("return") @Default - private CellularSampler.ReturnType cellularReturnType = CellularSampler.ReturnType.Distance; + private CellularSampler.@Meta ReturnType cellularReturnType = CellularSampler.ReturnType.Distance; @Value("jitter") @Default - private double cellularJitter = 1.0D; + private @Meta double cellularJitter = 1.0D; @Value("lookup") @Default - private NoiseSampler lookup = new OpenSimplex2Sampler(); + private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index 226bcf30d..dd3311737 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -4,13 +4,14 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.ConstantSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings("FieldMayBeFinal") public class ConstantNoiseTemplate extends SamplerTemplate { @Value("value") @Default - private double value = 0d; + private @Meta double value = 0d; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 434698f3e..758320cca 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -15,6 +15,7 @@ import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.HashMap; @@ -27,15 +28,18 @@ public class ExpressionFunctionTemplate extends SamplerTemplate otherFunctions; @Value("variables") @Default - private Map vars = new HashMap<>(); + private @Meta Map vars = new HashMap<>(); + @Value("equation") - private String equation; + private @Meta String equation; + @Value("functions") @Default - private LinkedHashMap functions = new LinkedHashMap<>(); + private @Meta LinkedHashMap functions = new LinkedHashMap<>(); + @Value("expressions") @Default - private LinkedHashMap expressions = new LinkedHashMap<>(); + private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); public ExpressionFunctionTemplate(Map otherFunctions) { this.otherFunctions = otherFunctions; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index 46aacdbf5..c9bc2e52f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -3,28 +3,29 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.noise.GaborNoiseSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") @Default - private double rotation = 0.25; + private @Meta double rotation = 0.25; @Value("isotropic") @Default - private boolean isotropic = true; + private @Meta boolean isotropic = true; @Value("deviation") @Default - private double deviation = 1.0; + private @Meta double deviation = 1.0; @Value("impulses") @Default - private double impulses = 64d; + private @Meta double impulses = 64d; @Value("frequency_0") @Default - private double f0 = 0.625; + private @Meta double f0 = 0.625; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index 691249d7c..d5807cd8a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -4,15 +4,16 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public abstract class NoiseTemplate extends SamplerTemplate { @Value("frequency") @Default - protected double frequency = 0.02d; + protected @Meta double frequency = 0.02d; @Value("salt") @Default - protected long salt = 0; + protected @Meta long salt = 0; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 2f0061ea9..521fe9ac9 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -4,25 +4,26 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") @Default - protected int octaves = 3; + protected @Meta int octaves = 3; @Value("gain") @Default - protected double fractalGain = 0.5D; + protected @Meta double fractalGain = 0.5D; @Value("lacunarity") @Default - protected double fractalLacunarity = 2.0D; + protected @Meta double fractalLacunarity = 2.0D; @Value("weighted-strength") @Default - protected double weightedStrength = 0.0D; + protected @Meta double weightedStrength = 0.0D; @Value("function") - protected NoiseSampler function; + protected @Meta NoiseSampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index fafd0863b..618fc19c9 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -3,13 +3,14 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.samplers.noise.fractal.PingPongSampler; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class PingPongTemplate extends FractalTemplate { @Value("ping-pong") @Default - private double pingPong = 2.0D; + private @Meta double pingPong = 2.0D; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index e737c0240..030550888 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -2,15 +2,16 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.normalizer.ClampNormalizer; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class ClampNormalizerTemplate extends NormalizerTemplate { @Value("max") - private double max; + private @Meta double max; @Value("min") - private double min; + private @Meta double min; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index 33156d032..99d316813 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -2,15 +2,16 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.normalizer.LinearNormalizer; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class LinearNormalizerTemplate extends NormalizerTemplate { @Value("max") - private double max; + private @Meta double max; @Value("min") - private double min; + private @Meta double min; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java index 725fda0c2..16d3c8194 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java @@ -3,19 +3,20 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.normalizer.NormalNormalizer; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class NormalNormalizerTemplate extends NormalizerTemplate { @Value("mean") - private double mean; + private @Meta double mean; @Value("standard-deviation") - private double stdDev; + private @Meta double stdDev; @Value("groups") @Default - private int groups = 16384; + private @Meta int groups = 16384; @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index d782830ed..3ddbf9829 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -3,9 +3,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.normalizer.Normalizer; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") - protected NoiseSampler function; + protected @Meta NoiseSampler function; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index ee5023639..764ddc19e 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -19,29 +20,29 @@ public class OreTemplate implements AbstractableTemplate { private String id; @Value("material") - private BlockState material; + private @Meta BlockState material; @Value("material-overrides") @Default - private Map materials = new HashMap<>(); + private @Meta Map<@Meta BlockType, @Meta BlockState> materials = new HashMap<>(); @Value("replace") - private MaterialSet replaceable; + private @Meta MaterialSet replaceable; @Value("physics") @Default - private boolean physics = false; + private @Meta boolean physics = false; @Value("size") - private Range size; + private @Meta Range size; @Value("deform") @Default - private double deform = 0.75D; + private @Meta double deform = 0.75D; @Value("deform-frequency") @Default - private double deformFrequency = 0.1D; + private @Meta double deformFrequency = 0.1D; public double getDeform() { return deform; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index 0ded0a85b..6b0f778a8 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import java.util.List; @@ -13,14 +14,14 @@ import java.util.List; public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Default - private NoiseSampler noise = NoiseSampler.zero(); + private @Meta NoiseSampler noise = NoiseSampler.zero(); @Value("id") @Final private String id; @Value("layers") - private List palette; + private @Meta List<@Meta PaletteLayerHolder> palette; public String getID() { return id; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java index a01a6c756..c2a68b691 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import java.util.Collections; @@ -11,7 +12,7 @@ import java.util.Set; public class BiomeStructuresTemplate implements ObjectTemplate { @Value("structures") @Default - private Set structures = Collections.emptySet(); + private @Meta Set<@Meta ConfiguredStructure> structures = Collections.emptySet(); @Override public BiomeStructures get() { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index 7bde46e31..7bfaf029e 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; @@ -16,13 +17,13 @@ public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { private String id; @Value("scripts") - private ProbabilityCollection structure; + private @Meta ProbabilityCollection<@Meta Structure> structure; @Value("spawn.start") - private Range y; + private @Meta Range y; @Value("spawn") - private StructureSpawn spawn; + private @Meta StructureSpawn spawn; public String getID() { return id; diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java index dc767bc9c..8388f9d01 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.generation.feature.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Feature; import java.util.Collections; @@ -11,7 +12,7 @@ import java.util.List; public class BiomeFeaturesTemplate implements ObjectTemplate { @Value("features") @Default - private List features = Collections.emptyList(); + private @Meta List<@Meta Feature> features = Collections.emptyList(); @Override public BiomeFeatures get() { diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java index e1413aca6..0ada6c783 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import java.util.Collections; import java.util.List; @@ -10,7 +11,7 @@ import java.util.List; public class BiomeFloraTemplate implements ObjectTemplate { @Value("flora") @Default - private List flora = Collections.emptyList(); + private @Meta List<@Meta FloraLayer> flora = Collections.emptyList(); @Override public BiomeFlora get() { diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index 627bedec3..4743c6a0b 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -9,16 +10,16 @@ import com.dfsek.terra.api.world.Flora; public class FloraLayerLoader implements ObjectTemplate { @Value("density") - private double density; + private @Meta double density; @Value("y") - private Range y; + private @Meta Range y; @Value("items") - private ProbabilityCollection items; + private @Meta ProbabilityCollection<@Meta Flora> items; @Value("distribution") - private NoiseSampler distribution; + private @Meta NoiseSampler distribution; @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index e0e220e80..adaa26b8a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,11 +2,12 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") - private BiomeProvider providerBuilder; + private @Meta BiomeProvider providerBuilder; public BiomeProvider getProviderBuilder() { return providerBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index 708e47329..1cbf72a77 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -18,35 +19,35 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("variables") @Default - private Map variables = new HashMap<>(); + private @Meta Map variables = new HashMap<>(); @Value("beta.carving") @Default - private boolean betaCarvers = false; + private @Meta boolean betaCarvers = false; @Value("structures.locatable") @Default - private Map locatable = new HashMap<>(); + private @Meta Map<@Meta String, @Meta String> locatable = new HashMap<>(); @Value("blend.terrain.elevation") @Default - private int elevationBlend = 4; + private @Meta int elevationBlend = 4; @Value("vanilla.mobs") @Default - private boolean vanillaMobs = true; + private @Meta boolean vanillaMobs = true; @Value("vanilla.caves") @Default - private boolean vanillaCaves = false; + private @Meta boolean vanillaCaves = false; @Value("vanilla.decorations") @Default - private boolean vanillaDecorations = false; + private @Meta boolean vanillaDecorations = false; @Value("vanilla.structures") @Default - private boolean vanillaStructures = false; + private @Meta boolean vanillaStructures = false; @Value("author") @Default @@ -54,10 +55,10 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("disable.sapling") @Default - private boolean disableSaplings = false; + private @Meta boolean disableSaplings = false; @Value("stages") - private List stages; + private @Meta List<@Meta GenerationStageProvider> stages; @Value("version") @Default @@ -65,26 +66,26 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("disable.carvers") @Default - private boolean disableCarvers = false; + private @Meta boolean disableCarvers = false; @Value("disable.structures") @Default - private boolean disableStructures = false; + private @Meta boolean disableStructures = false; @Value("disable.ores") @Default - private boolean disableOres = false; + private @Meta boolean disableOres = false; @Value("disable.trees") @Default - private boolean disableTrees = false; + private @Meta boolean disableTrees = false; @Value("disable.flora") @Default - private boolean disableFlora = false; + private @Meta boolean disableFlora = false; @Value("generator") - private ChunkGeneratorProvider generatorProvider; + private @Meta ChunkGeneratorProvider generatorProvider; public ChunkGeneratorProvider getGeneratorProvider() { return generatorProvider; diff --git a/common/implementation/src/test/java/noise/ColorConfigTemplate.java b/common/implementation/src/test/java/noise/ColorConfigTemplate.java index dfffb8c80..66a461b89 100644 --- a/common/implementation/src/test/java/noise/ColorConfigTemplate.java +++ b/common/implementation/src/test/java/noise/ColorConfigTemplate.java @@ -3,15 +3,16 @@ package noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class ColorConfigTemplate implements ConfigTemplate { @Value("colors") - private ProbabilityCollection colors; + private @Meta ProbabilityCollection<@Meta Integer> colors; @Value("enable") @Default - private boolean enable = false; + private @Meta boolean enable = false; public boolean enable() { return enable; From 90e60ca6aaa83605b9f00590722623388a443d55 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:52:37 -0700 Subject: [PATCH 0304/1529] MetaList processing --- .../preprocessor/MetaValuePreprocessor.java | 71 +++++++++++++++---- 1 file changed, 57 insertions(+), 14 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java index 81a39bc37..e4480cf44 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java @@ -9,6 +9,9 @@ import com.dfsek.terra.api.config.meta.Meta; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; +import java.lang.reflect.ParameterizedType; +import java.util.ArrayList; +import java.util.List; import java.util.Map; public class MetaValuePreprocessor implements ValuePreprocessor { @@ -21,24 +24,64 @@ public class MetaValuePreprocessor implements ValuePreprocessor { @SuppressWarnings("unchecked") @Override public @NotNull Result process(AnnotatedType t, T c, ConfigLoader configLoader, Meta annotation) { - if(c instanceof String) { + if(c instanceof String) { // Can we do standard metaconfig? String value = ((String) c).trim(); if(value.startsWith("$")) { // it's a meta value. - String raw = value.substring(1); - int sep = raw.indexOf(':'); - String file = raw.substring(0, sep); - String key = raw.substring(sep + 1); - - if(!configs.containsKey(file)) throw new LoadException("Cannot fetch metavalue: No such config: " + file); - - Configuration config = configs.get(file); - - if(!config.contains(key)) - throw new LoadException("Cannot fetch metavalue: No such key " + key + " in configuration " + config.getName()); - - return (Result) Result.overwrite(config.get(key)); + return (Result) Result.overwrite(getMetaValue(value.substring(1))); } } + + if(t.getType() instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) t.getType(); + if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways + Class baseClass = (Class) parameterizedType.getRawType(); + + if(List.class.isAssignableFrom(baseClass) && c instanceof List) { // List metaconfig + List list = (List) c; + + int offset = 0; + List newList = new ArrayList<>((List) c); + + for(int i = 0; i < list.size(); i++) { + Object o = list.get(i); + if(!(o instanceof String)) continue; + String s = ((String) o).trim(); + if(!s.startsWith("<< ")) continue; + String meta = s.substring(3); + + Object metaValue = getMetaValue(meta); + + if(!(metaValue instanceof List)) { + throw new LoadException("MetaList injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); + } + + List metaList = (List) metaValue; + + newList.addAll(i + offset, metaList); + offset += metaList.size(); + } + + return (Result) Result.overwrite(newList); + } + } + } + return Result.noOp(); } + + private Object getMetaValue(String meta) { + int sep = meta.indexOf(':'); + String file = meta.substring(0, sep); + String key = meta.substring(sep + 1); + + if(!configs.containsKey(file)) throw new LoadException("Cannot fetch metavalue: No such config: " + file); + + Configuration config = configs.get(file); + + if(!config.contains(key)) { + throw new LoadException("Cannot fetch metavalue: No such key " + key + " in configuration " + config.getName()); + } + + return config.get(key); + } } From f27e732b39a0efc0e1e1214c0c74c543202e3233 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 21:58:43 -0700 Subject: [PATCH 0305/1529] add metalist test --- .../src/test/java/MetaTest.java | 35 +++++++++++++++++++ .../src/test/resources/meta.yml | 9 +++++ .../src/test/resources/metaTarget.yml | 6 ++++ 3 files changed, 50 insertions(+) create mode 100644 common/implementation/src/test/java/MetaTest.java create mode 100644 common/implementation/src/test/resources/meta.yml create mode 100644 common/implementation/src/test/resources/metaTarget.yml diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java new file mode 100644 index 000000000..c0c278fa8 --- /dev/null +++ b/common/implementation/src/test/java/MetaTest.java @@ -0,0 +1,35 @@ +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.yaml.YamlConfiguration; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MetaTest { + @Test + public void testMetaList() { + Configuration meta = new YamlConfiguration(MetaTest.class.getResourceAsStream("/meta.yml"), "meta.yml"); + Configuration metaTarget = new YamlConfiguration(MetaTest.class.getResourceAsStream("/metaTarget.yml"), "metaTarget.yml"); + + Map configurationMap = new HashMap<>(); + + configurationMap.put(meta.getName(), meta); + configurationMap.put(metaTarget.getName(), metaTarget); + + ConfigLoader loader = new ConfigLoader(); + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + + loader.load(new ConfigTest(), meta).list.forEach(System.out::println); + } + + private static final class ConfigTest implements ConfigTemplate { + @Value("list") + private @Meta List<@Meta String> list; + } +} diff --git a/common/implementation/src/test/resources/meta.yml b/common/implementation/src/test/resources/meta.yml new file mode 100644 index 000000000..863f1a6ef --- /dev/null +++ b/common/implementation/src/test/resources/meta.yml @@ -0,0 +1,9 @@ +list: + - ONE + - "<< metaTarget.yml:list" + - FOUR + - FIVE + - SIX + - "<< metaTarget.yml:list2" + - NINE + - TEN \ No newline at end of file diff --git a/common/implementation/src/test/resources/metaTarget.yml b/common/implementation/src/test/resources/metaTarget.yml new file mode 100644 index 000000000..c64ab3085 --- /dev/null +++ b/common/implementation/src/test/resources/metaTarget.yml @@ -0,0 +1,6 @@ +list: + - TWO + - THREE +list2: + - SEVEN + - EIGHT \ No newline at end of file From de4376dd9c301c66b36df251629d714a5453cd62 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 22:11:29 -0700 Subject: [PATCH 0306/1529] Create MetaPreprocessor abstract class --- .../config/preprocessor/MetaPreprocessor.java | 32 +++++++++++++++++++ .../preprocessor/MetaValuePreprocessor.java | 21 ++---------- 2 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java new file mode 100644 index 000000000..3cf1e9613 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java @@ -0,0 +1,32 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.preprocessor.ValuePreprocessor; + +import java.lang.annotation.Annotation; +import java.util.Map; + +public abstract class MetaPreprocessor implements ValuePreprocessor { + private final Map configs; + + public MetaPreprocessor(Map configs) { + this.configs = configs; + } + + protected Object getMetaValue(String meta) { + int sep = meta.indexOf(':'); + String file = meta.substring(0, sep); + String key = meta.substring(sep + 1); + + if(!configs.containsKey(file)) throw new LoadException("Cannot fetch metavalue: No such config: " + file); + + Configuration config = configs.get(file); + + if(!config.contains(key)) { + throw new LoadException("Cannot fetch metavalue: No such key " + key + " in configuration " + config.getName()); + } + + return config.get(key); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java index e4480cf44..9e8c659c2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java @@ -14,11 +14,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class MetaValuePreprocessor implements ValuePreprocessor { - private final Map configs; +public class MetaValuePreprocessor extends MetaPreprocessor { public MetaValuePreprocessor(Map configs) { - this.configs = configs; + super(configs); } @SuppressWarnings("unchecked") @@ -68,20 +67,4 @@ public class MetaValuePreprocessor implements ValuePreprocessor { return Result.noOp(); } - - private Object getMetaValue(String meta) { - int sep = meta.indexOf(':'); - String file = meta.substring(0, sep); - String key = meta.substring(sep + 1); - - if(!configs.containsKey(file)) throw new LoadException("Cannot fetch metavalue: No such config: " + file); - - Configuration config = configs.get(file); - - if(!config.contains(key)) { - throw new LoadException("Cannot fetch metavalue: No such key " + key + " in configuration " + config.getName()); - } - - return config.get(key); - } } From 4c4df28adb06a6e28679fdfcc6a411d7e0d6ce73 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 22:14:38 -0700 Subject: [PATCH 0307/1529] create and implement MetaListPreprocessor --- .../terra/config/pack/ConfigPackImpl.java | 10 ++- .../preprocessor/MetaListPreprocessor.java | 62 +++++++++++++++++++ .../preprocessor/MetaValuePreprocessor.java | 41 ------------ .../src/test/java/MetaTest.java | 2 + 4 files changed, 72 insertions(+), 43 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index dba98e565..47aba330d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -41,6 +41,7 @@ import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; +import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -240,8 +241,13 @@ public class ConfigPackImpl implements ConfigPack { main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. - selfLoader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurations)); - abstractConfigLoader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurations)); + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); + + MetaListPreprocessor listPreprocessor = new MetaListPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, listPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); Map, List> configs = new HashMap<>(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java new file mode 100644 index 000000000..efcb8f814 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java @@ -0,0 +1,62 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.preprocessor.Result; +import com.dfsek.tectonic.preprocessor.ValuePreprocessor; +import com.dfsek.terra.api.config.meta.Meta; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; +import java.lang.reflect.ParameterizedType; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class MetaListPreprocessor extends MetaPreprocessor { + public MetaListPreprocessor(Map configs) { + super(configs); + } + + @SuppressWarnings("unchecked") + @Override + public @NotNull Result process(AnnotatedType t, T c, ConfigLoader loader, Meta annotation) { + if(t.getType() instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) t.getType(); + if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways + Class baseClass = (Class) parameterizedType.getRawType(); + + if(List.class.isAssignableFrom(baseClass) && c instanceof List) { // List metaconfig + List list = (List) c; + + int offset = 0; + List newList = new ArrayList<>((List) c); + + for(int i = 0; i < list.size(); i++) { + Object o = list.get(i); + if(!(o instanceof String)) continue; + String s = ((String) o).trim(); + if(!s.startsWith("<< ")) continue; + String meta = s.substring(3); + + Object metaValue = getMetaValue(meta); + + if(!(metaValue instanceof List)) { + throw new LoadException("MetaList injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); + } + + List metaList = (List) metaValue; + + newList.addAll(i + offset, metaList); + offset += metaList.size(); + } + + return (Result) Result.overwrite(newList); + } + } + } + + return Result.noOp(); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java index 9e8c659c2..edc2155bc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java @@ -1,17 +1,12 @@ package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; -import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.preprocessor.Result; -import com.dfsek.tectonic.preprocessor.ValuePreprocessor; import com.dfsek.terra.api.config.meta.Meta; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.ParameterizedType; -import java.util.ArrayList; -import java.util.List; import java.util.Map; public class MetaValuePreprocessor extends MetaPreprocessor { @@ -29,42 +24,6 @@ public class MetaValuePreprocessor extends MetaPreprocessor { return (Result) Result.overwrite(getMetaValue(value.substring(1))); } } - - if(t.getType() instanceof ParameterizedType) { - ParameterizedType parameterizedType = (ParameterizedType) t.getType(); - if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways - Class baseClass = (Class) parameterizedType.getRawType(); - - if(List.class.isAssignableFrom(baseClass) && c instanceof List) { // List metaconfig - List list = (List) c; - - int offset = 0; - List newList = new ArrayList<>((List) c); - - for(int i = 0; i < list.size(); i++) { - Object o = list.get(i); - if(!(o instanceof String)) continue; - String s = ((String) o).trim(); - if(!s.startsWith("<< ")) continue; - String meta = s.substring(3); - - Object metaValue = getMetaValue(meta); - - if(!(metaValue instanceof List)) { - throw new LoadException("MetaList injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); - } - - List metaList = (List) metaValue; - - newList.addAll(i + offset, metaList); - offset += metaList.size(); - } - - return (Result) Result.overwrite(newList); - } - } - } - return Result.noOp(); } } diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index c0c278fa8..cc41f9c2e 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -24,6 +25,7 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); loader.load(new ConfigTest(), meta).list.forEach(System.out::println); } From 6f03cfa60062905debadd9cc2d1129c1d459b22e Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 22:24:29 -0700 Subject: [PATCH 0308/1529] correctly remove placeholder in MetaListPreprocessor --- .../terra/config/preprocessor/MetaListPreprocessor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java index efcb8f814..d2d50e3e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java @@ -4,7 +4,6 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.preprocessor.Result; -import com.dfsek.tectonic.preprocessor.ValuePreprocessor; import com.dfsek.terra.api.config.meta.Meta; import org.jetbrains.annotations.NotNull; @@ -48,8 +47,9 @@ public class MetaListPreprocessor extends MetaPreprocessor { List metaList = (List) metaValue; - newList.addAll(i + offset, metaList); - offset += metaList.size(); + newList.remove(i + offset); // Remove placeholder + newList.addAll(i + offset, metaList); // Add metalist values where placeholder was + offset += metaList.size() - 1; // add metalist size to offset, subtract one to account for placeholder. } return (Result) Result.overwrite(newList); From 5c3cd73c033ea89e51f7b3e86a540a04d053ed50 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 09:48:21 -0700 Subject: [PATCH 0309/1529] add TypeKey#getAnnotatedType --- .../terra/api/util/reflection/TypeKey.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java index 5cbafe7d8..0bcc630e6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java @@ -7,17 +7,20 @@ import java.util.Objects; public class TypeKey { final Class rawType; final Type type; + + final AnnotatedType annotatedType; final int hashCode; @SuppressWarnings("unchecked") protected TypeKey() { this.type = getSuperclassTypeParameter(getClass()); + this.annotatedType = getAnnotatedSuperclassTypeParameter(getClass()); this.rawType = (Class) ReflectionUtil.getRawType(type); this.hashCode = type.hashCode(); } - static Type getSuperclassTypeParameter(Class subclass) { + private static Type getSuperclassTypeParameter(Class subclass) { Type superclass = subclass.getGenericSuperclass(); if(superclass instanceof Class) { throw new RuntimeException("Missing type parameter."); @@ -26,6 +29,15 @@ public class TypeKey { return parameterized.getActualTypeArguments()[0]; } + private static AnnotatedType getAnnotatedSuperclassTypeParameter(Class subclass) { + AnnotatedType superclass = subclass.getAnnotatedSuperclass(); + if(superclass.getType() instanceof Class) { + throw new RuntimeException("Missing type parameter."); + } + AnnotatedParameterizedType parameterized = (AnnotatedParameterizedType) superclass; + return parameterized.getAnnotatedActualTypeArguments()[0]; + } + /** * Returns the raw (non-generic) type for this type. */ @@ -40,6 +52,10 @@ public class TypeKey { return type; } + public AnnotatedType getAnnotatedType() { + return annotatedType; + } + @Override public final int hashCode() { return this.hashCode; From d0434ef05e504d9265a5d3223a9b8126bff7bbc6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 09:48:40 -0700 Subject: [PATCH 0310/1529] create MetaMapPreprocessor --- .../preprocessor/MetaMapPreprocessor.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java new file mode 100644 index 000000000..a799a71ac --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java @@ -0,0 +1,59 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.preprocessor.Result; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.reflection.TypeKey; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; +import java.lang.reflect.ParameterizedType; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MetaMapPreprocessor extends MetaPreprocessor { + public MetaMapPreprocessor(Map configs) { + super(configs); + } + + private static final TypeKey> STRING_LIST = new TypeKey<>() {}; + @SuppressWarnings("unchecked") + @Override + public @NotNull Result process(AnnotatedType t, T c, ConfigLoader loader, Meta annotation) { + if(t.getType() instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) t.getType(); + if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways + Class baseClass = (Class) parameterizedType.getRawType(); + + if(Map.class.isAssignableFrom(baseClass) && c instanceof Map) { // List metaconfig + Map map = (Map) c; + + Map newMap = new HashMap<>(map); + + if(map.containsKey("<<")) { + newMap.putAll(map); + newMap.remove("<<"); // Remove placeholder + + List keys = (List) loader.loadType(STRING_LIST.getAnnotatedType(), map.get("<<")); + keys.forEach(key -> { + Object meta = getMetaValue(key); + if(!(meta instanceof Map)) { + throw new LoadException("MetaMap injection candidate must be list, is type " + meta.getClass().getCanonicalName()); + } + newMap.putAll((Map) meta); + }); + return (Result) Result.overwrite(newMap); + } + + + } + } + } + + return Result.noOp(); + } +} From 5a8f5aa29cc7d2d7c448fa21a4b9bb4caa0dcea0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 09:58:08 -0700 Subject: [PATCH 0311/1529] create test for MetaMap --- .../src/test/java/MetaTest.java | 29 +++++++++++++++++-- .../src/test/resources/meta.yml | 8 ++++- .../src/test/resources/metaTarget.yml | 8 ++++- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index cc41f9c2e..90d549459 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -26,12 +27,36 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); - loader.load(new ConfigTest(), meta).list.forEach(System.out::println); + loader.load(new MetaListConfig(), meta).list.forEach(System.out::println); } - private static final class ConfigTest implements ConfigTemplate { + private static final class MetaListConfig implements ConfigTemplate { @Value("list") private @Meta List<@Meta String> list; } + + @Test + public void testMetaMap() { + Configuration meta = new YamlConfiguration(MetaTest.class.getResourceAsStream("/meta.yml"), "meta.yml"); + Configuration metaTarget = new YamlConfiguration(MetaTest.class.getResourceAsStream("/metaTarget.yml"), "metaTarget.yml"); + + Map configurationMap = new HashMap<>(); + + configurationMap.put(meta.getName(), meta); + configurationMap.put(metaTarget.getName(), metaTarget); + + ConfigLoader loader = new ConfigLoader(); + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); + + loader.load(new MetaMapConfig(), meta).map.forEach((k, v) -> System.out.println(k + ": " + v)); + } + + private static final class MetaMapConfig implements ConfigTemplate { + @Value("map") + private @Meta Map<@Meta String, @Meta String> map; + } } diff --git a/common/implementation/src/test/resources/meta.yml b/common/implementation/src/test/resources/meta.yml index 863f1a6ef..e07ed2631 100644 --- a/common/implementation/src/test/resources/meta.yml +++ b/common/implementation/src/test/resources/meta.yml @@ -6,4 +6,10 @@ list: - SIX - "<< metaTarget.yml:list2" - NINE - - TEN \ No newline at end of file + - TEN +map: + "<<": + - metaTarget.yml:map1 + - metaTarget.yml:map2 + one: ONE + two: TWO \ No newline at end of file diff --git a/common/implementation/src/test/resources/metaTarget.yml b/common/implementation/src/test/resources/metaTarget.yml index c64ab3085..50bf4d807 100644 --- a/common/implementation/src/test/resources/metaTarget.yml +++ b/common/implementation/src/test/resources/metaTarget.yml @@ -3,4 +3,10 @@ list: - THREE list2: - SEVEN - - EIGHT \ No newline at end of file + - EIGHT +map1: + three: THREE + four: FOUR + five: FIVE +map2: + six: SIX \ No newline at end of file From f7a5066008eefb0b0ccb988054fa5d35f43f8104 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 09:59:21 -0700 Subject: [PATCH 0312/1529] typo --- .../dfsek/terra/config/preprocessor/MetaMapPreprocessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java index a799a71ac..25a635127 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java @@ -29,7 +29,7 @@ public class MetaMapPreprocessor extends MetaPreprocessor { if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways Class baseClass = (Class) parameterizedType.getRawType(); - if(Map.class.isAssignableFrom(baseClass) && c instanceof Map) { // List metaconfig + if(Map.class.isAssignableFrom(baseClass) && c instanceof Map) { // Map metaconfig Map map = (Map) c; Map newMap = new HashMap<>(map); From 5a85099357c31c087acce7a8de7af21947ac5995 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 10:02:10 -0700 Subject: [PATCH 0313/1529] metaset impl --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 4 ++-- ...stPreprocessor.java => MetaListLikePreprocessor.java} | 9 +++++---- common/implementation/src/test/java/MetaTest.java | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) rename common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/{MetaListPreprocessor.java => MetaListLikePreprocessor.java} (82%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 47aba330d..ca1796f8c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -41,7 +41,7 @@ import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -245,7 +245,7 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); - MetaListPreprocessor listPreprocessor = new MetaListPreprocessor(configurations); + MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, listPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java rename to common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java index d2d50e3e4..828ad275d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java @@ -12,9 +12,10 @@ import java.lang.reflect.ParameterizedType; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; -public class MetaListPreprocessor extends MetaPreprocessor { - public MetaListPreprocessor(Map configs) { +public class MetaListLikePreprocessor extends MetaPreprocessor { + public MetaListLikePreprocessor(Map configs) { super(configs); } @@ -26,7 +27,7 @@ public class MetaListPreprocessor extends MetaPreprocessor { if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways Class baseClass = (Class) parameterizedType.getRawType(); - if(List.class.isAssignableFrom(baseClass) && c instanceof List) { // List metaconfig + if((List.class.isAssignableFrom(baseClass) || Set.class.isAssignableFrom(baseClass)) && c instanceof List) { // List or set metaconfig List list = (List) c; int offset = 0; @@ -42,7 +43,7 @@ public class MetaListPreprocessor extends MetaPreprocessor { Object metaValue = getMetaValue(meta); if(!(metaValue instanceof List)) { - throw new LoadException("MetaList injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); + throw new LoadException("MetaList/Set injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); } List metaList = (List) metaValue; diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index 90d549459..2d00657be 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -26,7 +26,7 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); - loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); loader.load(new MetaListConfig(), meta).list.forEach(System.out::println); @@ -49,7 +49,7 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); - loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); loader.load(new MetaMapConfig(), meta).map.forEach((k, v) -> System.out.println(k + ": " + v)); From d054be5f251042dc66e4db3ffde43aff27426223 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 14:24:26 -0700 Subject: [PATCH 0314/1529] implement MetaStringPreprocessor --- common/implementation/build.gradle.kts | 2 + .../preprocessor/MetaStringPreprocessor.java | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index f9ed421d9..d4cde1973 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -21,6 +21,8 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") + "shadedImplementation"("org.apache.commons:commons-text:1.9") + "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java new file mode 100644 index 000000000..d26721c36 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.preprocessor.Result; +import com.dfsek.terra.api.config.meta.Meta; +import org.apache.commons.text.StringSubstitutor; +import org.apache.commons.text.lookup.StringLookup; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; +import java.util.Map; + +public class MetaStringPreprocessor extends MetaPreprocessor { + public MetaStringPreprocessor(Map configs) { + super(configs); + } + + @SuppressWarnings("unchecked") + @Override + public @NotNull Result process(AnnotatedType t, T c, ConfigLoader loader, Meta annotation) { + if(String.class.equals(t.getType()) && c instanceof String) { // String is final so we use #equals + String candidate = (String) c; + StringSubstitutor substitutor = new StringSubstitutor(key -> { + Object meta = getMetaValue(key); + if(!(meta instanceof String)) { + throw new LoadException("MetaString template injection candidate must be string, is type " + meta.getClass().getCanonicalName()); + } + return (String) meta; + }); + return (Result) Result.overwrite(substitutor.replace(candidate)); + } + return Result.noOp(); + } + + +} From 73fd1c9edde0ed025f3057f728742e4f1f1e97af Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 14:25:16 -0700 Subject: [PATCH 0315/1529] register StringPreprocessor --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index ca1796f8c..93357edb1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -42,6 +42,7 @@ import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; +import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -249,6 +250,10 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, listPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); + MetaStringPreprocessor stringPreprocessor = new MetaStringPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, stringPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, stringPreprocessor); + Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations.values()) { // Sort the configs From 57658d226856dcd324aaef0e7b8f3a3e6e8c781b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 14:31:21 -0700 Subject: [PATCH 0316/1529] create test for metastring --- .../src/test/java/MetaTest.java | 25 +++++++++++++++++++ .../src/test/resources/meta.yml | 3 ++- .../src/test/resources/metaTarget.yml | 6 ++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index 2d00657be..84ca5443d 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -59,4 +60,28 @@ public class MetaTest { @Value("map") private @Meta Map<@Meta String, @Meta String> map; } + + @Test + public void testMetaString() { + Configuration meta = new YamlConfiguration(MetaTest.class.getResourceAsStream("/meta.yml"), "meta.yml"); + Configuration metaTarget = new YamlConfiguration(MetaTest.class.getResourceAsStream("/metaTarget.yml"), "metaTarget.yml"); + + Map configurationMap = new HashMap<>(); + + configurationMap.put(meta.getName(), meta); + configurationMap.put(metaTarget.getName(), metaTarget); + + ConfigLoader loader = new ConfigLoader(); + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); + + System.out.println(loader.load(new MetaStringConfig(), meta).string); + } + + private static final class MetaStringConfig implements ConfigTemplate { + @Value("string") + private @Meta String string; + } } diff --git a/common/implementation/src/test/resources/meta.yml b/common/implementation/src/test/resources/meta.yml index e07ed2631..8a629da42 100644 --- a/common/implementation/src/test/resources/meta.yml +++ b/common/implementation/src/test/resources/meta.yml @@ -12,4 +12,5 @@ map: - metaTarget.yml:map1 - metaTarget.yml:map2 one: ONE - two: TWO \ No newline at end of file + two: TWO +string: "one-${metaTarget.yml:string.two}-${metaTarget.yml:string.three}-four-five-${metaTarget.yml:string.six}" \ No newline at end of file diff --git a/common/implementation/src/test/resources/metaTarget.yml b/common/implementation/src/test/resources/metaTarget.yml index 50bf4d807..74429a5c3 100644 --- a/common/implementation/src/test/resources/metaTarget.yml +++ b/common/implementation/src/test/resources/metaTarget.yml @@ -9,4 +9,8 @@ map1: four: FOUR five: FIVE map2: - six: SIX \ No newline at end of file + six: SIX +string: + two: two + three: three + six: six \ No newline at end of file From d8bbc95c1ea2b9a56c62443a632bc9df7373d00f Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 14:38:55 -0700 Subject: [PATCH 0317/1529] implement MetaNumberPreprocessor --- .../preprocessor/MetaNumberPreprocessor.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java new file mode 100644 index 000000000..54c1f2adc --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java @@ -0,0 +1,46 @@ +package com.dfsek.terra.config.preprocessor; + +import com.dfsek.paralithic.eval.parser.Parser; +import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.preprocessor.Result; +import com.dfsek.tectonic.util.ReflectionUtil; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.reflection.TypeKey; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; +import java.util.Map; + +public class MetaNumberPreprocessor extends MetaPreprocessor { + public static final TypeKey<@Meta String> META_STRING_KEY = new TypeKey<>() {}; + + public MetaNumberPreprocessor(Map configs) { + super(configs); + } + + @SuppressWarnings("unchecked") + @Override + public @NotNull Result process(AnnotatedType t, T c, ConfigLoader loader, Meta annotation) { + if(t.getType() instanceof Class && isNumber((Class) t.getType()) && c instanceof String) { + String expression = (String) loader.loadType(META_STRING_KEY.getAnnotatedType(), c); + try { + return (Result) Result.overwrite(new Parser().parse(expression).evaluate()); + } catch(ParseException e) { + throw new LoadException("Invalid expression: ", e); + } + } + return Result.noOp(); + } + + private static boolean isNumber(Class clazz) { + return Number.class.isAssignableFrom(clazz) + || byte.class.equals(clazz) + || int.class.equals(clazz) + || long.class.equals(clazz) + || float.class.equals(clazz) + || double.class.equals(clazz); + } +} From 662196c7a647ed510c53aeee55f9a9a06f544f3a Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 14:52:59 -0700 Subject: [PATCH 0318/1529] MetaNumberPreprocessor fixes --- .../preprocessor/MetaNumberPreprocessor.java | 3 +- .../preprocessor/MetaStringPreprocessor.java | 6 +-- .../src/test/java/MetaTest.java | 48 +++++++++++++++++-- .../src/test/resources/meta.yml | 4 +- .../src/test/resources/metaTarget.yml | 3 +- 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java index 54c1f2adc..ec3ae73f5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java @@ -12,10 +12,11 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; +import java.util.Arrays; import java.util.Map; public class MetaNumberPreprocessor extends MetaPreprocessor { - public static final TypeKey<@Meta String> META_STRING_KEY = new TypeKey<>() {}; + public static final TypeKey META_STRING_KEY = new TypeKey<@Meta String>() {}; public MetaNumberPreprocessor(Map configs) { super(configs); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java index d26721c36..c941b8649 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java @@ -24,10 +24,10 @@ public class MetaStringPreprocessor extends MetaPreprocessor { String candidate = (String) c; StringSubstitutor substitutor = new StringSubstitutor(key -> { Object meta = getMetaValue(key); - if(!(meta instanceof String)) { - throw new LoadException("MetaString template injection candidate must be string, is type " + meta.getClass().getCanonicalName()); + if(!(meta instanceof String) && !(meta instanceof Number) && !(meta instanceof Character) && !(meta instanceof Boolean)) { + throw new LoadException("MetaString template injection candidate must be string or primitive, is type " + meta.getClass().getCanonicalName()); } - return (String) meta; + return meta.toString(); }); return (Result) Result.overwrite(substitutor.replace(candidate)); } diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index 84ca5443d..6d48edaed 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaNumberPreprocessor; import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -26,9 +27,12 @@ public class MetaTest { configurationMap.put(metaTarget.getName(), metaTarget); ConfigLoader loader = new ConfigLoader(); - loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaNumberPreprocessor(configurationMap)); + + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); loader.load(new MetaListConfig(), meta).list.forEach(System.out::println); } @@ -49,9 +53,12 @@ public class MetaTest { configurationMap.put(metaTarget.getName(), metaTarget); ConfigLoader loader = new ConfigLoader(); - loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaNumberPreprocessor(configurationMap)); + + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); loader.load(new MetaMapConfig(), meta).map.forEach((k, v) -> System.out.println(k + ": " + v)); } @@ -72,10 +79,13 @@ public class MetaTest { configurationMap.put(metaTarget.getName(), metaTarget); ConfigLoader loader = new ConfigLoader(); - loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + + loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); - loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaNumberPreprocessor(configurationMap)); + + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); System.out.println(loader.load(new MetaStringConfig(), meta).string); } @@ -84,4 +94,34 @@ public class MetaTest { @Value("string") private @Meta String string; } + + @Test + public void testMetaNumber() { + Configuration meta = new YamlConfiguration(MetaTest.class.getResourceAsStream("/meta.yml"), "meta.yml"); + Configuration metaTarget = new YamlConfiguration(MetaTest.class.getResourceAsStream("/metaTarget.yml"), "metaTarget.yml"); + + Map configurationMap = new HashMap<>(); + + configurationMap.put(meta.getName(), meta); + configurationMap.put(metaTarget.getName(), metaTarget); + + ConfigLoader loader = new ConfigLoader(); + loader.registerPreprocessor(Meta.class, new MetaStringPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaNumberPreprocessor(configurationMap)); + + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + + System.out.println("int: " + loader.load(new MetaNumberConfig(), meta).integer); + System.out.println("double: " + loader.load(new MetaNumberConfig(), meta).aDouble); + } + + private static final class MetaNumberConfig implements ConfigTemplate { + @Value("int") + private @Meta int integer; + + @Value("double") + private @Meta double aDouble; + } } diff --git a/common/implementation/src/test/resources/meta.yml b/common/implementation/src/test/resources/meta.yml index 8a629da42..116b32b89 100644 --- a/common/implementation/src/test/resources/meta.yml +++ b/common/implementation/src/test/resources/meta.yml @@ -13,4 +13,6 @@ map: - metaTarget.yml:map2 one: ONE two: TWO -string: "one-${metaTarget.yml:string.two}-${metaTarget.yml:string.three}-four-five-${metaTarget.yml:string.six}" \ No newline at end of file +string: "one-${metaTarget.yml:string.two}-${metaTarget.yml:string.three}-four-five-${metaTarget.yml:string.six}" +int: 2 + 4 +double: ${metaTarget.yml:double} + 5.6 \ No newline at end of file diff --git a/common/implementation/src/test/resources/metaTarget.yml b/common/implementation/src/test/resources/metaTarget.yml index 74429a5c3..338930b52 100644 --- a/common/implementation/src/test/resources/metaTarget.yml +++ b/common/implementation/src/test/resources/metaTarget.yml @@ -13,4 +13,5 @@ map2: string: two: two three: three - six: six \ No newline at end of file + six: six +double: 1 \ No newline at end of file From a28f46eca36a82723d1de31df0dd0a437ea261b2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 15:06:56 -0700 Subject: [PATCH 0319/1529] allow dynamic block data in TerraScript block function by default --- .../terrascript/script/StructureScript.java | 6 +- .../script/builders/BlockFunctionBuilder.java | 12 +--- .../functions/AbstractBlockFunction.java | 54 ------------------ .../script/functions/BlockFunction.java | 56 ++++++++++++++----- .../functions/DynamicBlockFunction.java | 31 ---------- 5 files changed, 49 insertions(+), 110 deletions(-) delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 56bb2c3a8..e4fdfe575 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -63,9 +63,9 @@ public class StructureScript implements Structure { functionRegistry.forEach(parser::registerFunction); // Register registry functions. - parser.registerFunction("block", new BlockFunctionBuilder(main, false)) - .registerFunction("dynamicBlock", new BlockFunctionBuilder(main, true)) - .registerFunction("debugBlock", new BlockFunctionBuilder(main, false)) + parser + .registerFunction("block", new BlockFunctionBuilder(main)) + .registerFunction("debugBlock", new BlockFunctionBuilder(main)) .registerFunction("check", new CheckFunctionBuilder(main)) .registerFunction("structure", new StructureFunctionBuilder(registry, main)) .registerFunction("randomInt", new RandomFunctionBuilder()) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 80c30e236..0dd732615 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -4,31 +4,25 @@ import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.AbstractBlockFunction; import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; -import com.dfsek.terra.addons.terrascript.script.functions.DynamicBlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import java.util.List; -public class BlockFunctionBuilder implements FunctionBuilder { +public class BlockFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - private final boolean dynamic; - public BlockFunctionBuilder(TerraPlugin main, boolean dynamic) { + public BlockFunctionBuilder(TerraPlugin main) { this.main = main; - this.dynamic = dynamic; } @SuppressWarnings("unchecked") @Override - public AbstractBlockFunction build(List> argumentList, Position position) throws ParseException { + public BlockFunction build(List> argumentList, Position position) throws ParseException { if(argumentList.size() < 4) throw new ParseException("Expected data", position); Returnable booleanReturnable = new BooleanConstant(true, position); if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); - if(dynamic) - return new DynamicBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, main, position); return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, main, position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java deleted file mode 100644 index 72ff12807..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/AbstractBlockFunction.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; - -import java.util.Map; - -public abstract class AbstractBlockFunction implements Function { - protected final Returnable x, y, z; - protected final Returnable blockData; - protected final TerraPlugin main; - private final Returnable overwrite; - private final Position position; - - protected AbstractBlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, Returnable overwrite, TerraPlugin main, Position position) { - this.x = x; - this.y = y; - this.z = z; - this.blockData = blockData; - this.overwrite = overwrite; - this.main = main; - this.position = position; - } - - void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index e41d2b782..069cfce2b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -1,36 +1,66 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.vector.Vector2; +import com.dfsek.terra.api.vector.Vector3; +import net.jafama.FastMath; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; -public class BlockFunction extends AbstractBlockFunction { - private final BlockState data; +public class BlockFunction implements Function { + protected final Returnable x, y, z; - public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable data, Returnable overwrite, TerraPlugin main, Position position) throws ParseException { - super(x, y, z, data, overwrite, main, position); + private final Map data = new HashMap<>(); + protected final Returnable blockData; + protected final TerraPlugin main; + private final Returnable overwrite; + private final Position position; - if(!(data instanceof ConstantExpression)) throw new ParseException("Block data must be constant", data.getPosition()); - try { - this.data = main.getWorldHandle().createBlockData(((ConstantExpression) data).getConstant()); - } catch(IllegalArgumentException e) { - throw new ParseException("Could not parse block data", data.getPosition(), e); - } + public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, Returnable overwrite, TerraPlugin main, Position position) { + this.x = x; + this.y = y; + this.z = z; + this.blockData = blockData; + this.overwrite = overwrite; + this.main = main; + this.position = position; + } + + void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + + RotationUtil.rotateVector(xz, arguments.getRotation()); + + RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockState rot = data.clone(); + BlockState rot = data.computeIfAbsent(blockData.apply(implementationArguments, variableMap), main.getWorldHandle()::createBlockData).clone(); setBlock(implementationArguments, variableMap, arguments, rot); return null; } + + @Override + public Position getPosition() { + return position; + } + + @Override + public ReturnType returnType() { + return ReturnType.VOID; + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java deleted file mode 100644 index 3a3ec57e3..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/DynamicBlockFunction.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; - -import java.util.HashMap; -import java.util.Map; - -public class DynamicBlockFunction extends AbstractBlockFunction { - private final Map data = new HashMap<>(); - private final Position position; - - - public DynamicBlockFunction(Returnable x, Returnable y, Returnable z, Returnable data, Returnable overwrite, TerraPlugin main, Position position) { - super(x, y, z, data, overwrite, main, position); - this.position = position; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockState rot = data.computeIfAbsent(blockData.apply(implementationArguments, variableMap), main.getWorldHandle()::createBlockData).clone(); - setBlock(implementationArguments, variableMap, arguments, rot); - return null; - } -} From 5c923167255bb23779a76e5e00d601546df2f7d7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 15:18:42 -0700 Subject: [PATCH 0320/1529] implement BlockFunction Constant override --- .../script/builders/BlockFunctionBuilder.java | 4 ++++ .../script/functions/BlockFunction.java | 21 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 0dd732615..1667b4bf5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; @@ -23,6 +24,9 @@ public class BlockFunctionBuilder implements FunctionBuilder { if(argumentList.size() < 4) throw new ParseException("Expected data", position); Returnable booleanReturnable = new BooleanConstant(true, position); if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); + if(argumentList.get(3) instanceof StringConstant) { + return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), booleanReturnable, main, position); + } return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, main, position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 069cfce2b..2bc479789 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; @@ -14,7 +15,6 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import net.jafama.FastMath; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -49,11 +49,15 @@ public class BlockFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockState rot = data.computeIfAbsent(blockData.apply(implementationArguments, variableMap), main.getWorldHandle()::createBlockData).clone(); + BlockState rot = getBlockState(implementationArguments, variableMap).clone(); setBlock(implementationArguments, variableMap, arguments, rot); return null; } + protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { + return data.computeIfAbsent(blockData.apply(arguments, variableMap), main.getWorldHandle()::createBlockData); + } + @Override public Position getPosition() { return position; @@ -63,4 +67,17 @@ public class BlockFunction implements Function { public ReturnType returnType() { return ReturnType.VOID; } + + public static class Constant extends BlockFunction { + private final BlockState state; + public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, Returnable overwrite, TerraPlugin main, Position position) { + super(x, y, z, blockData, overwrite, main, position); + this.state = main.getWorldHandle().createBlockData(blockData.getConstant()); + } + + @Override + protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { + return state; + } + } } From af1520eb83fdf1cd3e47568b8087e5cb8022ace2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 16:18:06 -0700 Subject: [PATCH 0321/1529] fix gradle dependency stuff --- buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt | 2 +- .../src/main/kotlin/com/dfsek/terra/DistributionConfig.kt | 5 ----- common/api/build.gradle.kts | 3 --- common/implementation/build.gradle.kts | 4 ++-- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index a73154b3f..c55c30873 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -33,6 +33,6 @@ fun Project.configureDependencies() { dependencies { "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.7.0") "testImplementation"("org.junit.jupiter:junit-jupiter-engine:5.7.0") - "api"("org.jetbrains:annotations:20.1.0") + "compileOnly"("org.jetbrains:annotations:20.1.0") } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index e0c39062d..c0085d9dc 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -123,12 +123,7 @@ fun Project.configureDistribution() { archiveClassifier.set("shaded") setVersion(project.version) relocate("org.apache.commons", "com.dfsek.terra.lib.commons") - relocate("net.jafama", "com.dfsek.terra.lib.jafama") relocate("org.objectweb.asm", "com.dfsek.terra.lib.asm") - relocate("com.google.errorprone", "com.dfsek.terra.lib.google.errorprone") - relocate("com.google.j2objc", "com.dfsek.terra.lib.google.j2objc") - relocate("org.checkerframework", "com.dfsek.terra.lib.checkerframework") - relocate("org.javax.annotation", "com.dfsek.terra.lib.javax.annotation") relocate("org.json", "com.dfsek.terra.lib.json") relocate("org.yaml", "com.dfsek.terra.lib.yaml") } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index a903cf25c..2b8bc9fa9 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -19,9 +19,6 @@ dependencies { "shadedApi"("com.dfsek.tectonic:yaml:2.1.2") "shadedApi"("net.jafama:jafama:2.3.2") - "shadedApi"("org.yaml:snakeyaml:1.27") - "shadedApi"("org.ow2.asm:asm:9.0") - "compileOnly"("com.google.guava:guava:30.0-jre") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index d4cde1973..3d6c61866 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -18,11 +18,11 @@ dependencies { "shadedApi"(project(":common:loader:addon")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") - "shadedApi"("commons-io:commons-io:2.6") - "shadedImplementation"("org.apache.commons:commons-text:1.9") + "shadedImplementation"("org.yaml:snakeyaml:1.27") + "shadedImplementation"("org.ow2.asm:asm:9.0") "compileOnly"("com.google.guava:guava:30.0-jre") From 67c45b7be3a32b051a3e54d49c9f967ac8910210 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 19:58:42 -0700 Subject: [PATCH 0322/1529] functional event API --- .../com/dfsek/terra/api/event/EventHandler.java | 7 +++++++ .../com/dfsek/terra/api/event/EventManager.java | 8 ++++++++ .../terra/api/event/functional/EventContext.java | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java new file mode 100644 index 000000000..dc509792d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.event; + +import com.dfsek.terra.api.event.events.Event; + +public interface EventHandler { + void handle(Event event); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java index 28453d401..1da2f5262 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java @@ -2,6 +2,8 @@ package com.dfsek.terra.api.event; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.functional.EventContext; +import com.dfsek.terra.api.util.reflection.TypeKey; /** * Manages event registration and triggering. @@ -22,4 +24,10 @@ public interface EventManager { * @param listener Listener to register. */ void registerListener(TerraAddon addon, EventListener listener); + + EventContext register(Class clazz); + + EventContext register(TypeKey clazz); + + void registerHandler(EventHandler handler); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java b/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java new file mode 100644 index 000000000..444c9d8c6 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.api.event.functional; + +import com.dfsek.terra.api.event.EventManager; +import com.dfsek.terra.api.event.events.Event; + +import java.util.function.Consumer; + +public interface EventContext { + EventContext then(Consumer action); + + EventContext priority(int priority); + + EventContext failThrough(); + + EventContext global(); +} From a030fb93f35eac7c2c36a3ba9bb0f54c831a2b8a Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:00:50 -0700 Subject: [PATCH 0323/1529] use functional events in BiomePipelineAddon --- .../biome/pipeline/BiomePipelineAddon.java | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index fec99804d..51474ef9b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -25,7 +25,6 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.reflection.TypeKey; @@ -35,7 +34,7 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @Addon("biome-provider-pipeline") @Author("Terra") @Version("1.0.0") -public class BiomePipelineAddon extends TerraAddon implements EventListener { +public class BiomePipelineAddon extends TerraAddon { @Inject private TerraPlugin main; @@ -44,22 +43,21 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener { @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) - .applyLoader(Stage.class, new StageLoader()) - .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) - .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(NoiseSource.class, NoiseSourceTemplate::new) - .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) - .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) - .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) - .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) - .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) - .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) - .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) + .applyLoader(Stage.class, new StageLoader()) + .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) + .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) + .applyLoader(NoiseSource.class, NoiseSourceTemplate::new) + .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) + .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) + .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) + .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) + .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) + .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) + .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) + .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader())) + .failThrough(); } } From 9713a7a7ba44bb685bc8cab16402684bd29473e5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:03:37 -0700 Subject: [PATCH 0324/1529] implement functional events in NoiseChunkGenerator3DAddon --- .../NoiseChunkGenerator3DAddon.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 6aa2c2ad5..995eb2cd5 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -21,24 +21,28 @@ import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") -public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListener { +public class NoiseChunkGenerator3DAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); + event.getPack() + .applyLoader(SlantHolder.class, new SlantHolderLoader()) + .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + }) + .failThrough(); - public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); - event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()) - .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); - } + main.getEventManager() + .register(ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); + } + }); } } From facd878788e9f9d1965c80e962536b656721ac91 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:04:53 -0700 Subject: [PATCH 0325/1529] functional events in BiomeAddon --- .../NoiseChunkGenerator3DAddon.java | 2 -- .../com/dfsek/terra/addons/biome/BiomeAddon.java | 15 +++++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 995eb2cd5..92e826660 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -10,11 +10,9 @@ 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index 7ca4191f7..c87b59c45 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -7,24 +7,23 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-biome") @Author("Terra") @Version("1.0.0") -public class BiomeAddon extends TerraAddon implements EventListener { +public class BiomeAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); - event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); + event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + }); } } From 3f42b9ab3ee5904f5598343ada9c1a0894649cf3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:06:28 -0700 Subject: [PATCH 0326/1529] functional events in DistributorAddon --- .../feature/distributor/DistributorAddon.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 83a2bde8f..b5a937777 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -10,7 +10,6 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -22,23 +21,22 @@ import java.util.function.Supplier; @Addon("config-distributors") @Version("1.0.0") @Author("Terra") -public class DistributorAddon extends TerraAddon implements EventListener { +public class DistributorAddon extends TerraAddon { public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); + distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); + distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); - - public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); - distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); - distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); - - event.getPack() - .applyLoader(Point.class, PointTemplate::new); + event.getPack() + .applyLoader(Point.class, PointTemplate::new); + }); } } From 36ce88af0a30c78fa6a9d08df83cfaf0485505d8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:07:30 -0700 Subject: [PATCH 0327/1529] functional events in FeatureAddon --- .../com/dfsek/terra/addons/feature/FeatureAddon.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 144f2088c..56c73f474 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -5,23 +5,20 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-feature") @Version("1.0.0") @Author("Terra") -public class FeatureAddon extends TerraAddon implements EventListener { +public class FeatureAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)); } } From 502d2b5814d79d7dda9ddac6bb8b6695f2bf218d Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:08:23 -0700 Subject: [PATCH 0328/1529] functional events in FloraAddon --- .../com/dfsek/terra/addons/flora/FloraAddon.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 101a6aa90..911101aa1 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -7,25 +7,23 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @Addon("config-flora") @Author("Terra") @Version("0.1.0") -public class FloraAddon extends TerraAddon implements EventListener { +public class FloraAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); - event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); + event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); + }); } } From dce3742fcb28ec0fb27a661c11af8641d8de6b41 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:09:43 -0700 Subject: [PATCH 0329/1529] LocatorAddon functional events --- .../addons/feature/locator/LocatorAddon.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 0427d9dd4..7a23a6b45 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -8,7 +8,6 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -20,7 +19,7 @@ import java.util.function.Supplier; @Addon("config-locators") @Version("1.0.0") @Author("Terra") -public class LocatorAddon extends TerraAddon implements EventListener { +public class LocatorAddon extends TerraAddon { public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() {}; @Inject @@ -28,12 +27,12 @@ public class LocatorAddon extends TerraAddon implements EventListener { @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); - locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); - locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); + locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); + locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); + }); } } From a0a15802e47659bcc02ab8d1923b222d632c86d1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:10:57 -0700 Subject: [PATCH 0330/1529] functional events in NoiseAddon --- .../dfsek/terra/addons/noise/NoiseAddon.java | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 0af3b2782..476f25008 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -30,7 +30,6 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.noise.NoiseSampler; @@ -44,7 +43,7 @@ import java.util.function.Supplier; @Addon("config-noise-function") @Author("Terra") @Version("1.0.0") -public class NoiseAddon extends TerraAddon implements EventListener { +public class NoiseAddon extends TerraAddon { @Inject private TerraPlugin plugin; @@ -52,53 +51,53 @@ public class NoiseAddon extends TerraAddon implements EventListener { @Override public void initialize() { - plugin.getEventManager().registerListener(this, this); - } + plugin.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); + event.getPack() + .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) + .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) + .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); - public void packPreLoad(ConfigPackPreLoadEvent event) { - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); - event.getPack() - .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) - .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); + noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); - noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); - noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); - noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); + noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); - noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); + noiseRegistry.register("DOMAINWARP", DomainWarpTemplate::new); - noiseRegistry.register("DOMAINWARP", DomainWarpTemplate::new); + noiseRegistry.register("FBM", BrownianMotionTemplate::new); + noiseRegistry.register("PINGPONG", PingPongTemplate::new); + noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.register("FBM", BrownianMotionTemplate::new); - noiseRegistry.register("PINGPONG", PingPongTemplate::new); - noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - - noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - noiseRegistry.register("GABOR", GaborNoiseTemplate::new); + noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.register("GABOR", GaborNoiseTemplate::new); - noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); + noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); + noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); - noiseRegistry.register("KERNEL", KernelTemplate::new); + noiseRegistry.register("KERNEL", KernelTemplate::new); - Map packFunctions = new HashMap<>(); - noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); + Map packFunctions = new HashMap<>(); + noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); - NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); - event.loadTemplate(template); - packFunctions.putAll(template.getNoiseBuilderMap()); + NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); + event.loadTemplate(template); + packFunctions.putAll(template.getNoiseBuilderMap()); + }); } } From 089eac9dc5cf5790bb0c6c50ecbd70535aa198c2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:12:02 -0700 Subject: [PATCH 0331/1529] functional events in OreAddon --- .../com/dfsek/terra/addons/ore/OreAddon.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 16ec7e418..3f2c171ba 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -5,27 +5,25 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("config-ore") @Author("Terra") @Version("1.0.0") -public class OreAddon extends TerraAddon implements EventListener { +public class OreAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); + }); } } From bff0106e65e9846709ce923f1869fcedbff34b6f Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:12:53 -0700 Subject: [PATCH 0332/1529] functional events in PaletteAddon --- .../dfsek/terra/addons/palette/PaletteAddon.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 45817a62b..f8a711f10 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -7,24 +7,23 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-palette") @Author("Terra") @Version("1.0.0") -public class PaletteAddon extends TerraAddon implements EventListener { +public class PaletteAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); - event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); + event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); + }); } } From 7363a305afb6640713c693f9e82d7ea55a2c7182 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:13:59 -0700 Subject: [PATCH 0333/1529] functional events in StructureAddon --- .../dfsek/terra/addons/structure/StructureAddon.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 4824b8a11..004bf5097 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -5,7 +5,6 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @@ -13,16 +12,14 @@ import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @Addon("config-structure") @Version("1.0.0") @Author("Terra") -public class StructureAddon extends TerraAddon implements EventListener { +public class StructureAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onConfigLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)); } } From ec26e7b1b0dfde597dc70b80768a98b9e01effd8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:15:40 -0700 Subject: [PATCH 0334/1529] functional events in FeatureGenerationAddon --- .../feature/FeatureGenerationAddon.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 9016d06da..4c33967a4 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -6,7 +6,6 @@ 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @@ -16,22 +15,22 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-feature") @Version("1.0.0") @Author("Terra") -public class FeatureGenerationAddon extends TerraAddon implements EventListener { +public class FeatureGenerationAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main))); - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main)); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); - } + main.getEventManager() + .register(ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); + } + }); } } From 315da531b78376fb6c6b9dd40e03d8132afe3efe Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:16:42 -0700 Subject: [PATCH 0335/1529] delete TerraListener --- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 3 +- .../terra/bukkit/listeners/TerraListener.java | 33 ------------------- 2 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java 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 df69e303f..289cf518f 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 @@ -33,7 +33,6 @@ import com.dfsek.terra.bukkit.handles.BukkitWorldHandle; import com.dfsek.terra.bukkit.listeners.CommonListener; import com.dfsek.terra.bukkit.listeners.PaperListener; import com.dfsek.terra.bukkit.listeners.SpigotListener; -import com.dfsek.terra.bukkit.listeners.TerraListener; import com.dfsek.terra.bukkit.util.PaperUtil; import com.dfsek.terra.bukkit.world.BukkitBiome; import com.dfsek.terra.bukkit.world.BukkitWorld; @@ -343,7 +342,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { @Override public void initialize() { - main.getEventManager().registerListener(this, new TerraListener(main)); + } } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java deleted file mode 100644 index c28474109..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.bukkit.listeners; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.event.EventListener; -import com.dfsek.terra.api.event.annotations.Global; -import com.dfsek.terra.api.event.annotations.Priority; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.bukkit.world.BukkitTree; -import org.bukkit.TreeType; - -public class TerraListener implements EventListener { - private final TerraPlugin main; - - public TerraListener(TerraPlugin main) { - this.main = main; - } - - @Global - @Priority(Priority.LOWEST) - public void injectTrees(ConfigPackPreLoadEvent event) { - for(TreeType value : TreeType.values()) { - try { - String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); - event.getPack().getCheckedRegistry(Tree.class).register(id, new BukkitTree(value, main)); - event.getPack().getCheckedRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" - } catch(DuplicateEntryException ignore) { // If another com.dfsek.terra.addon has already registered trees, do nothing. - } - } - } -} From 185df6e8a4fbd2a8cc994d59fd1b7f5af16dee90 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:17:45 -0700 Subject: [PATCH 0336/1529] functional events in YamlAddon --- .../com/dfsek/terra/addons/yaml/YamlAddon.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index 4e394f343..ea6eec090 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -6,26 +6,23 @@ 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.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("language-yaml") @Version("1.0.0") @Author("Terra") -public class YamlAddon extends TerraAddon implements EventListener { +public class YamlAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void loadYamlConfigs(ConfigurationDiscoveryEvent event) { - event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { - main.getDebugLogger().info("Discovered config " + entry.getKey()); - event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); - })); + main.getEventManager() + .register(ConfigurationDiscoveryEvent.class) + .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { + main.getDebugLogger().info("Discovered config " + entry.getKey()); + event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); + }))); } } From d8a5951f6e7a1d4a8aa22eced7e48a6eec8a2e4b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:19:12 -0700 Subject: [PATCH 0337/1529] functional events in FloraGenerationAddon --- .../flora/FloraGenerationAddon.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index de6f38d09..04523b1c7 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -5,7 +5,6 @@ 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.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; @@ -15,24 +14,26 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Addon("generation-stage-flora") @Version("1.0.0") @Author("Terra") -public class FloraGenerationAddon extends TerraAddon implements EventListener { +public class FloraGenerationAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); + }); - public void onPackLoad(ConfigPackPreLoadEvent event) { - event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); - } - - public void onBiomeLoad(ConfigurationLoadEvent event) { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); - } + main.getEventManager() + .register(ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); + } + }); } } From 1d6d63b3996fc74f817638485e22d60345985e99 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:20:32 -0700 Subject: [PATCH 0338/1529] functional events in TerraScriptAddon --- .../addons/terrascript/TerraScriptAddon.java | 41 ++++++++----------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 862e1b287..c79073cc7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -1,6 +1,5 @@ package com.dfsek.terra.addons.terrascript; -import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.script.StructureScript; @@ -9,11 +8,9 @@ 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.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; @@ -23,31 +20,27 @@ import java.util.Map; @Addon("structure-terrascript-loader") @Author("Terra") @Version("1.0.0") -public class TerraScriptAddon extends TerraAddon implements EventListener { +public class TerraScriptAddon extends TerraAddon { @Inject private TerraPlugin main; @Override public void initialize() { - main.getEventManager().registerListener(this, this); - } - - public void onPackLoad(ConfigPackPreLoadEvent event) throws ConfigException { - CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); - try { - structureRegistry.register(structureScript.getId(), structureScript); - } catch(DuplicateEntryException e) { - throw new LoadException("Duplicate structure: ", e); - } - } catch(ParseException e) { - throw new LoadException("Failed to load script: ", e); - } - } - }).close(); + main.getEventManager() + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); + event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { + for(Map.Entry entry : entries) { + try { + StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); + structureRegistry.register(structureScript.getId(), structureScript); + } catch(ParseException e) { + throw new LoadException("Failed to load script: ", e); + } + } + }).close(); + }); } } From 6f1938ef8230bcacc7d6ad813c4fa3a50bbb3201 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 20:23:45 -0700 Subject: [PATCH 0339/1529] functional events in FabricAddon --- .../dfsek/terra/fabric/TerraFabricPlugin.java | 115 +++++++++--------- 1 file changed, 58 insertions(+), 57 deletions(-) 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 39f9ac747..75d9417cd 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 @@ -14,13 +14,9 @@ import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; -import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.annotations.Global; -import com.dfsek.terra.api.event.annotations.Priority; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.events.config.type.ConfigTypePostLoadEvent; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; @@ -69,7 +65,6 @@ import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.decorator.Decorator; import net.minecraft.world.gen.decorator.NopeDecoratorConfig; import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.ConfiguredFeatures; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.FeatureConfig; import org.apache.commons.io.FileUtils; @@ -288,67 +283,73 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @Addon("Terra-Fabric") @Author("Terra") @Version("1.0.0") - public final class FabricAddon extends TerraAddon implements EventListener { + public final class FabricAddon extends TerraAddon { private final Map> templates = new HashMap<>(); @Override public void initialize() { - eventManager.registerListener(this, this); - } - - @Global - public void onPackLoad(ConfigPackPreLoadEvent event) { - PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - if(template.doRegistryInjection()) { - BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { - if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { + eventManager + .register(ConfigPackPreLoadEvent.class) + .then(event -> { + PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); try { - event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); - debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); - } catch(DuplicateEntryException ignored) { + event.loadTemplate(template); + } catch(ConfigException e) { + e.printStackTrace(); } - } - }); - } - templates.put(event.getPack(), Pair.of(template, null)); + if(template.doRegistryInjection()) { + BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { + if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { + try { + event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); + } catch(DuplicateEntryException ignored) { + } + } + }); + } + templates.put(event.getPack(), Pair.of(template, null)); + }) + .global(); + + eventManager + .register(ConfigPackPostLoadEvent.class) + .then(event -> { + PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); + + try { + event.loadTemplate(template); + } catch(ConfigException e) { + e.printStackTrace(); + } + + templates.get(event.getPack()).setRight(template); + }) + .priority(100) + .global(); + + eventManager + .register(BiomeRegistrationEvent.class) + .then(event -> { + logger.info("Registering biomes..."); + Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); + configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + logger.info("Biomes registered."); + }) + .global(); + + eventManager + .register(GameInitializationEvent.class) + .then(event -> { + TerraFabricPlugin main = TerraFabricPlugin.getInstance(); + main.logger().info("Loading config packs..."); + configRegistry.loadAll(TerraFabricPlugin.this); + logger.info("Loaded packs."); + }) + .global(); } - @Priority(Priority.HIGHEST) - @Global - public void createInjectionOptions(ConfigPackPostLoadEvent event) { - PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); - - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - templates.get(event.getPack()).setRight(template); - } - - @Global - public void injectBiomes(BiomeRegistrationEvent event) { - logger.info("Registering biomes..."); - Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. - logger.info("Biomes registered."); - } - - @Global - public void initializePacks(GameInitializationEvent event) { - TerraFabricPlugin main = TerraFabricPlugin.getInstance(); - main.logger().info("Loading config packs..."); - configRegistry.loadAll(TerraFabricPlugin.this); - logger.info("Loaded packs."); - } private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { try { From 953318d9c06db054b5f1e510cfecd312fd70a1f3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:04:40 -0700 Subject: [PATCH 0340/1529] implement FunctionalEventHandler --- .../biome/pipeline/BiomePipelineAddon.java | 4 +- .../NoiseChunkGenerator3DAddon.java | 7 +- .../dfsek/terra/addons/biome/BiomeAddon.java | 4 +- .../feature/distributor/DistributorAddon.java | 4 +- .../terra/addons/feature/FeatureAddon.java | 4 +- .../dfsek/terra/addons/flora/FloraAddon.java | 4 +- .../addons/feature/locator/LocatorAddon.java | 4 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 4 +- .../com/dfsek/terra/addons/ore/OreAddon.java | 4 +- .../terra/addons/palette/PaletteAddon.java | 4 +- .../addons/structure/StructureAddon.java | 4 +- .../feature/FeatureGenerationAddon.java | 7 +- .../flora/FloraGenerationAddon.java | 7 +- .../dfsek/terra/addons/yaml/YamlAddon.java | 4 +- .../addons/terrascript/TerraScriptAddon.java | 4 +- .../dfsek/terra/api/event/EventManager.java | 18 +--- .../functional/FunctionalEventHandler.java | 12 +++ .../dfsek/terra/event/EventContextImpl.java | 76 +++++++++++++ .../dfsek/terra/event/EventManagerImpl.java | 101 ++++-------------- .../event/FunctionalEventHandlerImpl.java | 65 +++++++++++ .../dfsek/terra/fabric/TerraFabricPlugin.java | 13 ++- 21 files changed, 234 insertions(+), 120 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 51474ef9b..07d86de35 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -26,6 +26,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -44,7 +45,8 @@ public class BiomePipelineAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 92e826660..d6cbaf0f0 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -12,6 +12,7 @@ import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @@ -26,7 +27,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); event.getPack() @@ -36,7 +38,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon { .failThrough(); main.getEventManager() - .register(ConfigurationLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) .then(event -> { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index c87b59c45..c2ebf164d 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -8,6 +8,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-biome") @@ -20,7 +21,8 @@ public class BiomeAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index b5a937777..f738575c3 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -11,6 +11,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.feature.Distributor; @@ -29,7 +30,8 @@ public class DistributorAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 56c73f474..0ea6cc4c3 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -6,6 +6,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-feature") @@ -18,7 +19,8 @@ public class FeatureAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 911101aa1..b8d8d74a7 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -8,6 +8,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-flora") @@ -20,7 +21,8 @@ public class FloraAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 7a23a6b45..f90430312 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -9,6 +9,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.feature.Locator; @@ -28,7 +29,8 @@ public class LocatorAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 476f25008..a91fdc441 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -31,6 +31,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -52,7 +53,8 @@ public class NoiseAddon extends TerraAddon { @Override public void initialize() { plugin.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); event.getPack() diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 3f2c171ba..5d16f5c0d 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -6,6 +6,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -20,7 +21,8 @@ public class OreAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index f8a711f10..de680db21 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -8,6 +8,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("config-palette") @@ -20,7 +21,8 @@ public class PaletteAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 004bf5097..2b3f524b3 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -6,6 +6,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @@ -19,7 +20,8 @@ public class StructureAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)); } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 4c33967a4..58658cbb2 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -22,11 +23,13 @@ public class FeatureGenerationAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main))); main.getEventManager() - .register(ConfigurationLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) .then(event -> { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 04523b1c7..bc6ae259b 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -22,14 +23,16 @@ public class FloraGenerationAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); }); main.getEventManager() - .register(ConfigurationLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) .then(event -> { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index ea6eec090..42c9ef881 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -7,6 +7,7 @@ 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.events.config.ConfigurationDiscoveryEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; @Addon("language-yaml") @@ -19,7 +20,8 @@ public class YamlAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigurationDiscoveryEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationDiscoveryEvent.class) .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { main.getDebugLogger().info("Discovered config " + entry.getKey()); event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index c79073cc7..9702777f3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -9,6 +9,7 @@ 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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.LootTable; @@ -27,7 +28,8 @@ public class TerraScriptAddon extends TerraAddon { @Override public void initialize() { main.getEventManager() - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java index 1da2f5262..7707971d2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.event; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.functional.EventContext; import com.dfsek.terra.api.util.reflection.TypeKey; @@ -13,21 +12,10 @@ public interface EventManager { * Call an event, and return the execution status. * * @param event Event to pass to all registered EventListeners. - * @return False if the event is cancellable and has been cancelled, otherwise true. */ - boolean callEvent(Event event); + void callEvent(Event event); - /** - * Register an {@link EventListener} under an {@link TerraAddon}. - * - * @param addon Addon to register listener for. - * @param listener Listener to register. - */ - void registerListener(TerraAddon addon, EventListener listener); + void registerHandler(Class clazz, T handler); - EventContext register(Class clazz); - - EventContext register(TypeKey clazz); - - void registerHandler(EventHandler handler); + T getHandler(Class clazz); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java b/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java new file mode 100644 index 000000000..242cb4d2c --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.api.event.functional; + +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.EventHandler; +import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.util.reflection.TypeKey; + +public interface FunctionalEventHandler extends EventHandler { + EventContext register(TerraAddon addon, Class clazz); + + EventContext register(TerraAddon addon, TypeKey clazz); +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java new file mode 100644 index 000000000..21c6e37a9 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -0,0 +1,76 @@ +package com.dfsek.terra.event; + +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.events.PackEvent; +import com.dfsek.terra.api.event.functional.EventContext; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +public class EventContextImpl implements EventContext, Comparable> { + private final List> actions = new ArrayList<>(); + private int priority; + private boolean failThrough = false; + private boolean global = false; + + private final TerraAddon addon; + + public EventContextImpl(TerraAddon addon) { + this.addon = addon; + } + + public void handle(T event) { + if(event instanceof PackEvent) { + + } + actions.forEach(action -> action.accept(event)); + } + + @Override + public EventContext then(Consumer action) { + actions.add(action); + return this; + } + + @Override + public EventContext priority(int priority) { + this.priority = priority; + return this; + } + + @Override + public EventContext failThrough() { + this.failThrough = true; + return this; + } + + @Override + public EventContext global() { + this.global = true; + return this; + } + + @Override + public int compareTo(@NotNull EventContextImpl o) { + return this.priority - o.priority; + } + + public boolean isGlobal() { + return global; + } + + public int getPriority() { + return priority; + } + + public TerraAddon getAddon() { + return addon; + } + + public boolean isFailThrough() { + return failThrough; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index 4b2d13d6d..604dff846 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -2,110 +2,45 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.EventHandler; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.annotations.Global; -import com.dfsek.terra.api.event.annotations.Priority; -import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.Event; -import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.util.reflection.ReflectionUtil; +import com.dfsek.terra.api.event.functional.EventContext; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.util.reflection.TypeKey; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class EventManagerImpl implements EventManager { - private final Map, List> listeners = new HashMap<>(); + private final Map, EventHandler> handlers = new HashMap<>(); private final TerraPlugin main; public EventManagerImpl(TerraPlugin main) { this.main = main; + registerHandler(FunctionalEventHandler.class, new FunctionalEventHandlerImpl(main)); // default handler } @Override - public boolean callEvent(Event event) { - listeners.getOrDefault(event.getClass(), Collections.emptyList()).forEach(listenerHolder -> { - try { - if(event instanceof PackEvent && !listenerHolder.global) { - PackEvent packEvent = (PackEvent) event; - if(packEvent - .getPack() - .addons() - .contains(listenerHolder.addon)) { - listenerHolder.method.invoke(listenerHolder.listener, event); - } - } else { - listenerHolder.method.invoke(listenerHolder.listener, event); - } - } catch(InvocationTargetException e) { - StringWriter writer = new StringWriter(); - e.getTargetException().printStackTrace(new PrintWriter(writer)); - main.logger().warning("Exception occurred during event handling:"); - main.logger().warning(writer.toString()); - main.logger().warning("Report this to the maintainers of " + listenerHolder.method.getName()); - } catch(Exception e) { - StringWriter writer = new StringWriter(); - e.printStackTrace(new PrintWriter(writer)); - main.logger().warning("Exception occurred during event handling:"); - main.logger().warning(writer.toString()); - main.logger().warning("Report this to the maintainers of " + listenerHolder.method.getName()); - } - } - ); - if(event instanceof Cancellable) return !((Cancellable) event).isCancelled(); - return true; + public void callEvent(Event event) { + handlers.values().forEach(handler -> handler.handle(event)); + } + + @Override + public void registerHandler(Class clazz, T handler) { + handlers.put(clazz, handler); } @SuppressWarnings("unchecked") @Override - public void registerListener(TerraAddon addon, EventListener listener) { - Class listenerClass = listener.getClass(); - Method[] methods = ReflectionUtil.getMethods(listenerClass); - - for(Method method : methods) { - if(method.getParameterCount() != 1) continue; // Check that parameter count is only 1. - Class eventParam = method.getParameterTypes()[0]; - if(!Event.class.isAssignableFrom(eventParam)) continue; // Check that parameter is an Event. - - Priority p = method.getAnnotation(Priority.class); - - int priority = p == null ? 0 : p.value(); - - method.setAccessible(true); - - List holders = listeners.computeIfAbsent((Class) eventParam, e -> new ArrayList<>()); - - holders.add(new ListenerHolder(method, listener, priority, addon, method.getAnnotation(Global.class) != null)); - - holders.sort(Comparator.comparingInt(ListenerHolder::getPriority)); // Sort priorities. - } - } - - private static final class ListenerHolder { - private final Method method; - private final EventListener listener; - private final int priority; - private final TerraAddon addon; - private final boolean global; - - private ListenerHolder(Method method, EventListener listener, int priority, TerraAddon addon, boolean global) { - this.method = method; - this.listener = listener; - this.priority = priority; - this.addon = addon; - this.global = global; - } - - public int getPriority() { - return priority; - } + public T getHandler(Class clazz) { + return (T) handlers.computeIfAbsent(clazz, c -> { + throw new IllegalArgumentException("No event handler registered for class " + clazz.getCanonicalName()); + }); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java new file mode 100644 index 000000000..6e2b7fdc0 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -0,0 +1,65 @@ +package com.dfsek.terra.event; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.events.PackEvent; +import com.dfsek.terra.api.event.functional.EventContext; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.util.reflection.TypeKey; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FunctionalEventHandlerImpl implements FunctionalEventHandler { + private final Map>> contextMap = new HashMap<>(); + + private final TerraPlugin main; + + public FunctionalEventHandlerImpl(TerraPlugin main) { + this.main = main; + } + + @SuppressWarnings("unchecked") + @Override + public void handle(Event event) { + contextMap.getOrDefault(event.getClass(), Collections.emptyList()).forEach(context -> { + try { + if(event instanceof PackEvent) { + if((context.isGlobal() || ((PackEvent) event).getPack().addons().contains(context.getAddon()))) { + ((EventContextImpl) context).handle(event); + } + } else { + ((EventContextImpl) context).handle(event); + } + } catch(Exception e) { + if(context.isFailThrough()) throw e; // Rethrow if it's fail-through. + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + main.logger().warning("Exception occurred during event handling:"); + main.logger().warning(writer.toString()); + main.logger().warning("Report this to the maintainers of " + context.getAddon().getName() + ", " + context.getAddon().getAuthor()); + } + }); + } + + @Override + public EventContext register(TerraAddon addon, Class clazz) { + EventContextImpl eventContext = new EventContextImpl<>(addon); + contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext); + return eventContext; + } + + @Override + public EventContext register(TerraAddon addon, TypeKey clazz) { + EventContextImpl eventContext = new EventContextImpl<>(addon); + contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext); + return eventContext; + } +} 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 75d9417cd..137784b29 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 @@ -17,6 +17,7 @@ import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; @@ -289,7 +290,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @Override public void initialize() { eventManager - .register(ConfigPackPreLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) .then(event -> { PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); try { @@ -314,7 +316,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { .global(); eventManager - .register(ConfigPackPostLoadEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPostLoadEvent.class) .then(event -> { PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); @@ -330,7 +333,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { .global(); eventManager - .register(BiomeRegistrationEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, BiomeRegistrationEvent.class) .then(event -> { logger.info("Registering biomes..."); Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); @@ -340,7 +344,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { .global(); eventManager - .register(GameInitializationEvent.class) + .getHandler(FunctionalEventHandler.class) + .register(this, GameInitializationEvent.class) .then(event -> { TerraFabricPlugin main = TerraFabricPlugin.getInstance(); main.logger().info("Loading config packs..."); From 8eddffb0a6cdfb98d01a45d201ddb9d668e8aa06 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:05:14 -0700 Subject: [PATCH 0341/1529] delete EventListener --- .../com/dfsek/terra/api/event/EventListener.java | 12 ------------ .../java/com/dfsek/terra/event/EventManagerImpl.java | 8 -------- 2 files changed, 20 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java deleted file mode 100644 index cde546369..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/event/EventListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dfsek.terra.api.event; - -import com.dfsek.terra.api.event.events.Event; - -/** - * Marker interface for a class that contains event listener methods. - * - * @see Event - * @see EventManager - */ -public interface EventListener { -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index 604dff846..4ee161e64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -1,20 +1,12 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.EventHandler; -import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.Event; -import com.dfsek.terra.api.event.functional.EventContext; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.util.reflection.TypeKey; -import java.lang.reflect.Method; -import java.lang.reflect.Type; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; public class EventManagerImpl implements EventManager { From b630ab6531925f57c551916d676cd572859ea33b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:06:20 -0700 Subject: [PATCH 0342/1529] remove event annotations --- .../terra/api/event/annotations/Global.java | 17 -------- .../terra/api/event/annotations/Priority.java | 39 ------------------- .../terra/api/event/events/PackEvent.java | 5 +-- 3 files changed, 2 insertions(+), 59 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java deleted file mode 100644 index f20d2f0ed..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.api.event.annotations; - -import com.dfsek.terra.api.event.events.PackEvent; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Specifies that an event handler is to handle all {@link PackEvent}s, regardless of whether the pack - * depends on the com.dfsek.terra.addon's listener. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Global { -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java deleted file mode 100644 index 08c0d86c9..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.api.event.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotated listener methods will have a specific priority set. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Priority { - /** - * Highest possible priority. Listeners with this priority will always be invoked last. - */ - int HIGHEST = Integer.MAX_VALUE; - /** - * Lowest possible priority. Listeners with this priority will always be invoked first. - */ - int LOWEST = Integer.MIN_VALUE; - /** - * Default priority. - */ - int NORMAL = 0; - /** - * High priority. - */ - int HIGH = 1; - /** - * Low Priority. - */ - int LOW = -1; - - /** - * @return Priority of this event. Events are executed from lowest to highest priorities. - */ - int value(); -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index 3c774b4ab..25c1eea10 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -1,13 +1,12 @@ package com.dfsek.terra.api.event.events; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.event.annotations.Global; /** * An event with functionality directly linked to a {@link ConfigPack}. *

- * PackEvents are only invoked when the pack specifies the com.dfsek.terra.addon in its - * {@code com.dfsek.terra.addon} key (or when the listener is annotated {@link Global}). + * PackEvents are only invoked when the pack specifies the addon in its + * {@code addon} key (or when the listener is global). */ @SuppressWarnings("InterfaceMayBeAnnotatedFunctional") public interface PackEvent extends Event { From 2175ea849fc25d9632a337519981d3008336a703 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:09:05 -0700 Subject: [PATCH 0343/1529] only failthrough on FailThroughEvent --- .../dfsek/terra/api/event/events/FailThroughEvent.java | 8 ++++++++ .../event/events/config/ConfigurationDiscoveryEvent.java | 3 ++- .../api/event/events/config/ConfigurationLoadEvent.java | 3 ++- .../api/event/events/config/pack/ConfigPackLoadEvent.java | 3 ++- .../api/event/events/config/type/ConfigTypeLoadEvent.java | 3 ++- .../event/events/config/type/ConfigTypePostLoadEvent.java | 2 +- .../event/events/config/type/ConfigTypePreLoadEvent.java | 2 +- .../com/dfsek/terra/event/FunctionalEventHandlerImpl.java | 3 ++- 8 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java new file mode 100644 index 000000000..6c917c538 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.event.events; + +/** + * An event which (optionally) passes exceptions thrown by listeners to + * the event caller. + */ +public interface FailThroughEvent extends Event { +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java index ada69920a..d1ecb3fcf 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.Configuration; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import java.util.function.BiConsumer; @@ -14,7 +15,7 @@ import java.util.function.Consumer; * Addons should listen to this event if they wish to add * another configuration format. */ -public class ConfigurationDiscoveryEvent implements PackEvent { +public class ConfigurationDiscoveryEvent implements PackEvent, FailThroughEvent { private final ConfigPack pack; private final Loader loader; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 2e5492291..b6486a137 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.abstraction.AbstractConfiguration; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.util.reflection.ReflectionUtil; @@ -15,7 +16,7 @@ import java.util.function.Consumer; * Addons should listen to this event if they wish to add * config values to existing {@link ConfigType}s. */ -public class ConfigurationLoadEvent implements PackEvent { +public class ConfigurationLoadEvent implements PackEvent, FailThroughEvent { private final ConfigPack pack; private final AbstractConfiguration configuration; private final Consumer loader; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java index 78fc99f76..72382d3f3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java @@ -3,12 +3,13 @@ package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; /** * An event related to the loading process of config packs. */ -public abstract class ConfigPackLoadEvent implements PackEvent { +public abstract class ConfigPackLoadEvent implements PackEvent, FailThroughEvent { private final ConfigPack pack; private final ExceptionalConsumer configLoader; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index bd1836beb..14a4d6d50 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -2,11 +2,12 @@ package com.dfsek.terra.api.event.events.config.type; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.ReflectionUtil; -public abstract class ConfigTypeLoadEvent implements PackEvent { +public abstract class ConfigTypeLoadEvent implements PackEvent, FailThroughEvent { private final ConfigType type; private final CheckedRegistry registry; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java index d89306ab6..b00140387 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; -public class ConfigTypePostLoadEvent extends ConfigTypeLoadEvent{ +public class ConfigTypePostLoadEvent extends ConfigTypeLoadEvent { public ConfigTypePostLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { super(type, registry, pack); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java index baaaee404..cab922dad 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; -public class ConfigTypePreLoadEvent extends ConfigTypeLoadEvent{ +public class ConfigTypePreLoadEvent extends ConfigTypeLoadEvent { public ConfigTypePreLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { super(type, registry, pack); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 6e2b7fdc0..8ff120e2e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -3,6 +3,7 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.event.functional.EventContext; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; @@ -39,7 +40,7 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { ((EventContextImpl) context).handle(event); } } catch(Exception e) { - if(context.isFailThrough()) throw e; // Rethrow if it's fail-through. + if(context.isFailThrough() && event instanceof FailThroughEvent) throw e; // Rethrow if it's fail-through. StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); main.logger().warning("Exception occurred during event handling:"); From 2ea16f68a20c9576aa72c75d995cdb30b10148ab Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:12:16 -0700 Subject: [PATCH 0344/1529] throw exception on non-failthrough events registered as failthrough --- .../java/com/dfsek/terra/event/EventContextImpl.java | 12 ++++++++---- .../terra/event/FunctionalEventHandlerImpl.java | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index 21c6e37a9..b087a98c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -2,6 +2,7 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.event.functional.EventContext; import org.jetbrains.annotations.NotNull; @@ -18,14 +19,14 @@ public class EventContextImpl implements EventContext, Compa private final TerraAddon addon; - public EventContextImpl(TerraAddon addon) { + private final Class eventClass; + + public EventContextImpl(TerraAddon addon, Class eventClass) { this.addon = addon; + this.eventClass = eventClass; } public void handle(T event) { - if(event instanceof PackEvent) { - - } actions.forEach(action -> action.accept(event)); } @@ -43,6 +44,9 @@ public class EventContextImpl implements EventContext, Compa @Override public EventContext failThrough() { + if(!FailThroughEvent.class.isAssignableFrom(eventClass)) { + throw new IllegalStateException("Cannot fail-through on event which does not implement FailThroughEvent: " + eventClass.getCanonicalName()); + } this.failThrough = true; return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 8ff120e2e..941c7b673 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -52,14 +52,15 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { @Override public EventContext register(TerraAddon addon, Class clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon); + EventContextImpl eventContext = new EventContextImpl<>(addon, clazz); contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext); return eventContext; } + @SuppressWarnings("unchecked") @Override public EventContext register(TerraAddon addon, TypeKey clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon); + EventContextImpl eventContext = new EventContextImpl<>(addon, (Class) clazz.getRawType()); contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext); return eventContext; } From deb1063592e413e64a35fd4261f21d56cba625c2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:17:04 -0700 Subject: [PATCH 0345/1529] properly compute priorities --- .../dfsek/terra/event/EventContextImpl.java | 21 ++++++++++++------- .../event/FunctionalEventHandlerImpl.java | 10 ++++++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index b087a98c0..bfb929f29 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -3,15 +3,16 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.FailThroughEvent; -import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.event.functional.EventContext; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; import org.jetbrains.annotations.NotNull; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; -public class EventContextImpl implements EventContext, Comparable> { +public class EventContextImpl implements EventContext, Comparable> { private final List> actions = new ArrayList<>(); private int priority; private boolean failThrough = false; @@ -19,11 +20,14 @@ public class EventContextImpl implements EventContext, Compa private final TerraAddon addon; - private final Class eventClass; + private final Type eventType; - public EventContextImpl(TerraAddon addon, Class eventClass) { + private final FunctionalEventHandlerImpl parent; + + public EventContextImpl(TerraAddon addon, Type eventType, FunctionalEventHandlerImpl parent) { this.addon = addon; - this.eventClass = eventClass; + this.eventType = eventType; + this.parent = parent; } public void handle(T event) { @@ -39,13 +43,14 @@ public class EventContextImpl implements EventContext, Compa @Override public EventContext priority(int priority) { this.priority = priority; + parent.recomputePriorities(eventType); return this; } @Override public EventContext failThrough() { - if(!FailThroughEvent.class.isAssignableFrom(eventClass)) { - throw new IllegalStateException("Cannot fail-through on event which does not implement FailThroughEvent: " + eventClass.getCanonicalName()); + if(!FailThroughEvent.class.isAssignableFrom(ReflectionUtil.getRawType(eventType))) { + throw new IllegalStateException("Cannot fail-through on event which does not implement FailThroughEvent: " + ReflectionUtil.typeToString(eventType)); } this.failThrough = true; return this; @@ -58,7 +63,7 @@ public class EventContextImpl implements EventContext, Compa } @Override - public int compareTo(@NotNull EventContextImpl o) { + public int compareTo(@NotNull EventContextImpl o) { return this.priority - o.priority; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 941c7b673..0e3ada116 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -14,6 +14,7 @@ import java.io.StringWriter; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,16 +53,19 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { @Override public EventContext register(TerraAddon addon, Class clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon, clazz); + EventContextImpl eventContext = new EventContextImpl<>(addon, clazz, this); contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext); return eventContext; } - @SuppressWarnings("unchecked") @Override public EventContext register(TerraAddon addon, TypeKey clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon, (Class) clazz.getRawType()); + EventContextImpl eventContext = new EventContextImpl<>(addon, clazz.getType(), this); contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext); return eventContext; } + + public void recomputePriorities(Type target) { + contextMap.get(target).sort(Comparator.naturalOrder()); + } } From ba53923e8c62ee4f07e33f6c80ef53d076cf54f6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:20:20 -0700 Subject: [PATCH 0346/1529] use FailThrough when available --- .../addons/chunkgenerator/NoiseChunkGenerator3DAddon.java | 3 ++- .../main/java/com/dfsek/terra/addons/biome/BiomeAddon.java | 3 ++- .../terra/addons/feature/distributor/DistributorAddon.java | 3 ++- .../java/com/dfsek/terra/addons/feature/FeatureAddon.java | 3 ++- .../main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 3 ++- .../dfsek/terra/addons/feature/locator/LocatorAddon.java | 3 ++- .../main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 3 ++- .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 3 ++- .../java/com/dfsek/terra/addons/palette/PaletteAddon.java | 3 ++- .../com/dfsek/terra/addons/structure/StructureAddon.java | 3 ++- .../addons/generation/feature/FeatureGenerationAddon.java | 6 ++++-- .../terra/addons/generation/flora/FloraGenerationAddon.java | 6 ++++-- .../main/java/com/dfsek/terra/addons/yaml/YamlAddon.java | 3 ++- .../dfsek/terra/addons/terrascript/TerraScriptAddon.java | 3 ++- 14 files changed, 32 insertions(+), 16 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index d6cbaf0f0..bd5acee77 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -44,6 +44,7 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } - }); + }) + .failThrough(); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index c2ebf164d..832b00ccd 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -26,6 +26,7 @@ public class BiomeAddon extends TerraAddon { .then(event -> { event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index f738575c3..be29dd022 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -39,6 +39,7 @@ public class DistributorAddon extends TerraAddon { event.getPack() .applyLoader(Point.class, PointTemplate::new); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 0ea6cc4c3..871476727 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -21,6 +21,7 @@ public class FeatureAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)); + .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)) + .failThrough(); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index b8d8d74a7..e696ab249 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -26,6 +26,7 @@ public class FloraAddon extends TerraAddon { .then(event -> { event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index f90430312..67e29d7a0 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -35,6 +35,7 @@ public class LocatorAddon extends TerraAddon { CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index a91fdc441..f596f9a9d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -100,6 +100,7 @@ public class NoiseAddon extends TerraAddon { NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); event.loadTemplate(template); packFunctions.putAll(template.getNoiseBuilderMap()); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 5d16f5c0d..692506afa 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -26,6 +26,7 @@ public class OreAddon extends TerraAddon { .then(event -> { event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index de680db21..66ae41d57 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -26,6 +26,7 @@ public class PaletteAddon extends TerraAddon { .then(event -> { event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); - }); + }) + .failThrough(); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 2b3f524b3..6673aaa92 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -22,6 +22,7 @@ public class StructureAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)); + .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) + .failThrough(); } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 58658cbb2..884e36578 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -25,7 +25,8 @@ public class FeatureGenerationAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main))); + .then(event -> event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main))) + .failThrough(); main.getEventManager() .getHandler(FunctionalEventHandler.class) @@ -34,6 +35,7 @@ public class FeatureGenerationAddon extends TerraAddon { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); } - }); + }) + .failThrough(); } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index bc6ae259b..01f03d4ef 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -28,7 +28,8 @@ public class FloraGenerationAddon extends TerraAddon { .then(event -> { event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); - }); + }) + .failThrough(); main.getEventManager() .getHandler(FunctionalEventHandler.class) @@ -37,6 +38,7 @@ public class FloraGenerationAddon extends TerraAddon { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); } - }); + }) + .failThrough(); } } diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index 42c9ef881..f6b61e69a 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -25,6 +25,7 @@ public class YamlAddon extends TerraAddon { .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { main.getDebugLogger().info("Discovered config " + entry.getKey()); event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); - }))); + }))) + .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 9702777f3..143ff156b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -43,6 +43,7 @@ public class TerraScriptAddon extends TerraAddon { } } }).close(); - }); + }) + .failThrough(); } } From 82169f0921de3abe0a9a40f6017a349f677530e8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:04:33 -0700 Subject: [PATCH 0347/1529] ConfigType#getTypeClass -> getTypeKey --- .../dfsek/terra/addons/biome/BiomeConfigType.java | 2 +- .../terra/addons/feature/FeatureConfigType.java | 2 +- .../dfsek/terra/addons/flora/FloraConfigType.java | 2 +- .../com/dfsek/terra/addons/ore/OreConfigType.java | 2 +- .../terra/addons/palette/PaletteConfigType.java | 2 +- .../java/com/dfsek/terra/api/config/ConfigType.java | 2 +- .../event/events/config/ConfigurationLoadEvent.java | 6 +++--- .../events/config/type/ConfigTypeLoadEvent.java | 6 +++--- .../com/dfsek/terra/config/pack/ConfigPackImpl.java | 12 ++++++------ .../terra/registry/config/ConfigTypeRegistry.java | 2 +- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 9f9786b07..d6cdb8416 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -32,7 +32,7 @@ public class BiomeConfigType implements ConfigType { } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeKey() { return BIOME_TYPE_TOKEN; } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java index 3d2c3e709..7a02bd640 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java @@ -26,7 +26,7 @@ public class FeatureConfigType implements ConfigType { } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeKey() { return FEATURE_TYPE_KEY; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index 1fc80a9b4..c17a604ba 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -26,7 +26,7 @@ public class FloraConfigType implements ConfigType { } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeKey() { return FLORA_TYPE_TOKEN; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index e284b41d3..36ffa5785 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -25,7 +25,7 @@ public class OreConfigType implements ConfigType { } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeKey() { return ORE_TYPE_TOKEN; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 2a3c821be..97d4c81fa 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -34,7 +34,7 @@ public class PaletteConfigType implements ConfigType { } @Override - public TypeKey getTypeClass() { + public TypeKey getTypeKey() { return PALETTE_TYPE_TOKEN; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 15ad2541d..7cefbda01 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -11,7 +11,7 @@ public interface ConfigType { ConfigFactory getFactory(); - TypeKey getTypeClass(); + TypeKey getTypeKey(); Supplier> registrySupplier(ConfigPack pack); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index b6486a137..0fb9f3363 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -51,13 +51,13 @@ public class ConfigurationLoadEvent implements PackEvent, FailThroughEvent { } public boolean is(Class clazz) { - return clazz.isAssignableFrom(type.getTypeClass().getRawType()); + return clazz.isAssignableFrom(type.getTypeKey().getRawType()); } @SuppressWarnings("unchecked") public T getLoadedObject(Class clazz) { - if(!clazz.isAssignableFrom(type.getTypeClass().getRawType())) - throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeClass().getType()) + " to class " + clazz.getCanonicalName()); + if(!clazz.isAssignableFrom(type.getTypeKey().getRawType())) + throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + clazz.getCanonicalName()); return (T) loaded; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index 14a4d6d50..a18568d45 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -25,13 +25,13 @@ public abstract class ConfigTypeLoadEvent implements PackEvent, FailThroughEvent } public boolean is(Class clazz) { - return clazz.isAssignableFrom(type.getTypeClass().getRawType()); + return clazz.isAssignableFrom(type.getTypeKey().getRawType()); } @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Class clazz) { - if(!clazz.isAssignableFrom(type.getTypeClass().getRawType())) - throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeClass().getType()) + " to class " + clazz.getCanonicalName()); + if(!clazz.isAssignableFrom(type.getTypeKey().getRawType())) + throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + clazz.getCanonicalName()); return (CheckedRegistry) registry; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 93357edb1..035c81d6a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -199,12 +199,12 @@ public class ConfigPackImpl implements ConfigPack { private ConfigTypeRegistry createRegistry() { return new ConfigTypeRegistry(main, (id, configType) -> { OpenRegistry openRegistry = configType.registrySupplier(this).get(); - if(registryMap.containsKey(configType.getTypeClass().getType())) { // Someone already registered something; we need to copy things to the new registry. - registryMap.get(configType.getTypeClass().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); + if(registryMap.containsKey(configType.getTypeKey().getType())) { // Someone already registered something; we need to copy things to the new registry. + registryMap.get(configType.getTypeKey().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); } - selfLoader.registerLoader(configType.getTypeClass().getType(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeClass().getType(), openRegistry); - registryMap.put(configType.getTypeClass().getType(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); + selfLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); + registryMap.put(configType.getTypeKey().getType(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); }); } @@ -265,7 +265,7 @@ public class ConfigPackImpl implements ConfigPack { } for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs - CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass()); + CheckedRegistry registry = getCheckedRegistry(configType.getTypeKey()); main.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry, this)); for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) { try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index b12af27ef..9686546b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -22,7 +22,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { @Override public boolean register(String identifier, Entry> value) { callback.accept(identifier, value.getValue()); - main.getDebugLogger().info("Registered config registry with ID " + identifier + " to type " + ReflectionUtil.typeToString(value.getValue().getTypeClass().getType())); + main.getDebugLogger().info("Registered config registry with ID " + identifier + " to type " + ReflectionUtil.typeToString(value.getValue().getTypeKey().getType())); return super.register(identifier, value); } } From a91a5019f8b19d056f333b746de5a8c303049e40 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:28:14 -0700 Subject: [PATCH 0348/1529] implement getBiomeProvider in World --- .../api/src/main/java/com/dfsek/terra/api/world/World.java | 3 +++ .../main/java/com/dfsek/terra/config/dummy/DummyWorld.java | 6 ++++++ .../dfsek/terra/fabric/generation/TerraBiomeSource.java | 4 ++++ .../mixin/implementations/world/ChunkRegionMixin.java | 7 +++++++ .../mixin/implementations/world/ServerWorldMixin.java | 7 +++++++ 5 files changed, 27 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index f50731eff..7c8d00bbd 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; @@ -60,4 +61,6 @@ public interface World extends Handle { default TerraChunkGenerator getTerraGenerator() { return ((GeneratorWrapper) getGenerator().getHandle()).getHandle(); } + + BiomeProvider getBiomeProvider(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 33adc7438..97953b8b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; @@ -60,4 +61,9 @@ public class DummyWorld implements World { public int getMinHeight() { return 0; } + + @Override + public BiomeProvider getBiomeProvider() { + throw new UnsupportedOperationException("Cannot get biome provider of DummyWorld"); + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index f054a0c20..81fe4f503 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -56,4 +56,8 @@ public class TerraBiomeSource extends BiomeSource { TerraBiome biome = provider.getBiome(biomeX << 2, biomeZ << 2, seed); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } + + public BiomeProvider getProvider() { + return provider; + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index c30547d6d..201a732c9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -7,11 +7,13 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.block.FluidBlock; import net.minecraft.fluid.Fluid; @@ -107,6 +109,11 @@ public abstract class ChunkRegionMixin { return ((FabricChunkGeneratorWrapper) terraWorld$getGenerator()).getHandle(); } + @SuppressWarnings("deprecation") + public BiomeProvider terraWorld$getBiomeProvider() { + return ((TerraBiomeSource) ((ChunkRegion) (Object) this).toServerWorld().getChunkManager().getChunkGenerator().getBiomeSource()).getProvider(); + } + /** * We need regions delegating to the same world * to have the same hashcode. This diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index c71badb2a..bf86d5252 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -7,14 +7,17 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.WorldAccess; import org.spongepowered.asm.mixin.Implements; @@ -83,6 +86,10 @@ public abstract class ServerWorldMixin { return ((FabricChunkGeneratorWrapper) terra$getGenerator()).getHandle(); } + public BiomeProvider terra$getBiomeProvider() { + return ((TerraBiomeSource) ((ServerWorld) (Object) this).getChunkManager().getChunkGenerator().getBiomeSource()).getProvider(); + } + /** * Overridden in the same manner as {@link ChunkRegionMixin#hashCode()} * From 2948f25b5080b16bfc5c3d976427120baaca3d8c Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:32:34 -0700 Subject: [PATCH 0349/1529] remove uses of TerraWorld#getBiomeProvider --- .../generation/generators/NoiseChunkGenerator3D.java | 6 +++--- .../terra/addons/biome/command/biome/BiomeCommand.java | 2 +- .../addons/biome/command/biome/BiomeLocateCommand.java | 2 +- .../java/com/dfsek/terra/addons/carver/CarverCache.java | 4 ++-- .../main/java/com/dfsek/terra/addons/ore/OrePopulator.java | 2 +- .../dfsek/terra/addons/structure/StructurePopulator.java | 2 +- .../structure/command/structure/StructureLocateCommand.java | 2 +- .../addons/generation/feature/FeatureGenerationStage.java | 2 +- .../terra/addons/generation/flora/FloraGenerationStage.java | 2 +- .../addons/terrascript/script/functions/BiomeFunction.java | 2 +- .../main/java/com/dfsek/terra/world/SamplerCacheImpl.java | 4 ++-- .../com/dfsek/terra/bukkit/listeners/PaperListener.java | 5 +++-- .../com/dfsek/terra/bukkit/listeners/SpigotListener.java | 5 +++-- 13 files changed, 21 insertions(+), 19 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index f19ca8fd5..b968b8ca2 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -48,7 +48,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); long seed = world.getSeed(); - BiomeProvider grid = main.getWorld(world).getBiomeProvider(); + BiomeProvider grid = world.getBiomeProvider(); for(int x = 0; x < 4; x++) { for(int z = 0; z < 4; z++) { int cx = xOrig + (x << 2); @@ -76,7 +76,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_3d")) { TerraWorld tw = main.getWorld(world); - BiomeProvider grid = tw.getBiomeProvider(); + BiomeProvider grid = world.getBiomeProvider(); int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); @@ -169,7 +169,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { @Override public BlockState getBlock(World world, int x, int y, int z) { TerraWorld terraWorld = main.getWorld(world); - BiomeProvider provider = terraWorld.getBiomeProvider(); + BiomeProvider provider = world.getBiomeProvider(); TerraBiome biome = provider.getBiome(x, z, world.getSeed()); Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index 42f5b9db3..a5eebad2b 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -37,7 +37,7 @@ public class BiomeCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - BiomeProvider provider = main.getWorld(player.world()).getBiomeProvider(); + BiomeProvider provider = player.world().getBiomeProvider(); UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position(), player.world().getSeed()); sender.sendMessage("You are standing in " + biome.getID()); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java index 4f9f22ac4..5e46575f3 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java @@ -62,7 +62,7 @@ public class BiomeLocateCommand implements CommandTemplate { Player player = (Player) sender; - new Thread(new AsyncBiomeFinder(main.getWorld(player.world()).getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { + new Thread(new AsyncBiomeFinder(player.world().getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 496a2861d..e5d1f2160 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -26,12 +26,12 @@ public class CarverCache { public CarverCache(World w, TerraPlugin main, UserDefinedCarver carver) { this.carver = carver; cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getCarverCacheSize()) - .build(new CacheLoader>() { + .build(new CacheLoader<>() { @Override public List load(@NotNull Long key) { int chunkX = (int) (key >> 32); int chunkZ = (int) key.longValue(); - BiomeProvider provider = main.getWorld(w).getBiomeProvider(); + BiomeProvider provider = w.getBiomeProvider(); if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); Random r = new Random(seed); diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 73489249e..af7a5ed88 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -31,7 +31,7 @@ public class OrePopulator implements TerraGenerationStage { Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); int originX = ((chunk.getX() + cx) << 4); int originZ = ((chunk.getZ() + cz) << 4); - TerraBiome b = tw.getBiomeProvider().getBiome(originX + 8, originZ + 8, world.getSeed()); + TerraBiome b = world.getBiomeProvider().getBiome(originX + 8, originZ + 8, world.getSeed()); /* BiomeTemplate config = ((UserDefinedBiome) b).getConfig(); int finalCx = cx; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index c2a126d2d..b493bd320 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -34,7 +34,7 @@ public class StructurePopulator implements TerraGenerationStage, Chunkified { int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); - BiomeProvider provider = tw.getBiomeProvider(); + BiomeProvider provider = world.getBiomeProvider(); WorldConfig config = tw.getConfig(); for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index dad15f00f..0e115f7a6 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -61,7 +61,7 @@ public class StructureLocateCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { + new Thread(new AsyncStructureFinder(player.world().getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 9810afbce..c54d2eeae 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -31,7 +31,7 @@ public class FeatureGenerationStage implements TerraGenerationStage { int tx = cx + x; int tz = cz + z; ColumnImpl column = new ColumnImpl(tx, tz, world); - terraWorld.getBiomeProvider().getBiome(tx, tz, seed).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { + world.getBiomeProvider().getBiome(tx, tz, seed).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { if(feature.getDistributor().matches(tx, tz, seed)) { feature.getLocator() .getSuitableCoordinates(column) diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 7cf03a0b1..8a7e9a2c3 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -34,7 +34,7 @@ public class FloraGenerationStage implements TerraGenerationStage { if(tw.getConfig().disableFlora()) return; long seed = world.getSeed(); - BiomeProvider provider = tw.getBiomeProvider(); + BiomeProvider provider = world.getBiomeProvider(); Map> layers = new HashMap<>(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 201df7fd0..819477d5d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -38,7 +38,7 @@ public class BiomeFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - BiomeProvider grid = main.getWorld(arguments.getWorld()).getBiomeProvider(); + BiomeProvider grid = arguments.getWorld().getBiomeProvider(); return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 523d31730..40ec86ef5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -15,12 +15,12 @@ public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.Sam public SamplerCacheImpl(TerraPlugin main, TerraWorld world) { cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getSamplerCache()) - .build(new CacheLoader() { + .build(new CacheLoader<>() { @Override public Sampler load(@NotNull Long key) { int cx = (int) (key >> 32); int cz = (int) key.longValue(); - return world.getWorld().getTerraGenerator().createSampler(cx, cz, world.getBiomeProvider(), world.getWorld(), world.getConfig().elevationBlend()); + return world.getWorld().getTerraGenerator().createSampler(cx, cz, world.getWorld().getBiomeProvider(), world.getWorld(), world.getConfig().elevationBlend()); } }); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index f8c25b0b4..c656c76be 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -3,6 +3,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.world.population.items.TerraStructure; @@ -22,10 +23,10 @@ public class PaperListener implements Listener { if(!BukkitAdapter.adapt(e.getWorld()).isTerraWorld()) return; String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); - TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld())); + World w = BukkitAdapter.adapt(e.getWorld()); ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); if(config != null) { - AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin().toVector()), tw.getWorld(), 0, 500, location -> { + AsyncStructureFinder finder = new AsyncStructureFinder(w.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin().toVector()), tw.getWorld(), 0, 500, location -> { if(location != null) e.setResult(BukkitAdapter.adapt(location).toLocation(e.getWorld())); main.getDebugLogger().info("Location: " + location); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 340f9efa1..02d3fc906 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -3,6 +3,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.world.population.items.TerraStructure; @@ -36,9 +37,9 @@ public class SpigotListener implements Listener { if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) { main.getDebugLogger().info("Detected Ender Signal..."); if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; - TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld())); + World w = BukkitAdapter.adapt(e.getEntity().getWorld()); EnderSignal signal = (EnderSignal) entity; - ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get("STRONGHOLD")); + ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(w.getConfig().getLocatable().get("STRONGHOLD")); if(config != null) { main.getDebugLogger().info("Overriding Ender Signal..."); AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation().toVector()), tw.getWorld(), 0, 500, location -> { From 7f050b37a4595e0c6cb87ea96e49234430276573 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:33:19 -0700 Subject: [PATCH 0350/1529] remove TerraWorld#getBiomeProvider --- .../java/com/dfsek/terra/api/world/TerraWorld.java | 2 -- .../java/com/dfsek/terra/world/TerraWorldImpl.java | 11 ----------- 2 files changed, 13 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index 8f0110204..97e25790a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -8,8 +8,6 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public interface TerraWorld { World getWorld(); - BiomeProvider getBiomeProvider(); - WorldConfig getConfig(); /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index 87d31dc91..d472451db 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -7,15 +7,10 @@ import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.config.pack.WorldConfigImpl; -import net.jafama.FastMath; public class TerraWorldImpl implements TerraWorld { - private final BiomeProvider provider; private final WorldConfigImpl config; private final World world; @@ -23,7 +18,6 @@ public class TerraWorldImpl implements TerraWorld { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; config = (WorldConfigImpl) c.toWorldConfig(this); - this.provider = config.getProvider(); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); } @@ -34,11 +28,6 @@ public class TerraWorldImpl implements TerraWorld { } - @Override - public BiomeProvider getBiomeProvider() { - return provider; - } - @Override public WorldConfigImpl getConfig() { return config; From a56d1818c8e2a8c6e555aa0b8d8ed45971f04c8b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:51:51 -0700 Subject: [PATCH 0351/1529] implement World#getConfig --- .../dfsek/terra/api/config/ConfigPack.java | 3 ++- .../dfsek/terra/api/config/WorldConfig.java | 3 ++- .../java/com/dfsek/terra/api/world/World.java | 3 +++ .../dfsek/terra/config/dummy/DummyWorld.java | 6 +++++ .../terra/config/pack/ConfigPackImpl.java | 8 +++--- .../terra/config/pack/WorldConfigImpl.java | 7 ++--- .../dfsek/terra/world/SamplerCacheImpl.java | 5 ++-- .../com/dfsek/terra/world/TerraWorldImpl.java | 2 +- .../world/ChunkRegionMixin.java | 18 +++++++++++++ .../world/ServerWorldMixin.java | 26 +++++++++++++++++++ 10 files changed, 69 insertions(+), 12 deletions(-) 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 edcbe9bcc..a46bb4942 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.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -29,7 +30,7 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde return getOrCreateRegistry(type.getType()); } - WorldConfig toWorldConfig(TerraWorld world); + WorldConfig toWorldConfig(World world); List getStages(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index f9303c9c2..6d249df70 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.TerraGenerationStage; @@ -12,7 +13,7 @@ import java.util.Map; public interface WorldConfig { Registry getRegistry(Class clazz); - TerraWorld getWorld(); + World getWorld(); SamplerCache getSamplerCache(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 7c8d00bbd..962b91f92 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -63,4 +64,6 @@ public interface World extends Handle { } BiomeProvider getBiomeProvider(); + + WorldConfig getConfig(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 97953b8b2..38d7aad51 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -2,6 +2,7 @@ package com.dfsek.terra.config.dummy; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -66,4 +67,9 @@ public class DummyWorld implements World { public BiomeProvider getBiomeProvider() { throw new UnsupportedOperationException("Cannot get biome provider of DummyWorld"); } + + @Override + public WorldConfig getConfig() { + throw new UnsupportedOperationException("Cannot get config of DummyWorld"); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 035c81d6a..f090f2375 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -32,7 +32,7 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.reflection.ReflectionUtil; -import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; @@ -139,7 +139,7 @@ public class ConfigPackImpl implements ConfigPack { main.logger().severe("Failed to load config pack from folder \"" + folder.getAbsolutePath() + "\""); throw e; } - toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. + toWorldConfig(new DummyWorld()); // Build now to catch any errors immediately. } public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { @@ -192,7 +192,7 @@ public class ConfigPackImpl implements ConfigPack { throw e; } - toWorldConfig(new TerraWorldImpl(new DummyWorld(), this, main)); // Build now to catch any errors immediately. + toWorldConfig(new DummyWorld()); // Build now to catch any errors immediately. } @SuppressWarnings("unchecked") @@ -353,7 +353,7 @@ public class ConfigPackImpl implements ConfigPack { @Override - public WorldConfigImpl toWorldConfig(TerraWorld world) { + public WorldConfigImpl toWorldConfig(World world) { return new WorldConfigImpl(world, this, main); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 1b13aacdd..a934b8830 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.registry.LockedRegistryImpl; @@ -18,12 +19,12 @@ public class WorldConfigImpl implements WorldConfig { private final BiomeProvider provider; - private final TerraWorld world; + private final World world; private final ConfigPackImpl pack; private final Map> registryMap = new HashMap<>(); - public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { + public WorldConfigImpl(World world, ConfigPackImpl pack, TerraPlugin main) { this.world = world; this.pack = pack; this.samplerCache = new SamplerCacheImpl(main, world); @@ -40,7 +41,7 @@ public class WorldConfigImpl implements WorldConfig { } @Override - public TerraWorld getWorld() { + public World getWorld() { return world; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 40ec86ef5..45789d1f1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -3,6 +3,7 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.TerraWorld; +import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Sampler; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -13,14 +14,14 @@ import org.jetbrains.annotations.NotNull; public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.SamplerCache { private final LoadingCache cache; - public SamplerCacheImpl(TerraPlugin main, TerraWorld world) { + public SamplerCacheImpl(TerraPlugin main, World world) { cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getSamplerCache()) .build(new CacheLoader<>() { @Override public Sampler load(@NotNull Long key) { int cx = (int) (key >> 32); int cz = (int) key.longValue(); - return world.getWorld().getTerraGenerator().createSampler(cx, cz, world.getWorld().getBiomeProvider(), world.getWorld(), world.getConfig().elevationBlend()); + return world.getTerraGenerator().createSampler(cx, cz, world.getBiomeProvider(), world, world.getConfig().elevationBlend()); } }); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index d472451db..df950d9b8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -17,7 +17,7 @@ public class TerraWorldImpl implements TerraWorld { public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; - config = (WorldConfigImpl) c.toWorldConfig(this); + config = (WorldConfigImpl) c.toWorldConfig(w); main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 201a732c9..380c408e3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -2,6 +2,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -23,16 +24,24 @@ import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.TickScheduler; import net.minecraft.world.WorldAccess; +import net.minecraft.world.chunk.ChunkStatus; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; @Mixin(ChunkRegion.class) @Implements(@Interface(iface = World.class, prefix = "terraWorld$", remap = Interface.Remap.NONE)) public abstract class ChunkRegionMixin { + private WorldConfig config; + @Shadow @Final private ServerWorld world; @@ -51,6 +60,11 @@ public abstract class ChunkRegionMixin { return (((ChunkRegion) (Object) this).getBottomY()) + ((ChunkRegion) (Object) this).getHeight(); } + @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/server/world/ServerWorld;Ljava/util/List;Lnet/minecraft/world/chunk/ChunkStatus;I)V") + public void injectConstructor(ServerWorld world, List list, ChunkStatus chunkStatus, int i, CallbackInfo ci) { + this.config = ((World) world).getConfig(); + } + @SuppressWarnings("deprecation") public ChunkGenerator terraWorld$getGenerator() { return (ChunkGenerator) ((ChunkRegion) (Object) this).toServerWorld().getChunkManager().getChunkGenerator(); @@ -114,6 +128,10 @@ public abstract class ChunkRegionMixin { return ((TerraBiomeSource) ((ChunkRegion) (Object) this).toServerWorld().getChunkManager().getChunkGenerator().getBiomeSource()).getProvider(); } + public WorldConfig terraWorld$getConfig() { + return config; + } + /** * We need regions delegating to the same world * to have the same hashcode. This diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index bf86d5252..1dab4e632 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -2,6 +2,7 @@ package com.dfsek.terra.fabric.mixin.implementations.world; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; @@ -15,23 +16,44 @@ import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.util.FabricUtil; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.WorldAccess; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.gen.Spawner; +import net.minecraft.world.level.ServerWorldProperties; +import net.minecraft.world.level.storage.LevelStorage; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.concurrent.Executor; @Mixin(ServerWorld.class) @Implements(@Interface(iface = World.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class ServerWorldMixin { + private WorldConfig config; @Shadow public abstract long getSeed(); + @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lnet/minecraft/world/level/storage/LevelStorage$Session;Lnet/minecraft/world/level/ServerWorldProperties;Lnet/minecraft/util/registry/RegistryKey;Lnet/minecraft/world/dimension/DimensionType;Lnet/minecraft/server/WorldGenerationProgressListener;Lnet/minecraft/world/gen/chunk/ChunkGenerator;ZJLjava/util/List;Z)V") + public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey worldKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, net.minecraft.world.gen.chunk.ChunkGenerator chunkGenerator, boolean debugWorld, long seed, List spawners, boolean shouldTickTime, CallbackInfo ci) { + if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { + config = ((FabricChunkGeneratorWrapper) chunkGenerator).getPack().toWorldConfig((World) this); + } + } + public int terra$getMaxHeight() { return (((ServerWorld) (Object) this).getBottomY()) + ((ServerWorld) (Object) this).getHeight(); } @@ -90,6 +112,10 @@ public abstract class ServerWorldMixin { return ((TerraBiomeSource) ((ServerWorld) (Object) this).getChunkManager().getChunkGenerator().getBiomeSource()).getProvider(); } + public WorldConfig terra$getConfig() { + return config; + } + /** * Overridden in the same manner as {@link ChunkRegionMixin#hashCode()} * From 8898bbd5c436c7fee47b848c29ae89603657804d Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 13:59:39 -0700 Subject: [PATCH 0352/1529] remove usages of TerraWorld#getConfig --- .../generators/NoiseChunkGenerator3D.java | 6 ++-- .../biome/arg/BiomeArgumentParser.java | 2 +- .../command/biome/tab/BiomeTabCompleter.java | 2 +- .../terra/addons/carver/CavePopulator.java | 4 +-- .../dfsek/terra/addons/ore/OrePopulator.java | 3 +- .../addons/structure/StructurePopulator.java | 5 ++- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 2 +- .../structure/completer/ScriptCompleter.java | 2 +- .../completer/StructureCompleter.java | 2 +- .../flora/FloraGenerationStage.java | 3 +- .../script/functions/CheckFunction.java | 3 +- .../events/world/TerraWorldLoadEvent.java | 32 ------------------- .../com/dfsek/terra/world/TerraWorldImpl.java | 3 -- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 4 +-- .../bukkit/listeners/CommonListener.java | 3 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 15 ++++----- 17 files changed, 23 insertions(+), 70 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index b968b8ca2..742965bf5 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -75,13 +75,12 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { @SuppressWarnings({"try"}) public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_3d")) { - TerraWorld tw = main.getWorld(world); BiomeProvider grid = world.getBiomeProvider(); int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); - Sampler sampler = tw.getConfig().getSamplerCache().getChunk(chunkX, chunkZ); + Sampler sampler = world.getConfig().getSamplerCache().getChunk(chunkX, chunkZ); long seed = world.getSeed(); @@ -168,10 +167,9 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { @Override public BlockState getBlock(World world, int x, int y, int z) { - TerraWorld terraWorld = main.getWorld(world); BiomeProvider provider = world.getBiomeProvider(); TerraBiome biome = provider.getBiome(x, z, world.getSeed()); - Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); + Sampler sampler = world.getConfig().getSamplerCache().get(x, z); PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java index d15110df7..065a4eef8 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java @@ -14,6 +14,6 @@ public class BiomeArgumentParser implements ArgumentParser { @Override public TerraBiome parse(CommandSender sender, String arg) { Player player = (Player) sender; - return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).get(arg); + return player.world().getConfig().getRegistry(TerraBiome.class).get(arg); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java index 152925211..c0338ddbf 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java @@ -17,6 +17,6 @@ public class BiomeTabCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return main.getWorld(player.world()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); + return player.world().getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); } } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 7eec08cd8..e70c36b2b 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -30,11 +30,9 @@ public class CavePopulator implements TerraGenerationStage, Chunkified { @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - TerraWorld tw = main.getWorld(world); - WorldHandle handle = main.getWorldHandle(); try(ProfileFrame ignore = main.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); - WorldConfig config = tw.getConfig(); + WorldConfig config = world.getConfig(); if(config.disableCarving()) return; for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index af7a5ed88..434ad6684 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -22,9 +22,8 @@ public class OrePopulator implements TerraGenerationStage { @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("ore")) { - if(tw.getConfig().disableOres()) return; + if(world.getConfig().disableOres()) return; for(int cx = -1; cx <= 1; cx++) { for(int cz = -1; cz <= 1; cz++) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index b493bd320..1c69b024a 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -28,14 +28,13 @@ public class StructurePopulator implements TerraGenerationStage, Chunkified { @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("structure")) { - if(tw.getConfig().disableStructures()) return; + if(world.getConfig().disableStructures()) return; int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); BiomeProvider provider = world.getBiomeProvider(); - WorldConfig config = tw.getConfig(); + WorldConfig config = world.getConfig(); for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index 909412a44..3c1b982e0 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -13,6 +13,6 @@ public class ScriptArgumentParser implements ArgumentParser { @Override public Structure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).get(arg); + return ((Player) sender).world().getConfig().getRegistry(Structure.class).get(arg); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index aec0dcaa5..515dade11 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -13,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser complete(CommandSender sender) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); + return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index 17007423f..f51538600 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -17,6 +17,6 @@ public class StructureCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(ConfiguredStructure.class).keys()); + return new ArrayList<>(player.world().getConfig().getRegistry(ConfiguredStructure.class).keys()); } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 8a7e9a2c3..b722e40d7 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -29,9 +29,8 @@ public class FloraGenerationStage implements TerraGenerationStage { @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("flora")) { - if(tw.getConfig().disableFlora()) return; + if(world.getConfig().disableFlora()) return; long seed = world.getSeed(); BiomeProvider provider = world.getBiomeProvider(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index b97a7a6d7..5856133ca 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -50,8 +50,7 @@ public class CheckFunction implements Function { private String apply(Vector3 vector, World world) { int y = vector.getBlockY(); if(y >= world.getMaxHeight() || y < 0) return "AIR"; - TerraWorld tw = main.getWorld(world); - SamplerCache cache = tw.getConfig().getSamplerCache(); + SamplerCache cache = world.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); if(comp > 0) return "LAND"; // If noise val is greater than zero, location will always be land. diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java deleted file mode 100644 index 18341ca9e..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.api.event.events.world; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.event.events.PackEvent; -import com.dfsek.terra.api.world.TerraWorld; - - -/** - * Called upon initialization of a TerraWorld. - */ -public class TerraWorldLoadEvent implements PackEvent { - private final TerraWorld world; - private final ConfigPack pack; - - public TerraWorldLoadEvent(TerraWorld world, ConfigPack pack) { - this.world = world; - this.pack = pack; - } - - public TerraWorld getWorld() { - return world; - } - - public ConfigPack getPack() { - return pack; - } - - public WorldConfig getWorldConfig() { - return world.getConfig(); - } -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index df950d9b8..ce50075a0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -3,11 +3,9 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.config.pack.WorldConfigImpl; public class TerraWorldImpl implements TerraWorld { @@ -18,7 +16,6 @@ public class TerraWorldImpl implements TerraWorld { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; config = (WorldConfigImpl) c.toWorldConfig(w); - main.getEventManager().callEvent(new TerraWorldLoadEvent(this, c)); } 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 289cf518f..f74ad670d 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 @@ -100,8 +100,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { boolean succeed = registry.loadAll(this); Map newMap = new HashMap<>(); worldMap.forEach((world, tw) -> { - tw.getConfig().getSamplerCache().clear(); - String packID = tw.getConfig().getID(); + world.getConfig().getSamplerCache().clear(); + String packID = world.getConfig().getID(); newMap.put(world, new TerraWorldImpl(world, registry.get(packID), this)); }); worldMap.clear(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index cf337d6b0..4786690f1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -43,8 +43,7 @@ public class CommonListener implements Listener { if(e.isCancelled()) return; World bukkit = BukkitAdapter.adapt(e.getWorld()); if(!bukkit.isTerraWorld()) return; - TerraWorld tw = main.getWorld(bukkit); - WorldConfig c = tw.getConfig(); + WorldConfig c = bukkit.getConfig(); if(c.isDisableSaplings()) return; e.setCancelled(true); Block block = e.getLocation().getBlock(); 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 137784b29..553bb7ee5 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 @@ -83,7 +83,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); private static TerraFabricPlugin instance; private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); - private final Map> worldMap = new HashMap<>(); + private final Map worldMap = new HashMap<>(); private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); private final Profiler profiler = new ProfilerImpl(); @@ -119,7 +119,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return instance; } - public Map> getWorldMap() { + public Map getWorldMap() { return worldMap; } @@ -144,9 +144,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { } public TerraWorld getWorld(DimensionType type) { - TerraWorld world = worldMap.get(type).getRight(); - if(world == null) throw new IllegalArgumentException("No world exists with dimension type " + type); - return world; + throw new IllegalArgumentException("No world exists with dimension type " + type); } @Override @@ -188,10 +186,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { config.load(this); LangUtil.load(config.getLanguage(), this); // Load language. boolean succeed = configRegistry.loadAll(this); - worldMap.forEach((seed, pair) -> { - pair.getRight().getConfig().getSamplerCache().clear(); - String packID = pair.getRight().getConfig().getID(); - pair.setRight(new TerraWorldImpl(pair.getRight().getWorld(), configRegistry.get(packID), this)); + worldMap.forEach((seed, world) -> { + if(!(world instanceof World)) return; + ((World) world).getConfig().getSamplerCache().clear(); }); return succeed; } From ea60b30321158efc871c10b75a2cae7218a2f256 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:00:16 -0700 Subject: [PATCH 0353/1529] remove TerraWorld#getConfig --- .../main/java/com/dfsek/terra/api/world/TerraWorld.java | 2 -- .../main/java/com/dfsek/terra/world/TerraWorldImpl.java | 8 -------- 2 files changed, 10 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java index 97e25790a..485273c49 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java @@ -8,8 +8,6 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public interface TerraWorld { World getWorld(); - WorldConfig getConfig(); - /** * Get a block at an ungenerated location * diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java index ce50075a0..9e84ac296 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java @@ -9,13 +9,11 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.config.pack.WorldConfigImpl; public class TerraWorldImpl implements TerraWorld { - private final WorldConfigImpl config; private final World world; public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); this.world = w; - config = (WorldConfigImpl) c.toWorldConfig(w); } @@ -25,12 +23,6 @@ public class TerraWorldImpl implements TerraWorld { } - @Override - public WorldConfigImpl getConfig() { - return config; - } - - @Override public BlockState getUngeneratedBlock(int x, int y, int z) { return world.getTerraGenerator().getBlock(world, x, y, z); From 109b5e38cd4a2011a38eda7b7e9c0ba5b09b88b1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:13:37 -0700 Subject: [PATCH 0354/1529] remove most terraworld dependency --- .../feature/FeatureGenerationStage.java | 1 - .../java/com/dfsek/terra/api/TerraPlugin.java | 2 -- .../dfsek/terra/commands/GetBlockCommand.java | 2 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 13 ---------- .../dfsek/terra/fabric/TerraFabricPlugin.java | 24 ------------------- .../FabricChunkGeneratorWrapper.java | 14 +++++------ .../terra/fabric/mixin/ServerWorldMixin.java | 7 ++---- .../com/dfsek/terra/StandalonePlugin.java | 13 ---------- .../dfsek/terra/sponge/TerraSpongePlugin.java | 7 ------ 9 files changed, 9 insertions(+), 74 deletions(-) diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index c54d2eeae..2ad9e18a5 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -21,7 +21,6 @@ public class FeatureGenerationStage implements TerraGenerationStage { @Override @SuppressWarnings("try") public void populate(World world, Chunk chunk) { - TerraWorld terraWorld = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("feature")) { int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 3af2b603e..86486e30a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -22,8 +22,6 @@ import java.io.File; public interface TerraPlugin extends LoaderRegistrar { WorldHandle getWorldHandle(); - TerraWorld getWorld(World world); - Logger logger(); PluginConfig getTerraConfig(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index 0e2c78f0a..05f437751 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -23,6 +23,6 @@ public class GetBlockCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - sender.sendMessage("Block: " + main.getWorld(player.world()).getUngeneratedBlock(player.position()).getAsString()); + sender.sendMessage("Block: " + player.world().getTerraGenerator().getBlock(player.world(), player.position()).getAsString()); } } 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 f74ad670d..a92a5e77e 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 @@ -23,7 +23,6 @@ import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; import com.dfsek.terra.bukkit.command.SaveDataCommand; @@ -35,7 +34,6 @@ import com.dfsek.terra.bukkit.listeners.PaperListener; import com.dfsek.terra.bukkit.listeners.SpigotListener; 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; @@ -253,17 +251,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { return checkedRegistry; } - public TerraWorld getWorld(World world) { - BukkitWorld w = (BukkitWorld) world; - if(!w.isTerraWorld()) - throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator()); - if(!worlds.containsKey(w.getName())) { - getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\""); - return new TerraWorldImpl(w, ((TerraChunkGenerator) w.getGenerator().getHandle()).getConfigPack(), this); - } - return worldMap.computeIfAbsent(w, w2 -> new TerraWorldImpl(w, worlds.get(w.getName()), this)); - } - @Override public Logger logger() { return new JavaLogger(getLogger()); 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 553bb7ee5..34c660f89 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 @@ -25,9 +25,7 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.TerraCommandManager; @@ -52,17 +50,13 @@ import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; -import com.dfsek.terra.world.TerraWorldImpl; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; -import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.decorator.Decorator; import net.minecraft.world.gen.decorator.NopeDecoratorConfig; import net.minecraft.world.gen.feature.ConfiguredFeature; @@ -83,7 +77,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); private static TerraFabricPlugin instance; private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); - private final Map worldMap = new HashMap<>(); private final EventManager eventManager = new EventManagerImpl(this); private final GenericLoaders genericLoaders = new GenericLoaders(this); private final Profiler profiler = new ProfilerImpl(); @@ -119,10 +112,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return instance; } - public Map getWorldMap() { - return worldMap; - } - private ProtoBiome parseBiome(String id) throws LoadException { Identifier identifier = Identifier.tryParse(id); if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier); // failure. @@ -138,15 +127,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return worldHandle; } - @Override - public TerraWorld getWorld(World world) { - return getWorld(((WorldAccess) world).getDimension()); - } - - public TerraWorld getWorld(DimensionType type) { - throw new IllegalArgumentException("No world exists with dimension type " + type); - } - @Override public Logger logger() { return logger; @@ -186,10 +166,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { config.load(this); LangUtil.load(config.getLanguage(), this); // Load language. boolean succeed = configRegistry.loadAll(this); - worldMap.forEach((seed, world) -> { - if(!(world instanceof World)) return; - ((World) world).getConfig().getSamplerCache().clear(); - }); return succeed; } 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 ae25b2471..6be39fc8b 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 @@ -65,7 +65,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener private final TerraBiomeSource biomeSource; private final ConfigPack pack; - private DimensionType dimensionType; + private ServerWorld world; public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { super(biomeSource, new StructuresConfig(false)); @@ -98,8 +98,8 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener // No-op } - public void setDimensionType(DimensionType dimensionType) { - this.dimensionType = dimensionType; + public void setWorld(ServerWorld world) { + this.world = world; } @Nullable @@ -170,9 +170,8 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) { - TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType); - int height = world.getWorld().getMaxHeight(); - while(height >= world.getWorld().getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) world.getUngeneratedBlock(x, height - 1, z)).getHandle())) { + int height = ((World) world).getMaxHeight(); + while(height >= ((World) world).getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) ((World) world).getTerraGenerator().getBlock((World) world, x, height - 1, z)).getHandle())) { height--; } return height; @@ -180,10 +179,9 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView view) { - TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType); BlockState[] array = new BlockState[view.getHeight()]; for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) { - array[y] = ((FabricBlockState) world.getUngeneratedBlock(x, y, z)).getHandle(); + array[y] = ((FabricBlockState) ((World) world).getTerraGenerator().getBlock((World) world, x, y, z)).getHandle(); } return new VerticalBlockSample(view.getBottomY(), array); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index 36388dedb..33e41839a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -1,9 +1,7 @@ package com.dfsek.terra.fabric.mixin; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.world.TerraWorldImpl; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; @@ -27,9 +25,8 @@ public abstract class ServerWorldMixin { @Inject(method = "", at = @At(value = "RETURN")) public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey registryKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { - TerraFabricPlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorldImpl((com.dfsek.terra.api.world.World) this, ((FabricChunkGeneratorWrapper) chunkGenerator).getPack(), TerraFabricPlugin.getInstance()))); - ((FabricChunkGeneratorWrapper) chunkGenerator).setDimensionType(dimensionType); - TerraFabricPlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType); + ((FabricChunkGeneratorWrapper) chunkGenerator).setWorld((ServerWorld) (Object) this); + TerraFabricPlugin.getInstance().logger().info("Registered world " + this); } } } 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 1fe018928..276639515 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -1,8 +1,6 @@ package com.dfsek.terra; -import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.state.BlockState; @@ -15,9 +13,6 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.tectonic.LoaderHolder; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; @@ -33,12 +28,9 @@ import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.util.logging.JavaLogger; -import com.dfsek.terra.world.TerraWorldImpl; import java.io.File; import java.io.IOException; -import java.lang.reflect.Type; -import java.util.function.Supplier; import java.util.logging.Logger; public class StandalonePlugin implements TerraPlugin { @@ -58,11 +50,6 @@ public class StandalonePlugin implements TerraPlugin { return worldHandle; } - @Override - public TerraWorld getWorld(World world) { - return new TerraWorldImpl(world, registry.get("DEFAULT"), this); - } - @Override public com.dfsek.terra.api.Logger logger() { return new JavaLogger(Logger.getLogger("Terra")); diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index d9ff86d23..be0eb9be7 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -12,8 +12,6 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LanguageImpl; import com.dfsek.terra.event.EventManagerImpl; @@ -68,11 +66,6 @@ public class TerraSpongePlugin implements TerraPlugin { return spongeWorldHandle; } - @Override - public TerraWorld getWorld(World world) { - return null; - } - @Override public com.dfsek.terra.api.Logger logger() { return new SpongeLogger(logger); From 1039bf60010881809d1207c9520e7df0f1ff2b91 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:15:06 -0700 Subject: [PATCH 0355/1529] delete TerraWorld --- .../generators/NoiseChunkGenerator3D.java | 1 - .../terra/addons/carver/CavePopulator.java | 2 -- .../dfsek/terra/addons/ore/OrePopulator.java | 1 - .../addons/structure/StructurePopulator.java | 1 - .../feature/FeatureGenerationStage.java | 1 - .../flora/FloraGenerationStage.java | 1 - .../script/functions/CheckFunction.java | 1 - .../java/com/dfsek/terra/api/TerraPlugin.java | 2 -- .../dfsek/terra/api/config/ConfigPack.java | 1 - .../dfsek/terra/api/config/WorldConfig.java | 3 -- .../com/dfsek/terra/api/world/TerraWorld.java | 22 ------------ .../terra/config/pack/ConfigPackImpl.java | 1 - .../terra/config/pack/WorldConfigImpl.java | 1 - .../dfsek/terra/world/SamplerCacheImpl.java | 1 - .../com/dfsek/terra/world/TerraWorldImpl.java | 35 ------------------- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 13 +------ .../bukkit/listeners/CommonListener.java | 1 - .../terra/bukkit/listeners/PaperListener.java | 1 - .../bukkit/listeners/SpigotListener.java | 1 - .../FabricChunkGeneratorWrapper.java | 2 -- 20 files changed, 1 insertion(+), 91 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 742965bf5..f99f50537 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -11,7 +11,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index e70c36b2b..7f2263b0b 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -4,12 +4,10 @@ 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.config.WorldConfig; -import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraGenerationStage; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 434ad6684..ac5cf1ca8 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.TerraGenerationStage; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 1c69b024a..355161c4c 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 2ad9e18a5..7c8cf1c57 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -7,7 +7,6 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.TerraGenerationStage; diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index b722e40d7..50bb228ce 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraGenerationStage; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index 5856133ca..ea0fe9af5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -10,7 +10,6 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.SamplerCache; import net.jafama.FastMath; diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 86486e30a..698556227 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -11,8 +11,6 @@ import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; import java.io.File; 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 a46bb4942..8deb84c06 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 @@ -7,7 +7,6 @@ import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 6d249df70..a377412f4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,13 +1,10 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; -import java.util.List; import java.util.Map; public interface WorldConfig { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java deleted file mode 100644 index 485273c49..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/world/TerraWorld.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.api.world; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - -public interface TerraWorld { - World getWorld(); - - /** - * Get a block at an ungenerated location - * - * @param x X coordinate - * @param y Y coordinate - * @param z Z coordinate - * @return BlockData - */ - BlockState getUngeneratedBlock(int x, int y, int z); - - BlockState getUngeneratedBlock(Vector3 v); -} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index f090f2375..49ca4fd23 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -49,7 +49,6 @@ import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.RegistryFactoryImpl; import com.dfsek.terra.registry.config.ConfigTypeRegistry; -import com.dfsek.terra.world.TerraWorldImpl; import java.awt.image.BufferedImage; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index a934b8830..67bd76148 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -3,7 +3,6 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 45789d1f1..ff799f67c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -2,7 +2,6 @@ package com.dfsek.terra.world; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Sampler; import com.google.common.cache.CacheBuilder; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java deleted file mode 100644 index 9e84ac296..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/TerraWorldImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.world; - -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.config.pack.WorldConfigImpl; - -public class TerraWorldImpl implements TerraWorld { - private final World world; - - public TerraWorldImpl(World w, ConfigPack c, TerraPlugin main) { - if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); - this.world = w; - } - - - @Override - public World getWorld() { - return world; - } - - - @Override - public BlockState getUngeneratedBlock(int x, int y, int z) { - return world.getTerraGenerator().getBlock(world, x, y, z); - } - - @Override - public BlockState getUngeneratedBlock(Vector3 v) { - return getUngeneratedBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); - } -} 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 a92a5e77e..7a3b0ffc4 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 @@ -20,8 +20,6 @@ import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.TerraWorld; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; @@ -47,7 +45,6 @@ import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; import com.dfsek.terra.util.logging.JavaLogger; -import com.dfsek.terra.world.TerraWorldImpl; import io.papermc.lib.PaperLib; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -78,7 +75,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { } private final Map generatorMap = new HashMap<>(); - private final Map worldMap = new HashMap<>(); private final Map worlds = new HashMap<>(); private final Profiler profiler = new ProfilerImpl(); private final ConfigRegistry registry = new ConfigRegistry(); @@ -96,14 +92,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { config.load(this); LangUtil.load(config.getLanguage(), this); // Load language. boolean succeed = registry.loadAll(this); - Map newMap = new HashMap<>(); - worldMap.forEach((world, tw) -> { - world.getConfig().getSamplerCache().clear(); - String packID = world.getConfig().getID(); - newMap.put(world, new TerraWorldImpl(world, registry.get(packID), this)); - }); - worldMap.clear(); - worldMap.putAll(newMap); + return succeed; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 4786690f1..d075ecdee 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index c656c76be..a7316daef 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 02d3fc906..fb6e4f0d5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.bukkit.world.BukkitAdapter; 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 6be39fc8b..0a8bfdaee 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 @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.Chunkified; @@ -29,7 +28,6 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.source.BiomeAccess; import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.ChunkRandom; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.StructureAccessor; From 1f9a51fc40a892d9d80f93835e731c53d0b1aa5a Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:16:42 -0700 Subject: [PATCH 0356/1529] delete GenerationStage --- .../terra/api/world/generator/GenerationStage.java | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java deleted file mode 100644 index a5fc63668..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.api.world.generator; - -import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; - -import java.util.Random; - -public interface GenerationStage extends Handle { - void populate(World world, Random random, Chunk chunk); -} From 76b6c0a984c101fd980678d6520d9c8d21995066 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:17:12 -0700 Subject: [PATCH 0357/1529] TerraGenerationStage -> GenerationStage --- .../generation/generators/NoiseChunkGenerator3D.java | 6 +++--- .../java/com/dfsek/terra/addons/carver/CavePopulator.java | 4 ++-- .../main/java/com/dfsek/terra/addons/ore/OrePopulator.java | 4 ++-- .../dfsek/terra/addons/structure/StructurePopulator.java | 4 ++-- .../addons/generation/feature/FeatureGenerationStage.java | 4 ++-- .../terra/addons/generation/flora/FloraGenerationStage.java | 4 ++-- .../{TerraGenerationStage.java => GenerationStage.java} | 2 +- .../terra/api/world/generator/GenerationStageProvider.java | 2 +- .../terra/api/world/generator/TerraChunkGenerator.java | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/world/generator/{TerraGenerationStage.java => GenerationStage.java} (81%) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index f99f50537..07c2eda3a 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -19,7 +19,7 @@ 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.TerraChunkGenerator; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -30,7 +30,7 @@ import java.util.Random; public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - private final List generationStages = new ArrayList<>(); + private final List generationStages = new ArrayList<>(); private final BlockState air; @@ -160,7 +160,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { } @Override - public List getGenerationStages() { + public List getGenerationStages() { return generationStages; } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 7f2263b0b..bf9398586 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -10,14 +10,14 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; import java.util.Random; -public class CavePopulator implements TerraGenerationStage, Chunkified { +public class CavePopulator implements GenerationStage, Chunkified { private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. private final TerraPlugin main; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index ac5cf1ca8..f6146fdd0 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -6,12 +6,12 @@ import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; import org.jetbrains.annotations.NotNull; import java.util.Random; -public class OrePopulator implements TerraGenerationStage { +public class OrePopulator implements GenerationStage { private final TerraPlugin main; public OrePopulator(TerraPlugin main) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 355161c4c..e3067f95a 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -11,13 +11,13 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Random; -public class StructurePopulator implements TerraGenerationStage, Chunkified { +public class StructurePopulator implements GenerationStage, Chunkified { private final TerraPlugin main; public StructurePopulator(TerraPlugin main) { diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 7c8cf1c57..180bbb63c 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -8,9 +8,9 @@ import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; -public class FeatureGenerationStage implements TerraGenerationStage { +public class FeatureGenerationStage implements GenerationStage { private final TerraPlugin main; public FeatureGenerationStage(TerraPlugin main) { diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 50bb228ce..8957fad87 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraGenerationStage; +import com.dfsek.terra.api.world.generator.GenerationStage; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -18,7 +18,7 @@ import java.util.Random; /** * Populates Flora */ -public class FloraGenerationStage implements TerraGenerationStage { +public class FloraGenerationStage implements GenerationStage { private final TerraPlugin main; public FloraGenerationStage(TerraPlugin main) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java similarity index 81% rename from common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java index 8f4cf9f0a..9b14e61de 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraGenerationStage.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java @@ -3,6 +3,6 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -public interface TerraGenerationStage { +public interface GenerationStage { void populate(World world, Chunk chunk); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java index 209001f56..db12f7b15 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java @@ -3,5 +3,5 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.config.ConfigPack; public interface GenerationStageProvider { - TerraGenerationStage newInstance(ConfigPack pack); + GenerationStage newInstance(ConfigPack pack); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java index e2ef1241a..390a00a72 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java @@ -23,7 +23,7 @@ public interface TerraChunkGenerator { Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth); - List getGenerationStages(); + List getGenerationStages(); BlockState getBlock(World world, int x, int y, int z); From 2e2f9d854d497a053a131f05e8d84b546a7e7068 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:18:07 -0700 Subject: [PATCH 0358/1529] delete ChunkGeneratorMixin --- .../implementations/ChunkGeneratorMixin.java | 16 ---------------- .../fabric/src/main/resources/terra.mixins.json | 1 - 2 files changed, 17 deletions(-) delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java deleted file mode 100644 index cb290eb3f..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ChunkGeneratorMixin.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.fabric.mixin.implementations; - -import net.minecraft.world.gen.chunk.ChunkGenerator; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(ChunkGenerator.class) -@Implements(@Interface(iface = com.dfsek.terra.api.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ChunkGeneratorMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index a6371aee8..cf04a0954 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -11,7 +11,6 @@ "access.MobSpawnerLogicAccessor", "access.StateAccessor", "implementations.BiomeMixin", - "implementations.ChunkGeneratorMixin", "implementations.ConfiguredFeatureMixin", "implementations.block.BlockEntityMixin", "implementations.block.BlockMixin", From a753351137c8fcec585eac16fe2b67438bf01fc1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:19:04 -0700 Subject: [PATCH 0359/1529] Move BukkitChunkData out of BukkitChunkGenerator --- .../bukkit/generator/BukkitChunkData.java | 38 +++++++++++++++++++ .../generator/BukkitChunkGenerator.java | 30 --------------- .../BukkitChunkGeneratorWrapper.java | 2 +- 3 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java new file mode 100644 index 000000000..8dbfceb87 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.bukkit.generator; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; +import org.bukkit.generator.ChunkGenerator; +import org.jetbrains.annotations.NotNull; + +public class BukkitChunkData implements ChunkData { + + private final ChunkGenerator.ChunkData delegate; + + public BukkitChunkData(ChunkGenerator.ChunkData delegate) { + this.delegate = delegate; + } + + @Override + public ChunkGenerator.ChunkData getHandle() { + return delegate; + } + + @Override + public int getMaxHeight() { + return delegate.getMaxHeight(); + } + + + @Override + public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { + delegate.setBlock(x, y, z, ((BukkitBlockState) blockState).getHandle()); + } + + + @Override + public @NotNull BlockState getBlock(int x, int y, int z) { + return BukkitBlockState.newInstance(delegate.getBlockData(x, y, z)); + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java index c0e5ed4ef..a040efad8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java @@ -18,34 +18,4 @@ public class BukkitChunkGenerator implements com.dfsek.terra.api.world.generator return delegate; } - public static class BukkitChunkData implements ChunkData { - - private final ChunkGenerator.ChunkData delegate; - - public BukkitChunkData(ChunkGenerator.ChunkData delegate) { - this.delegate = delegate; - } - - @Override - public ChunkGenerator.ChunkData getHandle() { - return delegate; - } - - @Override - public int getMaxHeight() { - return delegate.getMaxHeight(); - } - - - @Override - public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { - delegate.setBlock(x, y, z, ((BukkitBlockState) blockState).getHandle()); - } - - - @Override - public @NotNull BlockState getBlock(int x, int y, int z) { - return BukkitBlockState.newInstance(delegate.getBlockData(x, y, z)); - } - } } 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 5276a47a9..1b56b2cae 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 @@ -72,7 +72,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener com.dfsek.terra.api.world.World bukkitWorld = BukkitAdapter.adapt(world); if(needsLoad) load(bukkitWorld); // Load population data for world. delegate.generateBiomes(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome)); - return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitChunkGenerator.BukkitChunkData(createChunkData(world))).getHandle(); + return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitChunkData(createChunkData(world))).getHandle(); } @Override From fe68aa6279ec007d5deac5beb7f2159edeca65df Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:21:14 -0700 Subject: [PATCH 0360/1529] remove World#isTerraWorld --- common/api/src/main/java/com/dfsek/terra/api/world/World.java | 4 ---- .../java/com/dfsek/terra/commands/TerraCommandManager.java | 2 +- .../terra/bukkit/generator/BukkitChunkGeneratorWrapper.java | 1 - .../java/com/dfsek/terra/bukkit/listeners/CommonListener.java | 1 - .../java/com/dfsek/terra/bukkit/listeners/PaperListener.java | 1 - .../java/com/dfsek/terra/bukkit/listeners/SpigotListener.java | 3 --- 6 files changed, 1 insertion(+), 11 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 962b91f92..440ddf6bd 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -55,10 +55,6 @@ public interface World extends Handle { int getMinHeight(); - default boolean isTerraWorld() { - return getGenerator().getHandle() instanceof GeneratorWrapper; - } - default TerraChunkGenerator getTerraGenerator() { return ((GeneratorWrapper) getGenerator().getHandle()).getHandle(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 34e3f29c5..09e1108b8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -66,7 +66,7 @@ public class TerraCommandManager implements CommandManager { return; } - if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player) || !(((Player) sender).world()).isTerraWorld())) { + if(commandClass.isAnnotationPresent(WorldCommand.class) && (!(sender instanceof Player))) { sender.sendMessage("Command must be executed in a Terra world."); return; } 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 1b56b2cae..33a22b1f9 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 @@ -51,7 +51,6 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener } public static synchronized void fixChunk(Chunk c) { - if(!c.getWorld().isTerraWorld()) throw new IllegalArgumentException(); popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld()); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index d075ecdee..4726f0836 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -41,7 +41,6 @@ public class CommonListener implements Listener { public void onSaplingGrow(StructureGrowEvent e) { if(e.isCancelled()) return; World bukkit = BukkitAdapter.adapt(e.getWorld()); - if(!bukkit.isTerraWorld()) return; WorldConfig c = bukkit.getConfig(); if(c.isDisableSaplings()) return; e.setCancelled(true); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index a7316daef..82a410479 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -19,7 +19,6 @@ public class PaperListener implements Listener { @EventHandler public void onStructureLocate(StructureLocateEvent e) { - if(!BukkitAdapter.adapt(e.getWorld()).isTerraWorld()) return; String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); World w = BukkitAdapter.adapt(e.getWorld()); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index fb6e4f0d5..c82051162 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -35,7 +35,6 @@ public class SpigotListener implements Listener { Entity entity = e.getEntity(); if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) { main.getDebugLogger().info("Detected Ender Signal..."); - if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; World w = BukkitAdapter.adapt(e.getEntity().getWorld()); EnderSignal signal = (EnderSignal) entity; ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(w.getConfig().getLocatable().get("STRONGHOLD")); @@ -54,7 +53,6 @@ public class SpigotListener implements Listener { @EventHandler public void onCartographerChange(VillagerAcquireTradeEvent e) { - if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; if(!(e.getEntity() instanceof Villager)) return; if(((Villager) e.getEntity()).getProfession().equals(Villager.Profession.CARTOGRAPHER)) { main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning."); @@ -66,7 +64,6 @@ public class SpigotListener implements Listener { @EventHandler public void onCartographerLevel(VillagerCareerChangeEvent e) { - if(!BukkitAdapter.adapt(e.getEntity().getWorld()).isTerraWorld()) return; if(e.getProfession().equals(Villager.Profession.CARTOGRAPHER)) { main.logger().severe("Prevented server crash by stopping Cartographer villager from spawning."); main.logger().severe("Please upgrade to Paper, which has a StructureLocateEvent that fixes this issue"); From 2517b7495157e76a0c57b9f29b65671466a412d7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:25:06 -0700 Subject: [PATCH 0361/1529] remove isTerraWorld from Fabric mixins --- .../fabric/mixin/implementations/world/ChunkRegionMixin.java | 4 ---- .../fabric/mixin/implementations/world/ServerWorldMixin.java | 4 ---- 2 files changed, 8 deletions(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 380c408e3..e796d8009 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -115,10 +115,6 @@ public abstract class ChunkRegionMixin { return this; } - public boolean terraWorld$isTerraWorld() { - return terraWorld$getGenerator() instanceof GeneratorWrapper; - } - public TerraChunkGenerator terraWorld$getTerraGenerator() { return ((FabricChunkGeneratorWrapper) terraWorld$getGenerator()).getHandle(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 1dab4e632..818db1322 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -100,10 +100,6 @@ public abstract class ServerWorldMixin { return this; } - public boolean terra$isTerraWorld() { - return terra$getGenerator() instanceof GeneratorWrapper; - } - public TerraChunkGenerator terra$getTerraGenerator() { return ((FabricChunkGeneratorWrapper) terra$getGenerator()).getHandle(); } From ec14666c6d223b387ef4e7c858598e8622ed1067 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:28:11 -0700 Subject: [PATCH 0362/1529] remove World#getGenerator --- .../api/src/main/java/com/dfsek/terra/api/world/World.java | 6 +----- .../main/java/com/dfsek/terra/config/dummy/DummyWorld.java | 7 ------- .../java/com/dfsek/terra/bukkit/world/BukkitWorld.java | 7 ------- .../mixin/implementations/ConfiguredFeatureMixin.java | 4 +++- .../mixin/implementations/world/ChunkRegionMixin.java | 6 +++++- .../main/java/com/dfsek/terra/platform/DirectWorld.java | 6 ------ 6 files changed, 9 insertions(+), 27 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 440ddf6bd..d5d828595 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -17,8 +17,6 @@ public interface World extends Handle { int getMaxHeight(); - ChunkGenerator getGenerator(); - Chunk getChunkAt(int x, int z); default Chunk getChunkAt(Vector3 location) { @@ -55,9 +53,7 @@ public interface World extends Handle { int getMinHeight(); - default TerraChunkGenerator getTerraGenerator() { - return ((GeneratorWrapper) getGenerator().getHandle()).getHandle(); - } + TerraChunkGenerator getTerraGenerator(); BiomeProvider getBiomeProvider(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 38d7aad51..594d475ad 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -9,8 +9,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; public class DummyWorld implements World { @Override @@ -28,11 +26,6 @@ public class DummyWorld implements World { return 255; } - @Override - public ChunkGenerator getGenerator() { - return () -> (GeneratorWrapper) () -> null; - } - @Override public Chunk getChunkAt(int x, int z) { throw new UnsupportedOperationException("Cannot get chunk in DummyWorld"); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 28fc701f5..77aa58976 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -7,9 +7,7 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.BukkitEntity; -import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; @@ -33,11 +31,6 @@ public class BukkitWorld implements World { return delegate.getMaxHeight(); } - @Override - public ChunkGenerator getGenerator() { - return new BukkitChunkGenerator(delegate.getGenerator()); - } - public String getName() { return delegate.getName(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index a8ef5d8b3..38090e1cb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -9,7 +9,9 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.WorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.spongepowered.asm.mixin.Implements; @@ -32,7 +34,7 @@ public abstract class ConfiguredFeatureMixin { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) world); - ChunkGenerator generatorWrapper = (ChunkGenerator) world.getGenerator(); + ChunkGenerator generatorWrapper = ((ServerWorldAccess) world).toServerWorld().getChunkManager().getChunkGenerator(); return generate(fabricWorldAccess, generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index e796d8009..694eb6b42 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -24,6 +24,7 @@ import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.TickScheduler; import net.minecraft.world.WorldAccess; +import net.minecraft.world.chunk.ChunkManager; import net.minecraft.world.chunk.ChunkStatus; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; @@ -56,6 +57,9 @@ public abstract class ChunkRegionMixin { @Shadow public abstract TickScheduler getFluidTickScheduler(); + @Shadow + public abstract ChunkManager getChunkManager(); + public int terraWorld$getMaxHeight() { return (((ChunkRegion) (Object) this).getBottomY()) + ((ChunkRegion) (Object) this).getHeight(); } @@ -116,7 +120,7 @@ public abstract class ChunkRegionMixin { } public TerraChunkGenerator terraWorld$getTerraGenerator() { - return ((FabricChunkGeneratorWrapper) terraWorld$getGenerator()).getHandle(); + return ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator()).getHandle(); } @SuppressWarnings("deprecation") diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index fc99eaebe..620aa5a54 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkGenerator; import net.jafama.FastMath; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -40,11 +39,6 @@ public class DirectWorld implements World { return 255; } - @Override - public ChunkGenerator getGenerator() { - return generator; - } - @Override public Chunk getChunkAt(int x, int z) { MCAFile file = compute(x, z); From ad9cc1afcb19a6eb02f053662c8773d24eef9b62 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 14:28:37 -0700 Subject: [PATCH 0363/1529] World#getTerraGenerator -> World#getGenerator --- .../terra/addons/terrascript/buffer/items/BufferedEntity.java | 2 +- .../terrascript/buffer/items/BufferedLootApplication.java | 2 +- common/api/src/main/java/com/dfsek/terra/api/world/World.java | 2 +- .../main/java/com/dfsek/terra/commands/GetBlockCommand.java | 2 +- .../src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java | 2 +- .../terra/fabric/generation/FabricChunkGeneratorWrapper.java | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java index 5cf0bc1cf..d32b73997 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java @@ -21,6 +21,6 @@ public class BufferedEntity implements BufferedItem { @Override public void paste(Vector3 origin, World world) { Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); - main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getTerraGenerator().getConfigPack(), entity)); + main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getGenerator().getConfigPack(), entity)); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index 77e357dd2..41b3e16cb 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -33,7 +33,7 @@ public class BufferedLootApplication implements BufferedItem { } Container container = (Container) data; - LootPopulateEvent event = new LootPopulateEvent(container, table, world.getTerraGenerator().getConfigPack(), structure); + LootPopulateEvent event = new LootPopulateEvent(container, table, world.getGenerator().getConfigPack(), structure); main.getEventManager().callEvent(event); if(event.isCancelled()) return; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index d5d828595..6dd19db6f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -53,7 +53,7 @@ public interface World extends Handle { int getMinHeight(); - TerraChunkGenerator getTerraGenerator(); + TerraChunkGenerator getGenerator(); BiomeProvider getBiomeProvider(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index 05f437751..f0d34d3ea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -23,6 +23,6 @@ public class GetBlockCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - sender.sendMessage("Block: " + player.world().getTerraGenerator().getBlock(player.world(), player.position()).getAsString()); + sender.sendMessage("Block: " + player.world().getGenerator().getBlock(player.world(), player.position()).getAsString()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index ff799f67c..d4670f3cd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -20,7 +20,7 @@ public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.Sam public Sampler load(@NotNull Long key) { int cx = (int) (key >> 32); int cz = (int) key.longValue(); - return world.getTerraGenerator().createSampler(cx, cz, world.getBiomeProvider(), world, world.getConfig().elevationBlend()); + return world.getGenerator().createSampler(cx, cz, world.getBiomeProvider(), world, world.getConfig().elevationBlend()); } }); } 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 0a8bfdaee..102c50f61 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 @@ -169,7 +169,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) { int height = ((World) world).getMaxHeight(); - while(height >= ((World) world).getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) ((World) world).getTerraGenerator().getBlock((World) world, x, height - 1, z)).getHandle())) { + while(height >= ((World) world).getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) ((World) world).getGenerator().getBlock((World) world, x, height - 1, z)).getHandle())) { height--; } return height; @@ -179,7 +179,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView view) { BlockState[] array = new BlockState[view.getHeight()]; for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) { - array[y] = ((FabricBlockState) ((World) world).getTerraGenerator().getBlock((World) world, x, y, z)).getHandle(); + array[y] = ((FabricBlockState) ((World) world).getGenerator().getBlock((World) world, x, y, z)).getHandle(); } return new VerticalBlockSample(view.getBottomY(), array); } From 6ea11de2fdcaa4e91e7e708dcd5af747f197026b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:25:53 -0700 Subject: [PATCH 0364/1529] cleanup --- .../terrascript/buffer/items/BufferedEntity.java | 2 +- .../buffer/items/BufferedLootApplication.java | 2 +- .../com/dfsek/terra/api/config/WorldConfig.java | 2 ++ .../com/dfsek/terra/config/dummy/DummyWorld.java | 6 ++++++ .../dfsek/terra/config/pack/WorldConfigImpl.java | 6 ++++++ .../implementations/world/ChunkRegionMixin.java | 13 +------------ .../implementations/world/ServerWorldMixin.java | 14 ++++++++------ 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java index d32b73997..300b9c989 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java @@ -21,6 +21,6 @@ public class BufferedEntity implements BufferedItem { @Override public void paste(Vector3 origin, World world) { Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); - main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getGenerator().getConfigPack(), entity)); + main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getConfig().getPack(), entity)); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index 41b3e16cb..176184216 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -33,7 +33,7 @@ public class BufferedLootApplication implements BufferedItem { } Container container = (Container) data; - LootPopulateEvent event = new LootPopulateEvent(container, table, world.getGenerator().getConfigPack(), structure); + LootPopulateEvent event = new LootPopulateEvent(container, table, world.getConfig().getPack(), structure); main.getEventManager().callEvent(event); if(event.isCancelled()) return; diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index a377412f4..cbcf9152b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -16,6 +16,8 @@ public interface WorldConfig { BiomeProvider getProvider(); + ConfigPack getPack(); + int elevationBlend(); boolean disableTrees(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 594d475ad..563450cb5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; public class DummyWorld implements World { @Override @@ -56,6 +57,11 @@ public class DummyWorld implements World { return 0; } + @Override + public TerraChunkGenerator getGenerator() { + throw new UnsupportedOperationException("Cannot get generator of DummyWorld"); + } + @Override public BiomeProvider getBiomeProvider() { throw new UnsupportedOperationException("Cannot get biome provider of DummyWorld"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 67bd76148..1f9b0e1e2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.World; @@ -54,6 +55,11 @@ public class WorldConfigImpl implements WorldConfig { return provider; } + @Override + public ConfigPack getPack() { + return pack; + } + @Override public int elevationBlend() { return pack.getTemplate().getElevationBlend(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 694eb6b42..092ee9977 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -51,15 +51,9 @@ public abstract class ChunkRegionMixin { @Final private long seed; - @Shadow - public abstract boolean setBlockState(BlockPos pos, net.minecraft.block.BlockState state, int flags, int maxUpdateDepth); - @Shadow public abstract TickScheduler getFluidTickScheduler(); - @Shadow - public abstract ChunkManager getChunkManager(); - public int terraWorld$getMaxHeight() { return (((ChunkRegion) (Object) this).getBottomY()) + ((ChunkRegion) (Object) this).getHeight(); } @@ -69,11 +63,6 @@ public abstract class ChunkRegionMixin { this.config = ((World) world).getConfig(); } - @SuppressWarnings("deprecation") - public ChunkGenerator terraWorld$getGenerator() { - return (ChunkGenerator) ((ChunkRegion) (Object) this).toServerWorld().getChunkManager().getChunkGenerator(); - } - public Chunk terraWorld$getChunkAt(int x, int z) { return (Chunk) ((ChunkRegion) (Object) this).getChunk(x, z); } @@ -119,7 +108,7 @@ public abstract class ChunkRegionMixin { return this; } - public TerraChunkGenerator terraWorld$getTerraGenerator() { + public TerraChunkGenerator terraWorld$getGenerator() { return ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator()).getHandle(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 818db1322..b4234284b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -18,6 +18,7 @@ import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.util.FabricUtil; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; +import net.minecraft.server.world.ServerChunkManager; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.RegistryKey; @@ -28,6 +29,7 @@ import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.Spawner; import net.minecraft.world.level.ServerWorldProperties; import net.minecraft.world.level.storage.LevelStorage; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; @@ -47,6 +49,10 @@ public abstract class ServerWorldMixin { @Shadow public abstract long getSeed(); + @Shadow + @Final + private ServerChunkManager chunkManager; + @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lnet/minecraft/world/level/storage/LevelStorage$Session;Lnet/minecraft/world/level/ServerWorldProperties;Lnet/minecraft/util/registry/RegistryKey;Lnet/minecraft/world/dimension/DimensionType;Lnet/minecraft/server/WorldGenerationProgressListener;Lnet/minecraft/world/gen/chunk/ChunkGenerator;ZJLjava/util/List;Z)V") public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey worldKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, net.minecraft.world.gen.chunk.ChunkGenerator chunkGenerator, boolean debugWorld, long seed, List spawners, boolean shouldTickTime, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { @@ -58,10 +64,6 @@ public abstract class ServerWorldMixin { return (((ServerWorld) (Object) this).getBottomY()) + ((ServerWorld) (Object) this).getHeight(); } - public ChunkGenerator terra$getGenerator() { - return (ChunkGenerator) ((ServerWorld) (Object) this).getChunkManager().getChunkGenerator(); - } - public Chunk terra$getChunkAt(int x, int z) { return (Chunk) ((ServerWorld) (Object) this).getChunk(x, z); } @@ -100,8 +102,8 @@ public abstract class ServerWorldMixin { return this; } - public TerraChunkGenerator terra$getTerraGenerator() { - return ((FabricChunkGeneratorWrapper) terra$getGenerator()).getHandle(); + public TerraChunkGenerator terra$getGenerator() { + return ((FabricChunkGeneratorWrapper) chunkManager.getChunkGenerator()).getHandle(); } public BiomeProvider terra$getBiomeProvider() { From b3f92410e07753c9dccb7f9c33e7bf2a3586a865 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:26:29 -0700 Subject: [PATCH 0365/1529] delete BukkitChunkGenerator --- .../generator/BukkitChunkGenerator.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java deleted file mode 100644 index a040efad8..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGenerator.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.bukkit.generator; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; -import org.bukkit.generator.ChunkGenerator; -import org.jetbrains.annotations.NotNull; - -public class BukkitChunkGenerator implements com.dfsek.terra.api.world.generator.ChunkGenerator { - private final ChunkGenerator delegate; - - public BukkitChunkGenerator(ChunkGenerator delegate) { - this.delegate = delegate; - } - - @Override - public ChunkGenerator getHandle() { - return delegate; - } - -} From 9bf7b373b103b1317caf55d9b82cab454ec9475f Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:27:30 -0700 Subject: [PATCH 0366/1529] delete GenWrapper --- .../com/dfsek/terra/platform/DirectWorld.java | 2 +- .../com/dfsek/terra/platform/GenWrapper.java | 18 ------------------ .../java/com/dfsek/terra/region/Generator.java | 4 +--- 3 files changed, 2 insertions(+), 22 deletions(-) delete mode 100644 platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index 620aa5a54..de8b0a58f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -24,7 +24,7 @@ public class DirectWorld implements World { private final GenWrapper generator; private final Map files = Collections.synchronizedMap(new HashMap<>()); - public DirectWorld(long seed, GenWrapper generator) { + public DirectWorld(long seed) { this.seed = seed; this.generator = generator; } 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 deleted file mode 100644 index a093ebe95..000000000 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.platform; - -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; - -public class GenWrapper implements ChunkGenerator { - private final TerraChunkGenerator generator; - - public GenWrapper(TerraChunkGenerator generator) { - this.generator = generator; - } - - @Override - public Object getHandle() { - return 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 6a674000e..1c88db64c 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 @@ -4,7 +4,6 @@ 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 net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -28,8 +27,7 @@ public class Generator { System.out.println("Total mem: " + Runtime.getRuntime().maxMemory() / 1024 / 1024 / 1024 + "GB"); - GenWrapper wrapper = new GenWrapper(generator); - DirectWorld world = new DirectWorld(seed, wrapper); + DirectWorld world = new DirectWorld(seed, null); long l = System.nanoTime(); int count = 0; From 8ae457b251d8ab8d293f935bbdaf4ac03f673a7c Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:28:50 -0700 Subject: [PATCH 0367/1529] remove region buildscript --- platforms/region/{build.gradle.kts => build.gradle.kts.old} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename platforms/region/{build.gradle.kts => build.gradle.kts.old} (100%) diff --git a/platforms/region/build.gradle.kts b/platforms/region/build.gradle.kts.old similarity index 100% rename from platforms/region/build.gradle.kts rename to platforms/region/build.gradle.kts.old From cdcbd28aa0a0a44fe7326dd98f65737f8bdfd147 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:29:16 -0700 Subject: [PATCH 0368/1529] remove sponge buildscript --- platforms/sponge/{build.gradle.kts => build.gradle.kts.old} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename platforms/sponge/{build.gradle.kts => build.gradle.kts.old} (100%) diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts.old similarity index 100% rename from platforms/sponge/build.gradle.kts rename to platforms/sponge/build.gradle.kts.old From f659c32749cf0261a78606c11e1c966c7d9c88a6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:30:09 -0700 Subject: [PATCH 0369/1529] delete ChunkGenerator --- .../api/src/main/java/com/dfsek/terra/api/world/World.java | 2 -- .../dfsek/terra/api/world/generator/ChunkGenerator.java | 7 ------- .../mixin/implementations/world/ChunkRegionMixin.java | 3 --- .../mixin/implementations/world/ServerWorldMixin.java | 3 --- 4 files changed, 15 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index 6dd19db6f..c67721a72 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -8,8 +8,6 @@ import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; public interface World extends Handle { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java deleted file mode 100644 index 59c8a1678..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.api.world.generator; - -import com.dfsek.terra.api.Handle; - -public interface ChunkGenerator extends Handle { - -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 092ee9977..67cb8d21f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -9,8 +9,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; @@ -24,7 +22,6 @@ import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.TickScheduler; import net.minecraft.world.WorldAccess; -import net.minecraft.world.chunk.ChunkManager; import net.minecraft.world.chunk.ChunkStatus; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index b4234284b..49feb92e6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -9,8 +9,6 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; @@ -22,7 +20,6 @@ import net.minecraft.server.world.ServerChunkManager; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.WorldAccess; import net.minecraft.world.dimension.DimensionType; From 4da5ce748dec592d1995ee4046461ce116ac148c Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:30:44 -0700 Subject: [PATCH 0370/1529] TerraChunkGenerator -> ChunkGenerator --- .../generators/NoiseChunkGenerator3D.java | 4 ++-- .../main/java/com/dfsek/terra/api/world/World.java | 4 ++-- ...TerraChunkGenerator.java => ChunkGenerator.java} | 2 +- .../api/world/generator/ChunkGeneratorProvider.java | 2 +- .../terra/api/world/generator/GeneratorWrapper.java | 2 +- .../com/dfsek/terra/config/dummy/DummyWorld.java | 4 ++-- .../com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../generator/BukkitChunkGeneratorWrapper.java | 11 +++++------ .../bukkit/generator/BukkitPopulatorWrapper.java | 6 +++--- .../terra/bukkit/population/PopulationManager.java | 6 +++--- .../generation/FabricChunkGeneratorWrapper.java | 13 ++++++------- .../implementations/world/ChunkRegionMixin.java | 4 ++-- .../implementations/world/ServerWorldMixin.java | 4 ++-- 13 files changed, 31 insertions(+), 33 deletions(-) rename common/api/src/main/java/com/dfsek/terra/api/world/generator/{TerraChunkGenerator.java => ChunkGenerator.java} (96%) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 07c2eda3a..3f9e33032 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -18,7 +18,7 @@ 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.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.GenerationStage; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; @@ -27,7 +27,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public class NoiseChunkGenerator3D implements TerraChunkGenerator { +public class NoiseChunkGenerator3D implements ChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; private final List generationStages = new ArrayList<>(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/src/main/java/com/dfsek/terra/api/world/World.java index c67721a72..63621f94a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/World.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; public interface World extends Handle { long getSeed(); @@ -51,7 +51,7 @@ public interface World extends Handle { int getMinHeight(); - TerraChunkGenerator getGenerator(); + ChunkGenerator getGenerator(); BiomeProvider getBiomeProvider(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java similarity index 96% rename from common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java index 390a00a72..5b68a50e1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/TerraChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Random; -public interface TerraChunkGenerator { +public interface ChunkGenerator { ChunkData generateChunkData(@NotNull World world, Random random, int x, int z, ChunkData original); void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome); 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 7f3e71443..e68f79444 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 { - TerraChunkGenerator newInstance(ConfigPack pack); + ChunkGenerator newInstance(ConfigPack pack); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java index 0b6cac8e4..e48dda224 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java @@ -4,5 +4,5 @@ import com.dfsek.terra.api.Handle; public interface GeneratorWrapper extends Handle { @Override - TerraChunkGenerator getHandle(); + ChunkGenerator getHandle(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 563450cb5..eef632f69 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; public class DummyWorld implements World { @Override @@ -58,7 +58,7 @@ public class DummyWorld implements World { } @Override - public TerraChunkGenerator getGenerator() { + public ChunkGenerator getGenerator() { throw new UnsupportedOperationException("Cannot get generator of DummyWorld"); } 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 7a3b0ffc4..f1e51d032 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 @@ -74,7 +74,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { else BUKKIT_VERSION = BukkitVersion.UNKNOWN; } - private final Map generatorMap = new HashMap<>(); + private final Map generatorMap = new HashMap<>(); private final Map worlds = new HashMap<>(); private final Profiler profiler = new ProfilerImpl(); private final ConfigRegistry registry = new ConfigRegistry(); 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 33a22b1f9..ec5dcb422 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 @@ -3,13 +3,12 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.population.PopulationManager; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitBiomeGrid; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; -import org.bukkit.generator.ChunkGenerator; import org.jetbrains.annotations.NotNull; import java.io.FileNotFoundException; @@ -20,19 +19,19 @@ import java.util.List; import java.util.Map; import java.util.Random; -public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { +public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGenerator implements GeneratorWrapper { private static final Map popMap = new HashMap<>(); private final PopulationManager popMan; - private final TerraChunkGenerator delegate; + private final ChunkGenerator delegate; private final TerraPlugin main; private boolean needsLoad = true; - public BukkitChunkGeneratorWrapper(TerraChunkGenerator delegate) { + public BukkitChunkGeneratorWrapper(ChunkGenerator delegate) { this.delegate = delegate; this.main = delegate.getMain(); this.popMan = new PopulationManager(delegate, main); @@ -105,7 +104,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener } @Override - public TerraChunkGenerator getHandle() { + public ChunkGenerator getHandle() { return delegate; } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java index 731e03bc6..6ab0626c1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Chunk; import org.bukkit.World; @@ -11,9 +11,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Random; public class BukkitPopulatorWrapper extends BlockPopulator { - private final TerraChunkGenerator delegate; + private final ChunkGenerator delegate; - public BukkitPopulatorWrapper(TerraChunkGenerator delegate) { + public BukkitPopulatorWrapper(ChunkGenerator delegate) { this.delegate = delegate; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 7c8bb5712..4aef275da 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitWorld; @@ -22,11 +22,11 @@ import java.util.Random; * Cursed management class for the horrors of Bukkit population */ public class PopulationManager extends BlockPopulator { - private final TerraChunkGenerator generator; + private final ChunkGenerator generator; private final HashSet needsPop = new HashSet<>(); private final TerraPlugin main; - public PopulationManager(TerraChunkGenerator generator, TerraPlugin main) { + public PopulationManager(ChunkGenerator generator, TerraPlugin main) { this.generator = generator; this.main = main; } 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 102c50f61..ff3061c02 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 @@ -5,7 +5,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; @@ -31,7 +31,6 @@ import net.minecraft.world.chunk.Chunk; import net.minecraft.world.gen.ChunkRandom; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.StructureAccessor; -import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.StructuresConfig; import net.minecraft.world.gen.chunk.VerticalBlockSample; import net.minecraft.world.gen.feature.StructureFeature; @@ -40,7 +39,7 @@ import org.jetbrains.annotations.Nullable; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; -public class FabricChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { +public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.ChunkGenerator implements GeneratorWrapper { public static final Codec PACK_CODEC = RecordCodecBuilder.create( config -> config.group( Codec.STRING.fieldOf("pack") @@ -59,7 +58,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener ); private final long seed; - private final TerraChunkGenerator delegate; + private final ChunkGenerator delegate; private final TerraBiomeSource biomeSource; private final ConfigPack pack; @@ -78,12 +77,12 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener @Override - protected Codec getCodec() { + protected Codec getCodec() { return CODEC; } @Override - public ChunkGenerator withSeed(long seed) { + public net.minecraft.world.gen.chunk.ChunkGenerator withSeed(long seed) { return new FabricChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); } @@ -225,7 +224,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener } @Override - public TerraChunkGenerator getHandle() { + public ChunkGenerator getHandle() { return delegate; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 67cb8d21f..0cfedc3d5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -105,7 +105,7 @@ public abstract class ChunkRegionMixin { return this; } - public TerraChunkGenerator terraWorld$getGenerator() { + public ChunkGenerator terraWorld$getGenerator() { return ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator()).getHandle(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 49feb92e6..b66f64603 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.TerraChunkGenerator; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -99,7 +99,7 @@ public abstract class ServerWorldMixin { return this; } - public TerraChunkGenerator terra$getGenerator() { + public ChunkGenerator terra$getGenerator() { return ((FabricChunkGeneratorWrapper) chunkManager.getChunkGenerator()).getHandle(); } From 2f9387fbf0cdb792b418dc2008807177de8641a8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:33:50 -0700 Subject: [PATCH 0371/1529] refactor BiomeSource to pipeline addon --- .../dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java | 2 +- .../com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java | 2 +- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 5 +++-- .../dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java | 2 +- .../addons/biome/pipeline/config/BiomePipelineTemplate.java | 2 +- .../addons/biome/pipeline/config/NoiseSourceTemplate.java | 2 +- .../terra/addons/biome/pipeline/config/SourceLoader.java | 2 +- .../terra/addons/biome/pipeline/config/SourceTemplate.java | 2 +- .../terra/addons/biome/pipeline/source}/BiomeSource.java | 2 +- .../terra/addons/biome/pipeline/source/NoiseSource.java | 1 - .../src/main/java/com/dfsek/terra/config/GenericLoaders.java | 4 +--- 11 files changed, 12 insertions(+), 14 deletions(-) rename common/{api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline => addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source}/BiomeSource.java (74%) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java index aff69c8b1..3044cd1b9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; public class BiomeHolderImpl implements BiomeHolder { private final Vector2 origin; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java index e16920325..d5266bb15 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import java.util.ArrayList; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 07d86de35..e1bec650b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -30,7 +30,7 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; @Addon("biome-provider-pipeline") @Author("Terra") @@ -59,7 +59,8 @@ public class BiomePipelineAddon extends TerraAddon { .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader())) + .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()) + .applyLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object))) .failThrough(); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java index 1757176a1..1d57ba616 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; public interface BiomeHolder { BiomeHolder expand(BiomeExpander expander, long seed); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 3c3183325..bc35d9a01 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -8,7 +8,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 84a2c573b..042253fe6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; public class NoiseSourceTemplate extends SourceTemplate { @Value("noise") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java index 792f5455b..4a3aa65fd 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.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.addons.biome.pipeline.source.NoiseSource; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import java.lang.reflect.AnnotatedType; import java.util.Map; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index c85785ec1..c9a41e949 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; public abstract class SourceTemplate implements ObjectTemplate{ diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java similarity index 74% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java index 6c6cc3629..fc8df18b0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/pipeline/BiomeSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.world.biome.generation.pipeline; +package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.api.world.biome.TerraBiome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java index 9edc2859f..1ae08b7b8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class NoiseSource implements BiomeSource { private final ProbabilityCollection biomes; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 4c6b447d5..169986768 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -9,7 +9,6 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; @@ -29,8 +28,7 @@ public class GenericLoaders implements LoaderRegistrar { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) - .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) - .registerLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object)); + .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()); if(main != null) { registry.registerLoader(TerraAddon.class, main.getAddons()) From be9e817c889179cf015d6e15fd5916a316897901 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:35:10 -0700 Subject: [PATCH 0372/1529] Generator -> GenerationSettings --- .../addons/chunkgenerator/PaletteUtil.java | 4 ++-- .../generators/NoiseChunkGenerator3D.java | 6 +++--- .../interpolation/ChunkInterpolator2D.java | 18 +++++++++--------- .../interpolation/ChunkInterpolator3D.java | 18 +++++++++--------- .../interpolation/ElevationInterpolator.java | 6 +++--- .../dfsek/terra/addons/biome/BiomeFactory.java | 2 +- .../terra/addons/biome/UserDefinedBiome.java | 8 ++++---- ...java => UserDefinedGenerationSettings.java} | 8 +++----- ...{Generator.java => GenerationSettings.java} | 2 +- .../terra/api/world/biome/TerraBiome.java | 2 +- .../api/world/generator/ChunkInterpolator.java | 10 +++++----- 11 files changed, 41 insertions(+), 43 deletions(-) rename common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/{UserDefinedGenerator.java => UserDefinedGenerationSettings.java} (76%) rename common/api/src/main/java/com/dfsek/terra/api/world/biome/{Generator.java => GenerationSettings.java} (94%) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java index 99090f03e..1b370cfeb 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java @@ -3,12 +3,12 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; public final class PaletteUtil { - public static Palette getPalette(int x, int y, int z, Generator c, Sampler sampler, PaletteInfo paletteInfo) { + public static Palette getPalette(int x, int y, int z, GenerationSettings c, Sampler sampler, PaletteInfo paletteInfo) { SlantHolder slant = paletteInfo.getSlantHolder(); if(slant != null) { double slope = MathUtil.derivative(sampler, x, y, z); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 3f9e33032..55b33fc96 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.GenerationSettings; 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; @@ -98,7 +98,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { main.logger().info("null palette: " + biome.getID()); } - Generator generator = biome.getGenerator(world); + GenerationSettings generationSettings = biome.getGenerator(world); int sea = paletteInfo.getSeaLevel(); Palette seaPalette = paletteInfo.getOcean(); @@ -109,7 +109,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { if(sampler.sample(x, y, z) > 0) { justSet = true; - data = PaletteUtil.getPalette(x, y, z, generator, sampler, paletteInfo).get(paletteLevel, cx, y, cz, seed); + data = PaletteUtil.getPalette(x, y, z, generationSettings, sampler, paletteInfo).get(paletteLevel, cx, y, cz, seed); chunk.setBlock(x, y, z, data); paletteLevel++; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java index 72c83a804..ee4c96414 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java @@ -3,7 +3,7 @@ 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.GenerationSettings; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkInterpolator; import net.jafama.FastMath; @@ -18,7 +18,7 @@ import java.util.function.BiFunction; */ public class ChunkInterpolator2D implements ChunkInterpolator { private final Interpolator[][] interpGrid = new Interpolator[4][4]; - private final BiFunction noiseGetter; + private final BiFunction noiseGetter; /** * Instantiates a 3D ChunkInterpolator3D at a pair of chunk coordinates. @@ -27,7 +27,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { * @param chunkZ Z coordinate of the chunk. * @param provider Biome Provider to use for biome fetching. */ - public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { + public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { this.noiseGetter = noiseGetter; int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; @@ -38,11 +38,11 @@ public class ChunkInterpolator2D implements ChunkInterpolator { for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); - Map genMap = new HashMap<>(); + GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); + Map genMap = new HashMap<>(); - int step = generator.getBlendStep(); - int blend = generator.getBlendDistance(); + int step = generationSettings.getBlendStep(); + int blend = generationSettings.getBlendDistance(); for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { @@ -69,8 +69,8 @@ public class ChunkInterpolator2D implements ChunkInterpolator { return FastMath.max(FastMath.min(value, high), 0); } - public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3(x, y, z)); + public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { + return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); } /** diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index 4841398c8..2ee695885 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -3,7 +3,7 @@ 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.GenerationSettings; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkInterpolator; import net.jafama.FastMath; @@ -18,7 +18,7 @@ import java.util.function.BiFunction; */ public class ChunkInterpolator3D implements ChunkInterpolator { private final Interpolator3[][][] interpGrid; - private final BiFunction noiseGetter; + private final BiFunction noiseGetter; private final int min; private final int max; @@ -30,7 +30,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { * @param chunkZ Z coordinate of the chunk. * @param provider Biome Provider to use for biome fetching. */ - public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { + public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { this.noiseGetter = noiseGetter; int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; @@ -49,11 +49,11 @@ public class ChunkInterpolator3D implements ChunkInterpolator { for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - Generator generator = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); - Map genMap = new HashMap<>(); + GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); + Map genMap = new HashMap<>(); - int step = generator.getBlendStep(); - int blend = generator.getBlendDistance(); + int step = generationSettings.getBlendStep(); + int blend = generationSettings.getBlendDistance(); for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { @@ -88,8 +88,8 @@ public class ChunkInterpolator3D implements ChunkInterpolator { return FastMath.max(FastMath.min(value, high), 0); } - public double computeNoise(Generator generator, double x, double y, double z) { - return noiseGetter.apply(generator, new Vector3(x, y, z)); + public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { + return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); } /** diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java index 53a10f345..e5ee87b88 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ElevationInterpolator { @@ -13,7 +13,7 @@ public class ElevationInterpolator { long seed = world.getSeed(); - Generator[][] gens = new Generator[18 + 2 * smooth][18 + 2 * smooth]; + GenerationSettings[][] gens = new GenerationSettings[18 + 2 * smooth][18 + 2 * smooth]; // Precompute generators. for(int x = -1 - smooth; x <= 16 + smooth; x++) { @@ -28,7 +28,7 @@ public class ElevationInterpolator { double div = 0; for(int xi = -smooth; xi <= smooth; xi++) { for(int zi = -smooth; zi <= smooth; zi++) { - Generator gen = gens[x + 1 + smooth + xi][z + 1 + smooth + zi]; + GenerationSettings gen = gens[x + 1 + smooth + xi][z + 1 + smooth + zi]; noise += gen.getElevationSampler().getNoiseSeeded(seed, xOrigin + x, zOrigin + z) * gen.getElevationWeight(); div += gen.getElevationWeight(); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index 1b2526193..0283c1d96 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -14,7 +14,7 @@ public class BiomeFactory implements ConfigFactory { @Override public TerraBiome build(BiomeTemplate template, TerraPlugin main) { - UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), template.getElevationWeight(), + UserDefinedGenerationSettings generator = new UserDefinedGenerationSettings(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), template.getElevationWeight(), template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index 015fdc728..6ce402fc9 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Set; @@ -13,7 +13,7 @@ import java.util.Set; * Class representing a config-defined biome */ public class UserDefinedBiome implements TerraBiome { - private final UserDefinedGenerator gen; + private final UserDefinedGenerationSettings gen; private final ProbabilityCollection vanilla; private final String id; private final BiomeTemplate config; @@ -22,7 +22,7 @@ public class UserDefinedBiome implements TerraBiome { private final Context context = new Context(); - public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerator gen, BiomeTemplate config) { + public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerationSettings gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; this.id = config.getID(); @@ -52,7 +52,7 @@ public class UserDefinedBiome implements TerraBiome { } @Override - public Generator getGenerator(World w) { + public GenerationSettings getGenerator(World w) { return gen; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java similarity index 76% rename from common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java rename to common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java index 268f18a64..b9ad1dd46 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerator.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java @@ -1,11 +1,9 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.api.world.biome.PaletteSettings; +import com.dfsek.terra.api.world.biome.GenerationSettings; -public class UserDefinedGenerator implements Generator { +public class UserDefinedGenerationSettings implements GenerationSettings { private final NoiseSampler noise; private final NoiseSampler elevation; @@ -17,7 +15,7 @@ public class UserDefinedGenerator implements Generator { private final int blendStep; private final double blendWeight; - public UserDefinedGenerator(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { + public UserDefinedGenerationSettings(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { this.noise = noise; this.elevation = elevation; this.carving = carving; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java similarity index 94% rename from common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java index f8d6b14a3..23b29de31 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/Generator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.noise.NoiseSampler; -public interface Generator { +public interface GenerationSettings { /** * Gets the noise sampler instance to use for base terrain. * diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 92464823b..63f69cea4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -24,7 +24,7 @@ public interface TerraBiome extends PropertyHolder { * * @return BiomeTerrain - The terrain generation instance. */ - Generator getGenerator(World w); + GenerationSettings getGenerator(World w); int getColor(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java index 444dc5b6e..58e8b8b57 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.terra.api.world.biome.Generator; +import com.dfsek.terra.api.world.biome.GenerationSettings; import java.util.Map; @@ -20,11 +20,11 @@ public interface ChunkInterpolator { } - default double computeNoise(Map gens, double x, double y, double z) { + default double computeNoise(Map gens, double x, double y, double z) { double n = 0; double div = 0; - for(Map.Entry entry : gens.entrySet()) { - Generator gen = entry.getKey(); + for(Map.Entry entry : gens.entrySet()) { + GenerationSettings gen = entry.getKey(); int weight = entry.getValue().get(); double noise = computeNoise(gen, x, y, z); @@ -34,5 +34,5 @@ public interface ChunkInterpolator { return n / div; } - double computeNoise(Generator generator, double x, double y, double z); + double computeNoise(GenerationSettings generationSettings, double x, double y, double z); } From 55030450b5c55b0919b8d8a889b19f7142c9cb0c Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:36:30 -0700 Subject: [PATCH 0373/1529] remove world parameter from TerraBiome#getGenerator --- .../generation/generators/NoiseChunkGenerator3D.java | 6 +++--- .../generation/math/interpolation/ChunkInterpolator2D.java | 4 ++-- .../generation/math/interpolation/ChunkInterpolator3D.java | 4 ++-- .../math/interpolation/ElevationInterpolator.java | 2 +- .../java/com/dfsek/terra/addons/biome/UserDefinedBiome.java | 3 +-- .../java/com/dfsek/terra/api/world/biome/TerraBiome.java | 3 +-- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 55b33fc96..fe9ea7d8e 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -54,7 +54,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { int cz = zOrig + (z << 2); TerraBiome b = grid.getBiome(cx, cz, seed); - biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator(world).getBiomeNoise(), cx, 0, cz, world.getSeed())); + biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator().getBiomeNoise(), cx, 0, cz, world.getSeed())); } } } @@ -98,7 +98,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { main.logger().info("null palette: " + biome.getID()); } - GenerationSettings generationSettings = biome.getGenerator(world); + GenerationSettings generationSettings = biome.getGenerator(); int sea = paletteInfo.getSeaLevel(); Palette seaPalette = paletteInfo.getOcean(); @@ -171,7 +171,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { Sampler sampler = world.getConfig().getSamplerCache().get(x, z); PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); - Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo); + Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(), sampler, paletteInfo); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); double noise = sampler.sample(fdX, y, fdZ); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java index ee4c96414..a610f6f15 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java @@ -38,7 +38,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); + GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); Map genMap = new HashMap<>(); int step = generationSettings.getBlendStep(); @@ -46,7 +46,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator { for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), g -> new MutableInteger(0)).increment(); // Increment by 1 } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index 2ee695885..982a76d7f 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -49,7 +49,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(w); + GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); Map genMap = new HashMap<>(); int step = generationSettings.getBlendStep(); @@ -57,7 +57,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(w), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), g -> new MutableInteger(0)).increment(); // Increment by 1 } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java index e5ee87b88..80ae9899d 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java @@ -18,7 +18,7 @@ public class ElevationInterpolator { // Precompute generators. for(int x = -1 - smooth; x <= 16 + smooth; x++) { for(int z = -1 - smooth; z <= 16 + smooth; z++) { - gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z, seed).getGenerator(world); + gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z, seed).getGenerator(); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index 6ce402fc9..a26bf5601 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -52,7 +51,7 @@ public class UserDefinedBiome implements TerraBiome { } @Override - public GenerationSettings getGenerator(World w) { + public GenerationSettings getGenerator() { return gen; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 63f69cea4..7f94ff487 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -3,7 +3,6 @@ package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.World; import java.util.Set; @@ -24,7 +23,7 @@ public interface TerraBiome extends PropertyHolder { * * @return BiomeTerrain - The terrain generation instance. */ - GenerationSettings getGenerator(World w); + GenerationSettings getGenerator(); int getColor(); From 696ee07c33556c7db79e1737dfe36edaa1219e30 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:37:59 -0700 Subject: [PATCH 0374/1529] create StringIdentifiable --- .../main/java/com/dfsek/terra/api/StringIdentifiable.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/StringIdentifiable.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/StringIdentifiable.java b/common/api/src/main/java/com/dfsek/terra/api/StringIdentifiable.java new file mode 100644 index 000000000..ff1209b0f --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/StringIdentifiable.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api; + +public interface StringIdentifiable { + String getID(); +} From 89b03aa3fb5205c2ec93340f578fcec0909b6adf Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:40:48 -0700 Subject: [PATCH 0375/1529] implement StringIdentifiable --- .../command/structure/completer/ScriptCompleter.java | 2 +- .../com/dfsek/terra/addons/terrascript/TerraScriptAddon.java | 2 +- .../terra/addons/terrascript/script/StructureScript.java | 2 +- .../com/dfsek/terra/api/config/AbstractableTemplate.java | 4 ++-- .../src/main/java/com/dfsek/terra/api/config/ConfigPack.java | 5 ++--- .../main/java/com/dfsek/terra/api/config/WorldConfig.java | 5 ++--- .../main/java/com/dfsek/terra/api/structure/Structure.java | 5 ++--- .../terra/api/structure/configured/ConfiguredStructure.java | 5 ++--- 8 files changed, 13 insertions(+), 17 deletions(-) diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java index 3ac37965a..d516312e7 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java @@ -16,6 +16,6 @@ public class ScriptCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { - return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); + return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getID).collect(Collectors.toList()); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 143ff156b..b60ebb2aa 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -37,7 +37,7 @@ public class TerraScriptAddon extends TerraAddon { for(Map.Entry entry : entries) { try { StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); - structureRegistry.register(structureScript.getId(), structureScript); + structureRegistry.register(structureScript.getID(), structureScript); } catch(ParseException e) { throw new LoadException("Failed to load script: ", e); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index e4fdfe575..d7f1ff155 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -172,7 +172,7 @@ public class StructureScript implements Structure { } @Override - public String getId() { + public String getID() { return id; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java index ae0986ab8..0abb43e3b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.terra.api.StringIdentifiable; -public interface AbstractableTemplate extends ConfigTemplate { - String getID(); +public interface AbstractableTemplate extends ConfigTemplate, StringIdentifiable { } 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 8deb84c06..5d48db654 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; @@ -17,7 +18,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { +public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder, StringIdentifiable { BiomeProvider getBiomeProviderBuilder(); CheckedRegistry getOrCreateRegistry(Type clazz); @@ -39,8 +40,6 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde Set addons(); - String getID(); - String getAuthor(); String getVersion(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index cbcf9152b..5333db06b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -7,7 +8,7 @@ import com.dfsek.terra.api.world.generator.SamplerCache; import java.util.Map; -public interface WorldConfig { +public interface WorldConfig extends StringIdentifiable { Registry getRegistry(Class clazz); World getWorld(); @@ -30,8 +31,6 @@ public interface WorldConfig { boolean disableStructures(); - String getID(); - String getAuthor(); String getVersion(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index 488e83dd1..2a33bb11b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.structure; +import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Vector3; @@ -8,7 +9,7 @@ import com.dfsek.terra.api.world.World; import java.util.Random; -public interface Structure { +public interface Structure extends StringIdentifiable { /** * Paste the structure at a location * @@ -31,6 +32,4 @@ public interface Structure { @SuppressWarnings("try") boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation); - - String getId(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java index 1e04d096a..0ace9714b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java @@ -1,16 +1,15 @@ package com.dfsek.terra.api.structure.configured; +import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -public interface ConfiguredStructure { +public interface ConfiguredStructure extends StringIdentifiable { ProbabilityCollection getStructure(); Range getSpawnStart(); StructureSpawn getSpawn(); - - String getID(); } From 7d70b8fcdf14f3f9dc221ac13bc6f1f8ffbca4a9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:42:37 -0700 Subject: [PATCH 0376/1529] remove test method from Structure --- .../dfsek/terra/addons/terrascript/script/StructureScript.java | 1 - .../src/main/java/com/dfsek/terra/api/structure/Structure.java | 3 --- 2 files changed, 4 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index d7f1ff155..82a8fb8c2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -133,7 +133,6 @@ public class StructureScript implements Structure { } } - @Override @SuppressWarnings("try") public boolean test(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index 2a33bb11b..97b92eec8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -24,9 +24,6 @@ public interface Structure extends StringIdentifiable { @SuppressWarnings("try") boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation); - @SuppressWarnings("try") - boolean test(Vector3 location, World world, Random random, Rotation rotation); - @SuppressWarnings("try") boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); From 6d0a32f25101fd4c8a4ddd0048d760080052c889 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:43:01 -0700 Subject: [PATCH 0377/1529] remove redundant suppression in Structure --- .../main/java/com/dfsek/terra/api/structure/Structure.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index 97b92eec8..28f2d32f7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -18,15 +18,11 @@ public interface Structure extends StringIdentifiable { * @param rotation Rotation of structure * @return Whether generation was successful */ - @SuppressWarnings("try") boolean generate(Vector3 location, World world, Random random, Rotation rotation); - @SuppressWarnings("try") boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation); - @SuppressWarnings("try") boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); - @SuppressWarnings("try") boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation); } From 9d687208c9feb305cf5283d27adbdd582a0a57b7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:44:23 -0700 Subject: [PATCH 0378/1529] remove useless Structure#generate implementation --- .../command/structure/StructureLoadCommand.java | 2 +- .../addons/terrascript/script/StructureScript.java | 11 ----------- .../java/com/dfsek/terra/api/structure/Structure.java | 10 ---------- 3 files changed, 1 insertion(+), 22 deletions(-) diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index 7d10eac31..64f7e6d61 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -81,7 +81,7 @@ public class StructureLoadCommand implements CommandTemplate { if(this.chunk) { script.generate(player.position(), player.world(), player.world().getChunkAt(player.position()), random, r); } else { - script.generate(player.position(), player.world(), random, r); + script.generateDirect(player.position(), player.world(), random, r); } long l = System.nanoTime() - t; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 82a8fb8c2..96b4906c3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -112,17 +112,6 @@ public class StructureScript implements Structure { this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); } - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { - StructureBuffer buffer = new StructureBuffer(location); - boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); - buffer.paste(location, world); - return level; - } - } - @Override @SuppressWarnings("try") public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index 28f2d32f7..d57f189a0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -10,16 +10,6 @@ import com.dfsek.terra.api.world.World; import java.util.Random; public interface Structure extends StringIdentifiable { - /** - * Paste the structure at a location - * - * @param location Location to paste structure - * @param world - * @param rotation Rotation of structure - * @return Whether generation was successful - */ - boolean generate(Vector3 location, World world, Random random, Rotation rotation); - boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation); boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); From 169ed64568ffefdd4cf4e51328f3d86bc24c5fe8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 22 Jul 2021 18:44:51 -0700 Subject: [PATCH 0379/1529] Structure#generateDirect -> #generate --- .../structure/command/structure/StructureLoadCommand.java | 2 +- .../terra/addons/generation/feature/FeatureGenerationStage.java | 2 +- .../dfsek/terra/addons/terrascript/script/StructureScript.java | 2 +- .../src/main/java/com/dfsek/terra/api/structure/Structure.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index 64f7e6d61..7d10eac31 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -81,7 +81,7 @@ public class StructureLoadCommand implements CommandTemplate { if(this.chunk) { script.generate(player.position(), player.world(), player.world().getChunkAt(player.position()), random, r); } else { - script.generateDirect(player.position(), player.world(), random, r); + script.generate(player.position(), player.world(), random, r); } long l = System.nanoTime() - t; diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 180bbb63c..1d228df30 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -35,7 +35,7 @@ public class FeatureGenerationStage implements GenerationStage { .getSuitableCoordinates(column) .forEach(y -> feature.getStructure(world, tx, y, tz) - .generateDirect(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), Rotation.NONE) + .generate(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), Rotation.NONE) ); } }); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 96b4906c3..4688b74f4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -152,7 +152,7 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") - public boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation) { + public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { DirectBuffer buffer = new DirectBuffer(location, world); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java index d57f189a0..1d8caacdb 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -14,5 +14,5 @@ public interface Structure extends StringIdentifiable { boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions); - boolean generateDirect(Vector3 location, World world, Random random, Rotation rotation); + boolean generate(Vector3 location, World world, Random random, Rotation rotation); } From 2fdada2121116d96d284db8d5ef46cb06be49b5b Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:33:04 -0700 Subject: [PATCH 0380/1529] create api-features module --- common/addons/api-features/build.gradle.kts | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/addons/api-features/build.gradle.kts diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts new file mode 100644 index 000000000..07542d899 --- /dev/null +++ b/common/addons/api-features/build.gradle.kts @@ -0,0 +1,45 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies + +plugins { + `java-library` + `maven-publish` + idea +} + +configureCompilation() +configureDependencies() + +group = "com.dfsek.terra.common" + +dependencies { + "shadedApi"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") + + "testImplementation"("com.google.guava:guava:30.0-jre") +} + +publishing { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } +} \ No newline at end of file From f297636c61b8908f0d228f49984cdfaa79dffc02 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:34:46 -0700 Subject: [PATCH 0381/1529] feature API README --- common/addons/api-features/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 common/addons/api-features/README.md diff --git a/common/addons/api-features/README.md b/common/addons/api-features/README.md new file mode 100644 index 000000000..e570ff02c --- /dev/null +++ b/common/addons/api-features/README.md @@ -0,0 +1,8 @@ +# api-features +Contains the API for feature generation. + +This API implemented in: + * `config-feature` + * `generation-stage-feature` + * `config-locators` + * `config-distributors` \ No newline at end of file From 579195481beee8ec0bff12c12946d1533f8aa28a Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:40:48 -0700 Subject: [PATCH 0382/1529] compileOnly API in addons --- common/addons/api-features/build.gradle.kts | 3 ++- common/addons/biome-provider-image/build.gradle.kts | 3 ++- common/addons/biome-provider-pipeline/build.gradle.kts | 3 ++- common/addons/biome-provider-single/build.gradle.kts | 3 ++- common/addons/chunk-generator-noise-3d/build.gradle.kts | 3 ++- common/addons/config-biome/build.gradle.kts | 3 ++- common/addons/config-carver/build.gradle.kts | 3 ++- common/addons/config-distributors/build.gradle.kts | 4 +++- common/addons/config-feature/build.gradle.kts | 3 ++- common/addons/config-flora/build.gradle.kts | 3 ++- common/addons/config-locators/build.gradle.kts | 3 ++- common/addons/config-noise-function/build.gradle.kts | 3 ++- common/addons/config-ore/build.gradle.kts | 3 ++- common/addons/config-palette/build.gradle.kts | 3 ++- common/addons/config-structure/build.gradle.kts | 3 ++- common/addons/generation-stage-feature/build.gradle.kts | 3 ++- common/addons/generation-stage-flora/build.gradle.kts | 3 ++- common/addons/generation-stage-structure/build.gradle.kts | 3 ++- common/addons/language-yaml/build.gradle.kts | 3 ++- common/addons/structure-terrascript-loader/build.gradle.kts | 3 ++- 20 files changed, 41 insertions(+), 20 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 07542d899..74b2da97c 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -13,7 +13,9 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) + "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 5293a5cc2..5a88b2b6e 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 07542d899..4478a14e6 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 65b7b4ac3..c7272af79 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -13,7 +13,8 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) "shadedApi"("commons-io:commons-io:2.6") From e16208bd76038a97b464a4531a0337c7b44666df Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:47:37 -0700 Subject: [PATCH 0383/1529] depend on guava in DependencyConfig --- buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index c55c30873..b9d9798a3 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -34,5 +34,8 @@ fun Project.configureDependencies() { "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.7.0") "testImplementation"("org.junit.jupiter:junit-jupiter-engine:5.7.0") "compileOnly"("org.jetbrains:annotations:20.1.0") + + "compileOnly"("com.google.guava:guava:30.0-jre") + "testImplementation"("com.google.guava:guava:30.0-jre") } } \ No newline at end of file From 9d540d471dbd0a71758edcc6a048ad756554a1a3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:52:15 -0700 Subject: [PATCH 0384/1529] remove redundant Guava dependency declarations --- common/addons/api-features/build.gradle.kts | 3 --- common/addons/biome-provider-image/build.gradle.kts | 3 --- common/addons/biome-provider-pipeline/build.gradle.kts | 3 --- common/addons/biome-provider-single/build.gradle.kts | 3 --- common/addons/chunk-generator-noise-3d/build.gradle.kts | 3 --- common/addons/config-biome/build.gradle.kts | 3 --- common/addons/config-carver/build.gradle.kts | 3 --- common/addons/config-distributors/build.gradle.kts | 4 ---- common/addons/config-feature/build.gradle.kts | 3 --- common/addons/config-flora/build.gradle.kts | 3 --- common/addons/config-locators/build.gradle.kts | 3 --- common/addons/config-noise-function/build.gradle.kts | 3 --- common/addons/config-ore/build.gradle.kts | 3 --- common/addons/config-palette/build.gradle.kts | 3 --- common/addons/config-structure/build.gradle.kts | 4 ---- common/addons/generation-stage-feature/build.gradle.kts | 3 --- common/addons/generation-stage-flora/build.gradle.kts | 3 --- common/addons/generation-stage-structure/build.gradle.kts | 3 --- common/addons/language-yaml/build.gradle.kts | 3 --- common/addons/structure-terrascript-loader/build.gradle.kts | 5 ----- common/api/build.gradle.kts | 4 ---- common/implementation/build.gradle.kts | 4 ---- common/loader/addon/build.gradle.kts | 3 --- common/loader/config/build.gradle.kts | 3 --- 24 files changed, 78 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 74b2da97c..6c101765d 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -15,10 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 5a88b2b6e..fada603d1 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -19,10 +19,6 @@ dependencies { "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") - - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 4478a14e6..6c101765d 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -15,9 +15,6 @@ group = "com.dfsek.terra.common" dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index c7272af79..8f3c6aaa7 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -18,11 +18,6 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") - - - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 2b8bc9fa9..77aaf87ac 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -19,9 +19,5 @@ dependencies { "shadedApi"("com.dfsek.tectonic:yaml:2.1.2") "shadedApi"("net.jafama:jafama:2.3.2") - - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 3d6c61866..6608cc5fb 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -23,10 +23,6 @@ dependencies { "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("org.ow2.asm:asm:9.0") - - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 07542d899..d4c25d8c1 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -14,9 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 07542d899..d4c25d8c1 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -14,9 +14,6 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) - "compileOnly"("com.google.guava:guava:30.0-jre") - - "testImplementation"("com.google.guava:guava:30.0-jre") } publishing { From 789d5d1e23475696e93ce6e51e6a3689851d9b58 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:53:59 -0700 Subject: [PATCH 0385/1529] automatically declare addon dependencies --- .../kotlin/com/dfsek/terra/DependencyConfig.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index b9d9798a3..8e1f04bac 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -1,10 +1,7 @@ package com.dfsek.terra import org.gradle.api.Project -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.invoke -import org.gradle.kotlin.dsl.repositories +import org.gradle.kotlin.dsl.* fun Project.configureDependencies() { apply(plugin = "java") @@ -38,4 +35,13 @@ fun Project.configureDependencies() { "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") } + + project(":common:addons").subprojects.forEach { + it.afterEvaluate { + dependencies { + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) + } + } + } } \ No newline at end of file From bcc6e314eb1a6bb59ffa5d958c35fca7c8ec99fe Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:58:02 -0700 Subject: [PATCH 0386/1529] fix afterEvaluate issue --- .../main/kotlin/com/dfsek/terra/DependencyConfig.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index 8e1f04bac..8e35e1aca 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -36,12 +36,10 @@ fun Project.configureDependencies() { "testImplementation"("com.google.guava:guava:30.0-jre") } - project(":common:addons").subprojects.forEach { - it.afterEvaluate { - dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) - } + if (project(":common:addons").subprojects.contains(this)) { + dependencies { + "compileOnly"(project(":common:api")) + "testImplementation"(project(":common:api")) } } } \ No newline at end of file From a15e45875ec8715c4ce347e86021bf63641a7a0a Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 10:59:24 -0700 Subject: [PATCH 0387/1529] automatically depend on API in addons --- buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt | 2 +- common/addons/api-features/build.gradle.kts | 2 -- common/addons/biome-provider-image/build.gradle.kts | 2 -- common/addons/biome-provider-pipeline/build.gradle.kts | 2 -- common/addons/biome-provider-single/build.gradle.kts | 2 -- common/addons/chunk-generator-noise-3d/build.gradle.kts | 2 -- common/addons/config-biome/build.gradle.kts | 2 -- common/addons/config-carver/build.gradle.kts | 2 -- common/addons/config-distributors/build.gradle.kts | 2 -- common/addons/config-feature/build.gradle.kts | 2 -- common/addons/config-flora/build.gradle.kts | 2 -- common/addons/config-locators/build.gradle.kts | 2 -- common/addons/config-noise-function/build.gradle.kts | 2 -- common/addons/config-ore/build.gradle.kts | 2 -- common/addons/config-palette/build.gradle.kts | 2 -- common/addons/config-structure/build.gradle.kts | 5 ----- common/addons/generation-stage-feature/build.gradle.kts | 2 -- common/addons/generation-stage-flora/build.gradle.kts | 2 -- common/addons/generation-stage-structure/build.gradle.kts | 2 -- common/addons/language-yaml/build.gradle.kts | 2 -- common/addons/structure-terrascript-loader/build.gradle.kts | 4 ---- 21 files changed, 1 insertion(+), 46 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index 8e35e1aca..c9e7b27ad 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -36,7 +36,7 @@ fun Project.configureDependencies() { "testImplementation"("com.google.guava:guava:30.0-jre") } - if (project(":common:addons").subprojects.contains(this)) { + if (project(":common:addons").subprojects.contains(this)) { // If this is an addon project, depend on the API. dependencies { "compileOnly"(project(":common:api")) "testImplementation"(project(":common:api")) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index fada603d1..00db04ba3 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -13,11 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) - - - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") } diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 6c101765d..6424f1a2b 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -13,8 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) } publishing { diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 8f3c6aaa7..a8b41352b 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -13,10 +13,6 @@ configureDependencies() group = "com.dfsek.terra.common" dependencies { - "compileOnly"(project(":common:api")) - "testImplementation"(project(":common:api")) - - "shadedApi"("commons-io:commons-io:2.6") } From fe18d89580248a2560f1659ecdb1fbdabbea89a8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:03:39 -0700 Subject: [PATCH 0388/1529] create configureAddon method --- buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index fa6952a8d..7be3d3c40 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -11,6 +11,13 @@ fun Project.configureCommon() { version = rootProject.version } +fun Project.configureAddon() { + configureDependencies() + configureCompilation() + + version = rootProject.version +} + fun Project.getGitHash(): String { val stdout = ByteArrayOutputStream() exec { From 321c50c4179dc86d236ccfe22df4953c32de5724 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:10:03 -0700 Subject: [PATCH 0389/1529] use configureAddon in addons --- common/addons/api-features/build.gradle.kts | 6 ++---- common/addons/biome-provider-image/build.gradle.kts | 6 ++---- common/addons/biome-provider-pipeline/build.gradle.kts | 6 ++---- common/addons/biome-provider-single/build.gradle.kts | 6 ++---- common/addons/chunk-generator-noise-3d/build.gradle.kts | 6 ++---- common/addons/config-biome/build.gradle.kts | 6 ++---- common/addons/config-carver/build.gradle.kts | 6 ++---- common/addons/config-distributors/build.gradle.kts | 6 ++---- common/addons/config-feature/build.gradle.kts | 6 ++---- common/addons/config-flora/build.gradle.kts | 6 ++---- common/addons/config-locators/build.gradle.kts | 6 ++---- common/addons/config-noise-function/build.gradle.kts | 6 ++---- common/addons/config-ore/build.gradle.kts | 6 ++---- common/addons/config-palette/build.gradle.kts | 6 ++---- common/addons/config-structure/build.gradle.kts | 6 ++---- common/addons/generation-stage-feature/build.gradle.kts | 6 ++---- common/addons/generation-stage-flora/build.gradle.kts | 6 ++---- common/addons/generation-stage-structure/build.gradle.kts | 6 ++---- common/addons/language-yaml/build.gradle.kts | 6 ++---- common/addons/structure-terrascript-loader/build.gradle.kts | 6 ++---- 20 files changed, 40 insertions(+), 80 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 00db04ba3..a51a9b41b 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 6424f1a2b..6a1e5e6c2 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index a8b41352b..9bee3f2d7 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -1,5 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureAddon plugins { `java-library` @@ -7,8 +6,7 @@ plugins { idea } -configureCompilation() -configureDependencies() +configureAddon() group = "com.dfsek.terra.common" From bbcd57115659bae078e75853b9ee18473caadd87 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:15:21 -0700 Subject: [PATCH 0390/1529] create PublishingConfig and configurePublishing function --- .../com/dfsek/terra/PublishingConfig.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt new file mode 100644 index 000000000..7742a85bb --- /dev/null +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt @@ -0,0 +1,33 @@ +package com.dfsek.terra + +import org.gradle.api.Project +import org.gradle.api.publish.PublishingExtension +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.kotlin.dsl.* + +fun Project.configurePublishing() { + configure { + publications { + create("mavenJava") { + artifact(tasks["sourcesJar"]) + artifact(tasks["jar"]) + } + } + + repositories { + val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" + //val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" + + maven(mavenUrl) { + val mavenUsername: String? by project + val mavenPassword: String? by project + if (mavenUsername != null && mavenPassword != null) { + credentials { + username = mavenUsername + password = mavenPassword + } + } + } + } + } +} \ No newline at end of file From 507ea8bc8818b50b897ef40bf7ef139734ec0640 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:16:15 -0700 Subject: [PATCH 0391/1529] run configurePublishing from CommonConfig --- buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index 7be3d3c40..dd5cb26f1 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -7,6 +7,7 @@ fun Project.configureCommon() { configureDependencies() configureCompilation() configureDistribution() + configurePublishing() version = rootProject.version } @@ -14,6 +15,7 @@ fun Project.configureCommon() { fun Project.configureAddon() { configureDependencies() configureCompilation() + configurePublishing() version = rootProject.version } From 6cd60d3f4ffd6e04689abc41c1a8655282b40c01 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:20:27 -0700 Subject: [PATCH 0392/1529] remove redundant publishing configs --- common/addons/api-features/build.gradle.kts | 25 ------------------- .../biome-provider-image/build.gradle.kts | 25 ------------------- .../biome-provider-pipeline/build.gradle.kts | 25 ------------------- .../biome-provider-single/build.gradle.kts | 25 ------------------- .../chunk-generator-noise-3d/build.gradle.kts | 25 ------------------- common/addons/config-biome/build.gradle.kts | 25 ------------------- common/addons/config-carver/build.gradle.kts | 25 ------------------- .../config-distributors/build.gradle.kts | 25 ------------------- common/addons/config-feature/build.gradle.kts | 25 ------------------- common/addons/config-flora/build.gradle.kts | 25 ------------------- .../addons/config-locators/build.gradle.kts | 25 ------------------- .../config-noise-function/build.gradle.kts | 25 ------------------- common/addons/config-ore/build.gradle.kts | 25 ------------------- common/addons/config-palette/build.gradle.kts | 25 ------------------- .../addons/config-structure/build.gradle.kts | 25 ------------------- .../generation-stage-feature/build.gradle.kts | 25 ------------------- .../generation-stage-flora/build.gradle.kts | 25 ------------------- .../build.gradle.kts | 25 ------------------- common/addons/language-yaml/build.gradle.kts | 25 ------------------- .../build.gradle.kts | 25 ------------------- common/implementation/build.gradle.kts | 25 ------------------- common/loader/addon/build.gradle.kts | 25 ------------------- common/loader/config/build.gradle.kts | 25 ------------------- platforms/bukkit/build.gradle.kts | 24 ------------------ platforms/fabric/build.gradle.kts | 24 ------------------ 25 files changed, 623 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index a51a9b41b..e75ca9c04 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -13,28 +13,3 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 6a1e5e6c2..b27d84125 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -12,28 +12,3 @@ group = "com.dfsek.terra.common" dependencies { } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 9bee3f2d7..25412b697 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -13,28 +13,3 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"("commons-io:commons-io:2.6") } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 6608cc5fb..5e2f5a6dc 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -24,28 +24,3 @@ dependencies { "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("org.ow2.asm:asm:9.0") } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index d4c25d8c1..adbd5401d 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -15,28 +15,3 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index d4c25d8c1..adbd5401d 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -15,28 +15,3 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index cda955ddc..32266e58e 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -183,27 +183,3 @@ tasks.named("shadowJar") { relocate("io.papermc.lib", "com.dfsek.terra.lib.paperlib") relocate("com.google.common", "com.dfsek.terra.lib.google.common") } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 9336df9c0..0dda34cf4 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -73,27 +73,3 @@ tasks.register("publishModrinthFabric") { addGameVersion("1.16.5") addLoader("fabric") } - -publishing { - publications { - create("mavenJava") { - artifact(tasks["sourcesJar"]) - artifact(tasks["jar"]) - } - } - - repositories { - val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" - - maven(mavenUrl) { - val mavenUsername: String? by project - val mavenPassword: String? by project - if (mavenUsername != null && mavenPassword != null) { - credentials { - username = mavenUsername - password = mavenPassword - } - } - } - } -} \ No newline at end of file From fb6f591f0b46a50848bbe628bb418d765d2f2230 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:22:29 -0700 Subject: [PATCH 0393/1529] apply java-library plugin in CompilationConfig --- buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt | 1 + buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index c48a7de3b..7226ee663 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -11,6 +11,7 @@ import org.gradle.language.jvm.tasks.ProcessResources fun Project.configureCompilation() { apply(plugin = "maven-publish") + apply(plugin = "java-library") apply(plugin = "idea") configure { diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index c0085d9dc..1fc127c39 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -20,7 +20,6 @@ import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream fun Project.configureDistribution() { - apply(plugin = "java-library") apply(plugin = "com.github.johnrengelman.shadow") val downloadDefaultPacks = tasks.create("downloadDefaultPacks") { From 4c7179cfa218ff1a05aaa53f38234699c031b561 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:22:58 -0700 Subject: [PATCH 0394/1529] apply java plugin in CompilationConfig --- buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index 7226ee663..90873b003 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -11,6 +11,7 @@ import org.gradle.language.jvm.tasks.ProcessResources fun Project.configureCompilation() { apply(plugin = "maven-publish") + apply(plugin = "java") apply(plugin = "java-library") apply(plugin = "idea") From cdd7abc59606a7972e6c7c863413bfa19d0c6262 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:27:35 -0700 Subject: [PATCH 0395/1529] remove redundant plugin dependencies --- common/addons/api-features/build.gradle.kts | 6 ------ common/addons/biome-provider-image/build.gradle.kts | 6 ------ common/addons/biome-provider-pipeline/build.gradle.kts | 6 ------ common/addons/biome-provider-single/build.gradle.kts | 6 ------ common/addons/chunk-generator-noise-3d/build.gradle.kts | 6 ------ common/addons/config-biome/build.gradle.kts | 6 ------ common/addons/config-carver/build.gradle.kts | 6 ------ common/addons/config-distributors/build.gradle.kts | 6 ------ common/addons/config-feature/build.gradle.kts | 6 ------ common/addons/config-flora/build.gradle.kts | 6 ------ common/addons/config-locators/build.gradle.kts | 6 ------ common/addons/config-noise-function/build.gradle.kts | 6 ------ common/addons/config-ore/build.gradle.kts | 6 ------ common/addons/config-palette/build.gradle.kts | 6 ------ common/addons/config-structure/build.gradle.kts | 6 ------ common/addons/generation-stage-feature/build.gradle.kts | 6 ------ common/addons/generation-stage-flora/build.gradle.kts | 6 ------ common/addons/generation-stage-structure/build.gradle.kts | 6 ------ common/addons/language-yaml/build.gradle.kts | 6 ------ common/addons/structure-terrascript-loader/build.gradle.kts | 6 ------ common/api/build.gradle.kts | 6 ------ common/implementation/build.gradle.kts | 6 ------ common/loader/addon/build.gradle.kts | 6 ------ common/loader/config/build.gradle.kts | 6 ------ platforms/bukkit/build.gradle.kts | 4 ---- platforms/fabric/build.gradle.kts | 2 -- platforms/forge/build.gradle.kts.old | 1 - platforms/region/build.gradle.kts.old | 4 ---- platforms/sponge/build.gradle.kts.old | 1 - 29 files changed, 156 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index e75ca9c04..14d4cf6bb 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index b27d84125..6d99052a7 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 25412b697..90659db64 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -1,11 +1,5 @@ import com.dfsek.terra.configureAddon -plugins { - `java-library` - `maven-publish` - idea -} - configureAddon() group = "com.dfsek.terra.common" diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 77aaf87ac..2039a4b75 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -1,12 +1,6 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies -plugins { - `java-library` - `maven-publish` - idea -} - configureCompilation() configureDependencies() diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 5e2f5a6dc..9c4ee321b 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -1,12 +1,6 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies -plugins { - `java-library` - `maven-publish` - idea -} - configureCompilation() configureDependencies() diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index adbd5401d..c9603cb73 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -1,12 +1,6 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies -plugins { - `java-library` - `maven-publish` - idea -} - configureCompilation() configureDependencies() diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index adbd5401d..c9603cb73 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -1,12 +1,6 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies -plugins { - `java-library` - `maven-publish` - idea -} - configureCompilation() configureDependencies() diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 32266e58e..f5770a465 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -6,10 +6,6 @@ import java.nio.channels.Channels import java.nio.file.Files import java.nio.file.StandardCopyOption -plugins { - `java-library` - `maven-publish` -} configureCommon() group = "com.dfsek.terra.bukkit" diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 0dda34cf4..d85b35589 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -6,8 +6,6 @@ import net.fabricmc.loom.LoomGradleExtension import net.fabricmc.loom.task.RemapJarTask plugins { - `java-library` - `maven-publish` id("fabric-loom").version("0.8-SNAPSHOT") id("com.modrinth.minotaur").version("1.1.0") } diff --git a/platforms/forge/build.gradle.kts.old b/platforms/forge/build.gradle.kts.old index 682981977..b5200df71 100644 --- a/platforms/forge/build.gradle.kts.old +++ b/platforms/forge/build.gradle.kts.old @@ -24,7 +24,6 @@ configure { } plugins { - java id("com.modrinth.minotaur").version("1.1.0") } diff --git a/platforms/region/build.gradle.kts.old b/platforms/region/build.gradle.kts.old index 6c3a4516e..7f64d6727 100644 --- a/platforms/region/build.gradle.kts.old +++ b/platforms/region/build.gradle.kts.old @@ -1,10 +1,6 @@ import com.dfsek.terra.configureCommon import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -plugins { - `java-library` -} - configureCommon() group = "com.dfsek.terra" diff --git a/platforms/sponge/build.gradle.kts.old b/platforms/sponge/build.gradle.kts.old index b38e710b0..cda70a504 100644 --- a/platforms/sponge/build.gradle.kts.old +++ b/platforms/sponge/build.gradle.kts.old @@ -1,7 +1,6 @@ import com.dfsek.terra.configureCommon plugins { - java id("org.spongepowered.plugin").version("0.9.0") } From aecb7201b89c8b0ae15aeacec9fb67139ec4cefc Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:31:35 -0700 Subject: [PATCH 0396/1529] remove redundant group declarations --- common/addons/api-features/build.gradle.kts | 2 +- common/addons/biome-provider-image/build.gradle.kts | 2 +- common/addons/biome-provider-pipeline/build.gradle.kts | 2 +- common/addons/biome-provider-single/build.gradle.kts | 2 +- common/addons/chunk-generator-noise-3d/build.gradle.kts | 2 +- common/addons/config-biome/build.gradle.kts | 2 +- common/addons/config-carver/build.gradle.kts | 2 +- common/addons/config-distributors/build.gradle.kts | 2 +- common/addons/config-feature/build.gradle.kts | 2 +- common/addons/config-flora/build.gradle.kts | 2 +- common/addons/config-locators/build.gradle.kts | 2 +- common/addons/config-noise-function/build.gradle.kts | 2 +- common/addons/config-ore/build.gradle.kts | 2 +- common/addons/config-palette/build.gradle.kts | 2 +- common/addons/config-structure/build.gradle.kts | 2 +- common/addons/generation-stage-feature/build.gradle.kts | 2 +- common/addons/generation-stage-flora/build.gradle.kts | 2 +- common/addons/generation-stage-structure/build.gradle.kts | 2 +- common/addons/language-yaml/build.gradle.kts | 2 +- common/addons/structure-terrascript-loader/build.gradle.kts | 2 +- common/api/build.gradle.kts | 2 +- common/implementation/build.gradle.kts | 2 +- common/loader/addon/build.gradle.kts | 2 +- common/loader/config/build.gradle.kts | 2 +- platforms/fabric/build.gradle.kts | 1 - platforms/forge/build.gradle.kts.old | 1 - platforms/region/build.gradle.kts.old | 1 - platforms/sponge/build.gradle.kts.old | 1 - 28 files changed, 24 insertions(+), 28 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index 14d4cf6bb..a5d5f8a3f 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 6d99052a7..6d21ecf63 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { } diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 90659db64..79c513ce2 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -2,7 +2,7 @@ import com.dfsek.terra.configureAddon configureAddon() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"("commons-io:commons-io:2.6") diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 2039a4b75..81f0711d0 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -4,7 +4,7 @@ import com.dfsek.terra.configureDependencies configureCompilation() configureDependencies() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"("com.dfsek:Paralithic:0.4.0") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 9c4ee321b..d7864736f 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -4,7 +4,7 @@ import com.dfsek.terra.configureDependencies configureCompilation() configureDependencies() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"(project(":common:api")) diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index c9603cb73..85e86627b 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -4,7 +4,7 @@ import com.dfsek.terra.configureDependencies configureCompilation() configureDependencies() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"(project(":common:api")) diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index c9603cb73..85e86627b 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -4,7 +4,7 @@ import com.dfsek.terra.configureDependencies configureCompilation() configureDependencies() -group = "com.dfsek.terra.common" + dependencies { "shadedApi"(project(":common:api")) diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index d85b35589..f45fb3467 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -19,7 +19,6 @@ tasks.named("shadowJar") { relocate("org.yaml", "com.dfsek.terra.lib.yaml") } -group = "com.dfsek.terra.fabric" dependencies { "shadedApi"(project(":common:implementation")) diff --git a/platforms/forge/build.gradle.kts.old b/platforms/forge/build.gradle.kts.old index b5200df71..b83a95c37 100644 --- a/platforms/forge/build.gradle.kts.old +++ b/platforms/forge/build.gradle.kts.old @@ -29,7 +29,6 @@ plugins { configureCommon() -group = "com.dfsek.terra.forge" repositories { maven { url = uri("https://files.minecraftforge.net/maven") } diff --git a/platforms/region/build.gradle.kts.old b/platforms/region/build.gradle.kts.old index 7f64d6727..7dfe20204 100644 --- a/platforms/region/build.gradle.kts.old +++ b/platforms/region/build.gradle.kts.old @@ -3,7 +3,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar configureCommon() -group = "com.dfsek.terra" repositories { mavenCentral() diff --git a/platforms/sponge/build.gradle.kts.old b/platforms/sponge/build.gradle.kts.old index cda70a504..412f28650 100644 --- a/platforms/sponge/build.gradle.kts.old +++ b/platforms/sponge/build.gradle.kts.old @@ -6,7 +6,6 @@ plugins { configureCommon() -group = "com.dfsek.terra" repositories { mavenCentral() From 672349f5b754c5c45158a23aced620eb92713539 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:36:06 -0700 Subject: [PATCH 0397/1529] run configurePublishing in API --- common/api/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 81f0711d0..9bf15118d 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -1,8 +1,10 @@ import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configurePublishing configureCompilation() configureDependencies() +configurePublishing() From 67d3af71bf4e918696075af217e6be58a95c4547 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:42:29 -0700 Subject: [PATCH 0398/1529] move Tectonic YAML dependency to implementation --- common/addons/language-yaml/build.gradle.kts | 1 + common/api/build.gradle.kts | 1 - common/implementation/build.gradle.kts | 2 ++ 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 6d21ecf63..674588a7f 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -5,4 +5,5 @@ configureAddon() dependencies { + "shadedImplementation"("com.dfsek.tectonic:yaml:2.1.2") } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 9bf15118d..76df5bf41 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -12,7 +12,6 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.4.0") "shadedApi"("com.dfsek.tectonic:common:2.1.2") - "shadedApi"("com.dfsek.tectonic:yaml:2.1.2") "shadedApi"("net.jafama:jafama:2.3.2") } diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index d7864736f..8dc740f02 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -15,6 +15,8 @@ dependencies { "shadedApi"("commons-io:commons-io:2.6") "shadedImplementation"("org.apache.commons:commons-text:1.9") + "shadedImplementation"("com.dfsek.tectonic:yaml:2.1.2") + "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("org.ow2.asm:asm:9.0") } From fb26b02ad12fd312996a5a1ab86c2adf7125c8b2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:47:54 -0700 Subject: [PATCH 0399/1529] apply common configurations automatically --- build.gradle.kts | 9 ++++++++- .../src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 7 ------- common/api/build.gradle.kts | 10 ---------- common/implementation/build.gradle.kts | 8 -------- common/loader/addon/build.gradle.kts | 8 -------- common/loader/config/build.gradle.kts | 8 -------- 6 files changed, 8 insertions(+), 42 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6b9bb6e74..074769cb5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,6 @@ +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configurePublishing import com.dfsek.terra.getGitHash val versionObj = Version("6", "0", "0", true) @@ -6,10 +9,15 @@ allprojects { version = versionObj group = "com.dfsek.terra" + configureDependencies() + configureCompilation() + configurePublishing() + tasks.withType().configureEach { options.isFork = true options.isIncremental = true } + tasks.withType().configureEach { useJUnitPlatform() @@ -21,7 +29,6 @@ allprojects { reports.html.isEnabled = false reports.junitXml.isEnabled = false } - } /** * Version class that does version stuff. diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index dd5cb26f1..d937a27a2 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -4,20 +4,13 @@ import org.gradle.api.Project import java.io.ByteArrayOutputStream fun Project.configureCommon() { - configureDependencies() - configureCompilation() configureDistribution() - configurePublishing() version = rootProject.version } fun Project.configureAddon() { - configureDependencies() - configureCompilation() - configurePublishing() - version = rootProject.version } fun Project.getGitHash(): String { diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 76df5bf41..0058624fb 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -1,13 +1,3 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies -import com.dfsek.terra.configurePublishing - -configureCompilation() -configureDependencies() -configurePublishing() - - - dependencies { "shadedApi"("com.dfsek:Paralithic:0.4.0") diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index 8dc740f02..133b7d1c6 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -1,11 +1,3 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies - -configureCompilation() -configureDependencies() - - - dependencies { "shadedApi"(project(":common:api")) "shadedApi"(project(":common:loader:config")) diff --git a/common/loader/addon/build.gradle.kts b/common/loader/addon/build.gradle.kts index 85e86627b..e4239d784 100644 --- a/common/loader/addon/build.gradle.kts +++ b/common/loader/addon/build.gradle.kts @@ -1,11 +1,3 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies - -configureCompilation() -configureDependencies() - - - dependencies { "shadedApi"(project(":common:api")) } diff --git a/common/loader/config/build.gradle.kts b/common/loader/config/build.gradle.kts index 85e86627b..e4239d784 100644 --- a/common/loader/config/build.gradle.kts +++ b/common/loader/config/build.gradle.kts @@ -1,11 +1,3 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies - -configureCompilation() -configureDependencies() - - - dependencies { "shadedApi"(project(":common:api")) } From 3b5e6b80d542f487db382d4a8b283f7366085d98 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:51:07 -0700 Subject: [PATCH 0400/1529] remove calls to configureAddon --- common/addons/api-features/build.gradle.kts | 6 ------ common/addons/biome-provider-image/build.gradle.kts | 6 ------ common/addons/biome-provider-pipeline/build.gradle.kts | 6 ------ common/addons/biome-provider-single/build.gradle.kts | 6 ------ common/addons/chunk-generator-noise-3d/build.gradle.kts | 6 ------ common/addons/config-biome/build.gradle.kts | 6 ------ common/addons/config-carver/build.gradle.kts | 6 ------ common/addons/config-distributors/build.gradle.kts | 6 ------ common/addons/config-feature/build.gradle.kts | 6 ------ common/addons/config-flora/build.gradle.kts | 6 ------ common/addons/config-locators/build.gradle.kts | 6 ------ common/addons/config-noise-function/build.gradle.kts | 6 ------ common/addons/config-ore/build.gradle.kts | 6 ------ common/addons/config-palette/build.gradle.kts | 6 ------ common/addons/config-structure/build.gradle.kts | 6 ------ common/addons/generation-stage-feature/build.gradle.kts | 6 ------ common/addons/generation-stage-flora/build.gradle.kts | 6 ------ common/addons/generation-stage-structure/build.gradle.kts | 6 ------ common/addons/language-yaml/build.gradle.kts | 6 ------ common/addons/structure-terrascript-loader/build.gradle.kts | 6 ------ 20 files changed, 120 deletions(-) diff --git a/common/addons/api-features/build.gradle.kts b/common/addons/api-features/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/api-features/build.gradle.kts +++ b/common/addons/api-features/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/biome-provider-single/build.gradle.kts +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-biome/build.gradle.kts +++ b/common/addons/config-biome/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-carver/build.gradle.kts +++ b/common/addons/config-carver/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-feature/build.gradle.kts +++ b/common/addons/config-feature/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/config-palette/build.gradle.kts +++ b/common/addons/config-palette/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index a5d5f8a3f..a5227add5 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -1,9 +1,3 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") } diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ b/common/addons/generation-stage-feature/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/generation-stage-flora/build.gradle.kts b/common/addons/generation-stage-flora/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/generation-stage-flora/build.gradle.kts +++ b/common/addons/generation-stage-flora/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts index 6d21ecf63..7d82dc72f 100644 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ b/common/addons/generation-stage-structure/build.gradle.kts @@ -1,8 +1,2 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { } diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts index 674588a7f..11e8e646a 100644 --- a/common/addons/language-yaml/build.gradle.kts +++ b/common/addons/language-yaml/build.gradle.kts @@ -1,9 +1,3 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { "shadedImplementation"("com.dfsek.tectonic:yaml:2.1.2") } diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 79c513ce2..a323c705d 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -1,9 +1,3 @@ -import com.dfsek.terra.configureAddon - -configureAddon() - - - dependencies { "shadedApi"("commons-io:commons-io:2.6") } From 1ae9ae71def3a55a06e2c48b6215c50975972ded Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 11:51:41 -0700 Subject: [PATCH 0401/1529] remove configureAddon --- buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index d937a27a2..b29972ae7 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -9,10 +9,6 @@ fun Project.configureCommon() { version = rootProject.version } -fun Project.configureAddon() { - -} - fun Project.getGitHash(): String { val stdout = ByteArrayOutputStream() exec { From 47c284656b4e787c1a3a3b1d4013441a9fea052d Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 14:50:47 -0700 Subject: [PATCH 0402/1529] automatically configureDistribution of platform impls --- build.gradle.kts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 074769cb5..3d91f8223 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,4 @@ -import com.dfsek.terra.configureCompilation -import com.dfsek.terra.configureDependencies -import com.dfsek.terra.configurePublishing -import com.dfsek.terra.getGitHash +import com.dfsek.terra.* val versionObj = Version("6", "0", "0", true) @@ -30,6 +27,13 @@ allprojects { reports.junitXml.isEnabled = false } } + +project(":platforms").subprojects.forEach { + afterEvaluate { + configureDistribution() + } +} + /** * Version class that does version stuff. */ From a3a4cf825190d1b7d294bcdd4477319e5ff16845 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 14:51:19 -0700 Subject: [PATCH 0403/1529] remove configureCommon call from platform impls --- platforms/bukkit/build.gradle.kts | 3 --- platforms/fabric/build.gradle.kts | 1 - 2 files changed, 4 deletions(-) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index f5770a465..2655d0a77 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -6,9 +6,6 @@ import java.nio.channels.Channels import java.nio.file.Files import java.nio.file.StandardCopyOption -configureCommon() - -group = "com.dfsek.terra.bukkit" val mcVersion = "1.17" val testDir = "target/server" diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index f45fb3467..7c0f5d38e 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -10,7 +10,6 @@ plugins { id("com.modrinth.minotaur").version("1.1.0") } -configureCommon() addonDir(project.rootProject.file("./run/config/Terra/addons"), tasks.named("runClient").get()) addonDir(project.rootProject.file("./run/config/Terra/addons"), tasks.named("runServer").get()) From 363b70c1a61a309bce6f25c0e39c6f4bb931514e Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 14:54:51 -0700 Subject: [PATCH 0404/1529] correct afterEvaluate nesting --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3d91f8223..9e1a4bedc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,9 +28,9 @@ allprojects { } } -project(":platforms").subprojects.forEach { - afterEvaluate { - configureDistribution() +afterEvaluate { + project(":platforms").subprojects.forEach { // Platform projects are where distribution happens + it.configureDistribution() } } From 7b70478a7fb2cea0d79a9aa99df99585aba0a925 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 15:01:48 -0700 Subject: [PATCH 0405/1529] remove configureCommon function --- buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 6 ------ platforms/bukkit/build.gradle.kts | 1 - platforms/fabric/build.gradle.kts | 1 - 3 files changed, 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index b29972ae7..d252ecae7 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -3,12 +3,6 @@ package com.dfsek.terra import org.gradle.api.Project import java.io.ByteArrayOutputStream -fun Project.configureCommon() { - configureDistribution() - - version = rootProject.version -} - fun Project.getGitHash(): String { val stdout = ByteArrayOutputStream() exec { diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 2655d0a77..2e4d704c3 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -1,4 +1,3 @@ -import com.dfsek.terra.configureCommon import com.dfsek.terra.gitClone import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import java.net.URL diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 7c0f5d38e..e2ad473da 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -1,5 +1,4 @@ import com.dfsek.terra.addonDir -import com.dfsek.terra.configureCommon import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.modrinth.minotaur.TaskModrinthUpload import net.fabricmc.loom.LoomGradleExtension From d83e6f09a730c2379334b6d8e81aadd9c73c0558 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 15:04:15 -0700 Subject: [PATCH 0406/1529] bump gradle version from 7.0.2 -> 7.1.1 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cc9cd46e9..ce7429011 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists org.gradle.jvmargs=-Xmx4096m \ No newline at end of file From 8751346693c513f8baa8240a1870335c8dc6dfc5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 16:06:34 -0700 Subject: [PATCH 0407/1529] fix gradle property enabled deprecation warning --- build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9e1a4bedc..414f3eb38 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,8 +23,8 @@ allprojects { failFast = true maxParallelForks = (Runtime.getRuntime().availableProcessors() - 1).takeIf { it > 0 } ?: 1 - reports.html.isEnabled = false - reports.junitXml.isEnabled = false + reports.html.required.set(false) + reports.junitXml.required.set(false) } } From 27903730715776a5b2adf912948b9eea7626b7d8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 18:02:10 -0700 Subject: [PATCH 0408/1529] JavaPluginConvention -> JavaPluginExtension --- buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index 90873b003..4872a5543 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -2,7 +2,7 @@ package com.dfsek.terra import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginConvention +import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.javadoc.Javadoc @@ -15,7 +15,7 @@ fun Project.configureCompilation() { apply(plugin = "java-library") apply(plugin = "idea") - configure { + configure { sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16 } From 7f3a7645bd8c95f213840f499298d3ec9d652fb8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 23 Jul 2021 18:08:42 -0700 Subject: [PATCH 0409/1529] BasePluginConvention -> BasePluginExtension --- .../main/kotlin/com/dfsek/terra/DistributionConfig.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index 1fc127c39..2bd60d666 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -3,11 +3,11 @@ package com.dfsek.terra import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.DefaultTask import org.gradle.api.Project -import org.gradle.api.plugins.BasePluginConvention +import org.gradle.api.plugins.BasePluginExtension import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.getPlugin import org.gradle.kotlin.dsl.named import org.yaml.snakeyaml.DumperOptions import org.yaml.snakeyaml.Yaml @@ -126,7 +126,10 @@ fun Project.configureDistribution() { relocate("org.json", "com.dfsek.terra.lib.json") relocate("org.yaml", "com.dfsek.terra.lib.yaml") } - convention.getPlugin().archivesBaseName = project.name + + configure { + archivesName.set(project.name) + } tasks.named("build") { dependsOn(tasks["shadowJar"]) From e8ee7bc64f0fb5bc75b837f477645a2ebfa7595d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:42:03 -0700 Subject: [PATCH 0410/1529] create AbstractTerraPlugin --- .../platform/PlatformInitializationEvent.java | 9 ++ .../com/dfsek/terra/AbstractTerraPlugin.java | 151 ++++++++++++++++++ .../java/com/dfsek/terra/InternalAddon.java | 33 ++++ .../terra/registry/master/AddonRegistry.java | 6 +- .../dfsek/terra/fabric/TerraFabricPlugin.java | 13 +- .../fabric/event/GameInitializationEvent.java | 9 -- .../client/MinecraftClientMixin.java | 4 +- .../lifecycle/server/ServerMainMixin.java | 4 +- 8 files changed, 203 insertions(+), 26 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/GameInitializationEvent.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java new file mode 100644 index 000000000..8f472e439 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.api.event.events.platform; + +import com.dfsek.terra.api.event.events.Event; + +/** + * Called when the platform is initialized. + */ +public class PlatformInitializationEvent implements Event { +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java new file mode 100644 index 000000000..241214cf9 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -0,0 +1,151 @@ +package com.dfsek.terra; + +import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.command.CommandManager; +import com.dfsek.terra.api.command.exception.MalformedCommandException; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.PluginConfig; +import com.dfsek.terra.api.event.EventManager; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.profiler.Profiler; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.generic.Construct; +import com.dfsek.terra.api.util.generic.Lazy; +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; +import com.dfsek.terra.event.EventManagerImpl; +import com.dfsek.terra.profiler.ProfilerImpl; +import com.dfsek.terra.registry.CheckedRegistryImpl; +import com.dfsek.terra.registry.master.AddonRegistry; +import com.dfsek.terra.registry.master.ConfigRegistry; +import com.dfsek.terra.util.logging.DebugLogger; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Optional; + +/** + * Skeleton implementation of {@link TerraPlugin} + */ +public abstract class AbstractTerraPlugin implements TerraPlugin { + private final Lazy debugLogger = Lazy.of(() -> new DebugLogger(logger())); + private final EventManager eventManager = new EventManagerImpl(this); + + private final ConfigRegistry configRegistry = new ConfigRegistry(); + + private final CheckedRegistry checkedConfigRegistry = new CheckedRegistryImpl<>(configRegistry); + + private final Profiler profiler = new ProfilerImpl(); + + private final GenericLoaders loaders = new GenericLoaders(this); + + private final PluginConfigImpl config = new PluginConfigImpl(); + + private final CommandManager manager = new TerraCommandManager(this); + + private final AddonRegistry addonRegistry = Construct.construct(() -> { + Optional addon = getPlatformAddon(); + AddonRegistry registry = addon.map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); + InternalAddon internalAddon = new InternalAddon(this); + registry.register(internalAddon); + return registry; + }); + + + public AbstractTerraPlugin() { + logger().info("Initializing Terra..."); + + config.load(this); // load config.yml + + LangUtil.load(config.getLanguage(), this); // load language + + debugLogger.value().setDebug(config.isDebugLogging()); // enable debug logger if applicable + + if(config.isDebugProfiler()) { // if debug.profiler is enabled, start profiling + profiler.start(); + } + + if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons + throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); + } + logger().info("Loaded addons."); + + try { + CommandUtil.registerAll(manager); + } catch(MalformedCommandException e) { + e.printStackTrace(); // TODO do something here even though this should literally never happen + } + + eventManager + .getHandler(FunctionalEventHandler.class); + /**/ + + + logger().info("Finished initialization."); + } + + protected Optional getPlatformAddon() { + return Optional.empty(); + } + + @Override + public PluginConfig getTerraConfig() { + return config; + } + + @Override + public CheckedRegistry getConfigRegistry() { + return checkedConfigRegistry; + } + + @Override + public Registry getAddons() { + return addonRegistry; + } + + public ConfigRegistry getRawConfigRegistry() { + return configRegistry; + } + + @Override + public void saveDefaultConfig() { + try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { + File configFile = new File(getDataFolder(), "config.yml"); + if(!configFile.exists()) { + FileUtils.copyInputStreamToFile(stream, configFile); + } + } catch(IOException e) { + e.printStackTrace(); + } + } + + @Override + public Logger getDebugLogger() { + return debugLogger.value(); + } + + @Override + public EventManager getEventManager() { + return eventManager; + } + + @Override + public Profiler getProfiler() { + return profiler; + } + + @Override + public void register(TypeRegistry registry) { + loaders.register(registry); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java new file mode 100644 index 000000000..2e70023a0 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -0,0 +1,33 @@ +package com.dfsek.terra; + +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.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; + +@Addon("terra") +@Author("Terra") +@Version("1.0.0") +public class InternalAddon extends TerraAddon { + private final AbstractTerraPlugin main; + + public InternalAddon(AbstractTerraPlugin main) { + this.main = main; + } + + @Override + public void initialize() { + main.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, PlatformInitializationEvent.class) + .then(event -> { + main.logger().info("Loading config packs..."); + main.getRawConfigRegistry().loadAll(main); + main.logger().info("Loaded packs."); + }) + .global(); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 1965c5792..93553c396 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -27,7 +27,7 @@ public class AddonRegistry extends OpenRegistryImpl { public AddonRegistry(TerraAddon addon, TerraPlugin main) { this.main = main; - register(addon.getName(), addon); + register(addon); } @Override @@ -38,6 +38,10 @@ public class AddonRegistry extends OpenRegistryImpl { return super.register(identifier, addon); } + public boolean register(TerraAddon addon) { + return register(addon.getName(), addon); + } + @Override public void clear() { throw new UnsupportedOperationException(); 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 34c660f89..e44f1a81d 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 @@ -36,7 +36,7 @@ import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; -import com.dfsek.terra.fabric.event.GameInitializationEvent; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -315,17 +315,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { logger.info("Biomes registered."); }) .global(); - - eventManager - .getHandler(FunctionalEventHandler.class) - .register(this, GameInitializationEvent.class) - .then(event -> { - TerraFabricPlugin main = TerraFabricPlugin.getInstance(); - main.logger().info("Loading config packs..."); - configRegistry.loadAll(TerraFabricPlugin.this); - logger.info("Loaded packs."); - }) - .global(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/GameInitializationEvent.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/GameInitializationEvent.java deleted file mode 100644 index 1a2ca827f..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/GameInitializationEvent.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dfsek.terra.fabric.event; - -import com.dfsek.terra.api.event.events.Event; - -/** - * Called when the game is initialized and packs should be registered. - */ -public class GameInitializationEvent implements Event { -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index bfd0852ee..81519a9ef 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.lifecycle.client; import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.fabric.event.GameInitializationEvent; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.fabric.generation.TerraGeneratorType; import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor; import net.minecraft.client.MinecraftClient; @@ -19,7 +19,7 @@ public class MinecraftClientMixin { target = "Lnet/minecraft/client/util/WindowProvider;createWindow(Lnet/minecraft/client/WindowSettings;Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/client/util/Window;", // sorta arbitrary position, after mod init, before window opens shift = At.Shift.BEFORE)) public void injectConstructor(RunArgs args, CallbackInfo callbackInfo) { - TerraFabricPlugin.getInstance().getEventManager().callEvent(new GameInitializationEvent()); + TerraFabricPlugin.getInstance().getEventManager().callEvent(new PlatformInitializationEvent()); TerraFabricPlugin.getInstance().getConfigRegistry().forEach(pack -> { final GeneratorType generatorType = new TerraGeneratorType(pack); //noinspection ConstantConditions diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index b32f2e591..1af7a455d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.fabric.event.GameInitializationEvent; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import net.minecraft.server.Main; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -12,6 +12,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class ServerMainMixin { @Inject(method = "main([Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/registry/DynamicRegistryManager;create()Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;")) private static void injectConstructor(String[] args, CallbackInfo ci) { - TerraFabricPlugin.getInstance().getEventManager().callEvent(new GameInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff + TerraFabricPlugin.getInstance().getEventManager().callEvent(new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff } } From 5bd70da0bc8292dbd4e2923f54c43e6b4343f4da Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:43:50 -0700 Subject: [PATCH 0411/1529] add getLanguage to AbstractTerraPlugin --- .../src/main/java/com/dfsek/terra/AbstractTerraPlugin.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 241214cf9..ba53171f1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -11,6 +11,7 @@ import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; @@ -148,4 +149,9 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { public void register(TypeRegistry registry) { loaders.register(registry); } + + @Override + public Language getLanguage() { + return LangUtil.getLanguage(); + } } From 34868680c1d2aa988d5b84c57212f9b6ed82c742 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:47:40 -0700 Subject: [PATCH 0412/1529] Fabric TerraPluginImpl --- .../dfsek/terra/fabric/TerraPluginImpl.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java new file mode 100644 index 000000000..9038f2fd5 --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -0,0 +1,73 @@ +package com.dfsek.terra.fabric; + +import com.dfsek.terra.AbstractTerraPlugin; +import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.lang.Language; +import com.dfsek.terra.api.util.generic.Lazy; +import com.dfsek.terra.config.lang.LangUtil; +import com.dfsek.terra.fabric.handle.FabricItemHandle; +import com.dfsek.terra.fabric.handle.FabricWorldHandle; +import net.fabricmc.loader.api.FabricLoader; +import org.apache.logging.log4j.LogManager; + +import java.io.File; + +public class TerraPluginImpl extends AbstractTerraPlugin { + private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); + + private final Logger logger = new Logger() { + @Override + public void info(String message) { + log4jLogger.info(message); + } + + @Override + public void warning(String message) { + log4jLogger.warn(message); + } + + @Override + public void severe(String message) { + log4jLogger.error(message); + } + }; + + private final ItemHandle itemHandle = new FabricItemHandle(); + private final WorldHandle worldHandle = new FabricWorldHandle(); + private final Lazy dataFolder = Lazy.of(() -> new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra")); + + @Override + public WorldHandle getWorldHandle() { + return worldHandle; + } + + @Override + public Logger logger() { + return logger; + } + + @Override + public File getDataFolder() { + return dataFolder.value(); + } + + @Override + public boolean reload() { + getTerraConfig().load(this); + LangUtil.load(getTerraConfig().getLanguage(), this); // Load language. + boolean succeed = getRawConfigRegistry().loadAll(this); + return succeed; + } + + @Override + public ItemHandle getItemHandle() { + return itemHandle; + } + + @Override + public String platformName() { + return "Fabric"; + } +} From e882be2ba4eb580b586924f43bf7067cd5548099 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:49:59 -0700 Subject: [PATCH 0413/1529] create FabricEntryPoint --- .../dfsek/terra/fabric/FabricEntryPoint.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java new file mode 100644 index 000000000..bae905fee --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.fabric; + +import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; +import com.dfsek.terra.fabric.generation.PopulatorFeature; +import com.dfsek.terra.fabric.generation.TerraBiomeSource; +import net.fabricmc.api.ModInitializer; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.decorator.NopeDecoratorConfig; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import net.minecraft.world.gen.feature.FeatureConfig; + +public class FabricEntryPoint implements ModInitializer { + private static final TerraPluginImpl TERRA_PLUGIN = new TerraPluginImpl(); + + public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); + public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); + + + @Override + public void onInitialize() { + // register the things + Registry.register(Registry.FEATURE, new Identifier("terra", "populator"), POPULATOR_FEATURE); + RegistryKey> floraKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_KEY, new Identifier("terra", "populator")); + Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, floraKey.getValue(), POPULATOR_CONFIGURED_FEATURE); + + Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC); + Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC); + } + + public static TerraPluginImpl getTerraPlugin() { + return TERRA_PLUGIN; + } +} From af4af84a48c0a791a88624adaf3ebfbc540130de Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:51:06 -0700 Subject: [PATCH 0414/1529] register Fabric-specific loaders in TerraPluginImpl --- .../dfsek/terra/fabric/TerraPluginImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java index 9038f2fd5..311c8b3dc 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -1,7 +1,10 @@ package com.dfsek.terra.fabric; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.AbstractTerraPlugin; import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; @@ -9,7 +12,10 @@ import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; +import com.dfsek.terra.fabric.util.ProtoBiome; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; import org.apache.logging.log4j.LogManager; import java.io.File; @@ -70,4 +76,22 @@ public class TerraPluginImpl extends AbstractTerraPlugin { public String platformName() { return "Fabric"; } + + @Override + public void register(TypeRegistry registry) { + super.register(registry); + registry + .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o)) + .registerLoader(Identifier.class, (t, o, l) -> { + Identifier identifier = Identifier.tryParse((String) o); + if(identifier == null) throw new LoadException("Invalid identifier: " + o); + return identifier; + }); + } + + private ProtoBiome parseBiome(String id) throws LoadException { + Identifier identifier = Identifier.tryParse(id); + if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier); // failure. + return new ProtoBiome(identifier); + } } From 68f82fef02923cf4ef16d087910634fecc8c9c02 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 19:56:54 -0700 Subject: [PATCH 0415/1529] use TerraPluginImpl over TerraFabricPlugin --- .../main/java/com/dfsek/terra/AbstractTerraPlugin.java | 4 ++++ .../fabric/generation/FabricChunkGeneratorWrapper.java | 3 ++- .../dfsek/terra/fabric/generation/TerraBiomeSource.java | 3 ++- .../terra/fabric/generation/TerraGeneratorType.java | 3 ++- .../dfsek/terra/fabric/mixin/CommandManagerMixin.java | 3 ++- .../com/dfsek/terra/fabric/mixin/ServerWorldMixin.java | 3 ++- .../mixin/implementations/ConfiguredFeatureMixin.java | 9 +++++---- .../block/state/MobSpawnerBlockEntityMixin.java | 3 ++- .../mixin/lifecycle/client/MinecraftClientMixin.java | 5 +++-- .../mixin/lifecycle/server/GeneratorOptionsMixin.java | 4 +++- .../fabric/mixin/lifecycle/server/ServerMainMixin.java | 3 ++- .../java/com/dfsek/terra/fabric/util/FabricUtil.java | 2 +- 12 files changed, 30 insertions(+), 15 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index ba53171f1..0c56cf6cf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -130,6 +130,10 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { } } + public CommandManager getManager() { + return manager; + } + @Override public Logger getDebugLogger() { return debugLogger.value(); 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 ff3061c02..55ac5cc1f 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 @@ -6,6 +6,7 @@ import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; @@ -44,7 +45,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C config -> config.group( Codec.STRING.fieldOf("pack") .forGetter(ConfigPack::getID) - ).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get))); + ).apply(config, config.stable(FabricEntryPoint.getTerraPlugin().getConfigRegistry()::get))); public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 81fe4f503..6c8b68f86 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -3,6 +3,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; import com.mojang.serialization.Codec; @@ -19,7 +20,7 @@ import java.util.stream.Collectors; public class TerraBiomeSource extends BiomeSource { public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( Codec.STRING.fieldOf("pack").forGetter(ConfigPack::getID) - ).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get)))); + ).apply(config, config.stable(FabricEntryPoint.getTerraPlugin().getConfigRegistry()::get)))); public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryLookupCodec.of(Registry.BIOME_KEY).forGetter(source -> source.biomeRegistry), Codec.LONG.fieldOf("seed").stable().forGetter(source -> source.seed), diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index 6c845c089..ba8335d18 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -1,6 +1,7 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import net.fabricmc.api.EnvType; @@ -25,7 +26,7 @@ public class TerraGeneratorType extends GeneratorType { @Override public GeneratorOptions createDefaultOptions(DynamicRegistryManager.Impl registryManager, long seed, boolean generateStructures, boolean bonusChest) { GeneratorOptions options = super.createDefaultOptions(registryManager, seed, generateStructures, bonusChest); - TerraFabricPlugin.getInstance().getEventManager().callEvent(new BiomeRegistrationEvent(registryManager)); // register biomes + FabricEntryPoint.getTerraPlugin().getEventManager().callEvent(new BiomeRegistrationEvent(registryManager)); // register biomes return options; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java index dc21f4cc1..6e45e06e3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java @@ -3,6 +3,7 @@ package com.dfsek.terra.fabric.mixin; import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; @@ -33,7 +34,7 @@ public abstract class CommandManagerMixin { @Inject(method = "", at = @At(value = "INVOKE", target = "Lcom/mojang/brigadier/CommandDispatcher;findAmbiguities(Lcom/mojang/brigadier/AmbiguityConsumer;)V", remap = false)) private void injectTerraCommands(CommandManager.RegistrationEnvironment environment, CallbackInfo ci) { - com.dfsek.terra.api.command.CommandManager manager = TerraFabricPlugin.getInstance().getManager(); + com.dfsek.terra.api.command.CommandManager manager = FabricEntryPoint.getTerraPlugin().getManager(); int max = manager.getMaxArgumentDepth(); RequiredArgumentBuilder arg = argument("arg" + (max - 1), StringArgumentType.word()); for(int i = 0; i < max; i++) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index 33e41839a..fedfae67e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import net.minecraft.server.MinecraftServer; @@ -26,7 +27,7 @@ public abstract class ServerWorldMixin { public void injectConstructor(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey registryKey, DimensionType dimensionType, WorldGenerationProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { ((FabricChunkGeneratorWrapper) chunkGenerator).setWorld((ServerWorld) (Object) this); - TerraFabricPlugin.getInstance().logger().info("Registered world " + this); + FabricEntryPoint.getTerraPlugin().logger().info("Registered world " + this); } } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 38090e1cb..ed1eac405 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; @@ -32,7 +33,7 @@ public abstract class ConfiguredFeatureMixin { @SuppressWarnings({"ConstantConditions", "try"}) public boolean terra$plant(Vector3 l, World world, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); - try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { + try(ProfileFrame ignore = FabricEntryPoint.getTerraPlugin().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) world); ChunkGenerator generatorWrapper = ((ServerWorldAccess) world).toServerWorld().getChunkManager().getChunkGenerator(); return generate(fabricWorldAccess, generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); @@ -40,8 +41,8 @@ public abstract class ConfiguredFeatureMixin { } public Set terra$getSpawnable() { - return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), - TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), - TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); + return MaterialSet.get(FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:grass_block"), + FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:podzol"), + FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:mycelium")); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index 83983067f..c843e2ee5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -3,6 +3,7 @@ package com.dfsek.terra.fabric.mixin.implementations.block.state; import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.MobSpawnerLogicAccessor; import net.minecraft.block.BlockState; @@ -96,7 +97,7 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { SerialState.parse(state).forEach((k, v) -> { switch(k) { case "type": - terra$setSpawnedType(TerraFabricPlugin.getInstance().getWorldHandle().getEntity(v)); + terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v)); return; case "delay": terra$setDelay(Integer.parseInt(v)); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index 81519a9ef..d1c50aa21 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.client; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.fabric.generation.TerraGeneratorType; @@ -19,8 +20,8 @@ public class MinecraftClientMixin { target = "Lnet/minecraft/client/util/WindowProvider;createWindow(Lnet/minecraft/client/WindowSettings;Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/client/util/Window;", // sorta arbitrary position, after mod init, before window opens shift = At.Shift.BEFORE)) public void injectConstructor(RunArgs args, CallbackInfo callbackInfo) { - TerraFabricPlugin.getInstance().getEventManager().callEvent(new PlatformInitializationEvent()); - TerraFabricPlugin.getInstance().getConfigRegistry().forEach(pack -> { + FabricEntryPoint.getTerraPlugin().getEventManager().callEvent(new PlatformInitializationEvent()); + FabricEntryPoint.getTerraPlugin().getConfigRegistry().forEach(pack -> { final GeneratorType generatorType = new TerraGeneratorType(pack); //noinspection ConstantConditions ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getID())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 05c9a3d06..6a0ca014a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -1,7 +1,9 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; +import com.dfsek.terra.fabric.TerraPluginImpl; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -30,7 +32,7 @@ public abstract class GeneratorOptionsMixin { return; } - TerraFabricPlugin main = TerraFabricPlugin.getInstance(); + TerraPluginImpl main = FabricEntryPoint.getTerraPlugin(); String prop = properties.get("level-type").toString().trim(); if(prop.startsWith("Terra")) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index 1af7a455d..69911894e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import net.minecraft.server.Main; @@ -12,6 +13,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class ServerMainMixin { @Inject(method = "main([Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/registry/DynamicRegistryManager;create()Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;")) private static void injectConstructor(String[] args, CallbackInfo ci) { - TerraFabricPlugin.getInstance().getEventManager().callEvent(new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff + FabricEntryPoint.getTerraPlugin().getEventManager().callEvent(new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 574e4ab50..f3adf5e83 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -47,7 +47,7 @@ public final class FabricUtil { // BiomeTemplate template = biome.getTemplate(); Map colors = new HashMap<>(); // template.getColors(); - TerraFabricPlugin.FabricAddon fabricAddon = TerraFabricPlugin.getInstance().getFabricAddon(); + //TerraFabricPlugin.FabricAddon fabricAddon = TerraFabricPlugin.getInstance().getFabricAddon(); Registry biomeRegistry = registryManager.get(Registry.BIOME_KEY); Biome vanilla = ((ProtoBiome) (new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0))).get(biomeRegistry); From b19b85fd609d6a9c70d534ddb6907d33884db212 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:02:30 -0700 Subject: [PATCH 0416/1529] move FabricAddon to upper level --- .../com/dfsek/terra/fabric/FabricAddon.java | 109 ++++++++++++++++++ .../dfsek/terra/fabric/TerraFabricPlugin.java | 96 +-------------- 2 files changed, 110 insertions(+), 95 deletions(-) create mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java new file mode 100644 index 000000000..5cfb010a5 --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -0,0 +1,109 @@ +package com.dfsek.terra.fabric; + +import com.dfsek.tectonic.exception.ConfigException; +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.config.ConfigPack; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; +import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; +import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; +import com.dfsek.terra.fabric.util.FabricUtil; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.feature.ConfiguredFeature; + +import java.util.HashMap; +import java.util.Map; + +@Addon("Terra-Fabric") +@Author("Terra") +@Version("1.0.0") +public final class FabricAddon extends TerraAddon { + private final TerraPluginImpl terraFabricPlugin; + private final Map> templates = new HashMap<>(); + + public FabricAddon(TerraPluginImpl terraFabricPlugin) { + this.terraFabricPlugin = terraFabricPlugin; + } + + @Override + public void initialize() { + terraFabricPlugin.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); + try { + event.loadTemplate(template); + } catch(ConfigException e) { + e.printStackTrace(); + } + + if(template.doRegistryInjection()) { + BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { + if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { + try { + event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); + terraFabricPlugin.getDebugLogger().info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); + } catch(DuplicateEntryException ignored) { + } + } + }); + } + templates.put(event.getPack(), Pair.of(template, null)); + }) + .global(); + + terraFabricPlugin.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPostLoadEvent.class) + .then(event -> { + PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); + + try { + event.loadTemplate(template); + } catch(ConfigException e) { + e.printStackTrace(); + } + + templates.get(event.getPack()).setRight(template); + }) + .priority(100) + .global(); + + terraFabricPlugin.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, BiomeRegistrationEvent.class) + .then(event -> { + terraFabricPlugin.logger().info("Registering biomes..."); + Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); + terraFabricPlugin.getConfigRegistry().forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. + terraFabricPlugin.logger().info("Biomes registered."); + }) + .global(); + } + + + private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { + try { + registry.register(id, (Tree) tree); + } catch(DuplicateEntryException ignore) { + } + } + + public Map> getTemplates() { + return templates; + } +} 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 e44f1a81d..406c8ae5e 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 @@ -1,48 +1,32 @@ package com.dfsek.terra.fabric; -import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.Logger; 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.block.state.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.biome.TerraBiome; 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; import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; -import com.dfsek.terra.fabric.config.PreLoadCompatibilityOptions; -import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; -import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.ProtoBiome; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -56,7 +40,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.decorator.Decorator; import net.minecraft.world.gen.decorator.NopeDecoratorConfig; import net.minecraft.world.gen.feature.ConfiguredFeature; @@ -68,8 +51,6 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; public class TerraFabricPlugin implements TerraPlugin, ModInitializer { @@ -101,7 +82,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final WorldHandle worldHandle = new FabricWorldHandle(); private final ConfigRegistry configRegistry = new ConfigRegistry(); private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(configRegistry); - private final FabricAddon fabricAddon = new FabricAddon(); + private final FabricAddon fabricAddon = new FabricAddon(this); private final AddonRegistry addonRegistry = new AddonRegistry(fabricAddon, this); private final com.dfsek.terra.api.registry.Registry addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); private final PluginConfig config = new PluginConfigImpl(); @@ -254,79 +235,4 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return profiler; } - @Addon("Terra-Fabric") - @Author("Terra") - @Version("1.0.0") - public final class FabricAddon extends TerraAddon { - private final Map> templates = new HashMap<>(); - - @Override - public void initialize() { - eventManager - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - if(template.doRegistryInjection()) { - BuiltinRegistries.CONFIGURED_FEATURE.getEntries().forEach(entry -> { - if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getValue())) { - try { - event.getPack().getCheckedRegistry(Tree.class).register(entry.getKey().getValue().toString(), (Tree) entry.getValue()); - debugLogger.info("Injected ConfiguredFeature " + entry.getKey().getValue() + " as Tree."); - } catch(DuplicateEntryException ignored) { - } - } - }); - } - templates.put(event.getPack(), Pair.of(template, null)); - }) - .global(); - - eventManager - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPostLoadEvent.class) - .then(event -> { - PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); - - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - templates.get(event.getPack()).setRight(template); - }) - .priority(100) - .global(); - - eventManager - .getHandler(FunctionalEventHandler.class) - .register(this, BiomeRegistrationEvent.class) - .then(event -> { - logger.info("Registering biomes..."); - Registry biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); - configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. - logger.info("Biomes registered."); - }) - .global(); - } - - - private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { - try { - registry.register(id, (Tree) tree); - } catch(DuplicateEntryException ignore) { - } - } - - public Map> getTemplates() { - return templates; - } - } } From 4ec1ab7c16df970f54119b1a8b57eda227b1dd22 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:03:52 -0700 Subject: [PATCH 0417/1529] remove references to TerraFabricPlugin --- .../src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index f3adf5e83..e31bd6cea 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -6,7 +6,9 @@ import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.TerraFabricPlugin; +import com.dfsek.terra.fabric.TerraPluginImpl; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; import net.minecraft.block.entity.LootableContainerBlockEntity; @@ -56,7 +58,7 @@ public final class FabricUtil { generationSettings.surfaceBuilder(vanilla.getGenerationSettings().getSurfaceBuilder()); // It needs a surfacebuilder, even though we dont use it. - generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, TerraFabricPlugin.POPULATOR_CONFIGURED_FEATURE); + generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, FabricEntryPoint.POPULATOR_CONFIGURED_FEATURE); if(pack.vanillaCaves()) { for(GenerationStep.Carver carver : GenerationStep.Carver.values()) { From 5cafd4999abe2547d01c7e49cc329a4cbc84ff28 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:04:25 -0700 Subject: [PATCH 0418/1529] use FabricEntryPoint as entry point --- platforms/fabric/src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index cdc7b0742..5b9f4e48e 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -17,7 +17,7 @@ "environment": "*", "entrypoints": { "main": [ - "com.dfsek.terra.fabric.TerraFabricPlugin" + "com.dfsek.terra.fabric.FabricEntryPoint" ] }, "mixins": [ From 41d3e2f6b00b841fa75486f2c36cb1ffa178d84d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:05:10 -0700 Subject: [PATCH 0419/1529] delete TerraFabricPlugin --- .../dfsek/terra/fabric/TerraFabricPlugin.java | 238 ------------------ .../FabricChunkGeneratorWrapper.java | 1 - .../fabric/generation/TerraBiomeSource.java | 1 - .../fabric/generation/TerraGeneratorType.java | 1 - .../fabric/mixin/CommandManagerMixin.java | 1 - .../terra/fabric/mixin/ServerWorldMixin.java | 1 - .../ConfiguredFeatureMixin.java | 2 - .../state/MobSpawnerBlockEntityMixin.java | 1 - .../client/MinecraftClientMixin.java | 1 - .../server/GeneratorOptionsMixin.java | 1 - .../lifecycle/server/ServerMainMixin.java | 1 - .../dfsek/terra/fabric/util/FabricUtil.java | 2 - 12 files changed, 251 deletions(-) delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java 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 deleted file mode 100644 index 406c8ae5e..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.dfsek.terra.fabric; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.Logger; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.command.CommandManager; -import com.dfsek.terra.api.command.exception.MalformedCommandException; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.PluginConfig; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.profiler.Profiler; -import com.dfsek.terra.api.registry.CheckedRegistry; -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; -import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.generation.PopulatorFeature; -import com.dfsek.terra.fabric.generation.TerraBiomeSource; -import com.dfsek.terra.fabric.handle.FabricItemHandle; -import com.dfsek.terra.fabric.handle.FabricWorldHandle; -import com.dfsek.terra.fabric.util.ProtoBiome; -import com.dfsek.terra.profiler.ProfilerImpl; -import com.dfsek.terra.registry.CheckedRegistryImpl; -import com.dfsek.terra.registry.LockedRegistryImpl; -import com.dfsek.terra.registry.master.AddonRegistry; -import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.util.logging.DebugLogger; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.gen.decorator.Decorator; -import net.minecraft.world.gen.decorator.NopeDecoratorConfig; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import net.minecraft.world.gen.feature.FeatureConfig; -import org.apache.commons.io.FileUtils; -import org.apache.logging.log4j.LogManager; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; - - -public class TerraFabricPlugin implements TerraPlugin, ModInitializer { - public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); - public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); - private static TerraFabricPlugin instance; - private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); - private final EventManager eventManager = new EventManagerImpl(this); - private final GenericLoaders genericLoaders = new GenericLoaders(this); - private final Profiler profiler = new ProfilerImpl(); - private final Logger logger = new Logger() { - @Override - public void info(String message) { - log4jLogger.info(message); - } - - @Override - public void warning(String message) { - log4jLogger.warn(message); - } - - @Override - public void severe(String message) { - log4jLogger.error(message); - } - }; - private final DebugLogger debugLogger = new DebugLogger(logger); - private final ItemHandle itemHandle = new FabricItemHandle(); - private final WorldHandle worldHandle = new FabricWorldHandle(); - private final ConfigRegistry configRegistry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(configRegistry); - private final FabricAddon fabricAddon = new FabricAddon(this); - private final AddonRegistry addonRegistry = new AddonRegistry(fabricAddon, this); - private final com.dfsek.terra.api.registry.Registry addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); - private final PluginConfig config = new PluginConfigImpl(); - private final CommandManager manager = new TerraCommandManager(this); - private File dataFolder; - - public static TerraFabricPlugin getInstance() { - return instance; - } - - private ProtoBiome parseBiome(String id) throws LoadException { - Identifier identifier = Identifier.tryParse(id); - if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier); // failure. - return new ProtoBiome(identifier); - } - - public CommandManager getManager() { - return manager; - } - - @Override - public WorldHandle getWorldHandle() { - return worldHandle; - } - - @Override - public Logger logger() { - return logger; - } - - @Override - public PluginConfig getTerraConfig() { - return config; - } - - @Override - public File getDataFolder() { - return dataFolder; - } - - @Override - public Language getLanguage() { - return LangUtil.getLanguage(); - } - - public FabricAddon getFabricAddon() { - return fabricAddon; - } - - @Override - public CheckedRegistry getConfigRegistry() { - return checkedRegistry; - } - - @Override - public com.dfsek.terra.api.registry.Registry getAddons() { - return addonLockedRegistry; - } - - @Override - public boolean reload() { - config.load(this); - LangUtil.load(config.getLanguage(), this); // Load language. - boolean succeed = configRegistry.loadAll(this); - return succeed; - } - - @Override - public ItemHandle getItemHandle() { - return itemHandle; - } - - @Override - public void saveDefaultConfig() { - try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { - File configFile = new File(getDataFolder(), "config.yml"); - if(!configFile.exists()) FileUtils.copyInputStreamToFile(stream, configFile); - } catch(IOException e) { - e.printStackTrace(); - } - } - - @Override - public String platformName() { - return "Fabric"; - } - - @Override - public Logger getDebugLogger() { - return debugLogger; - } - - @SuppressWarnings("unchecked") - @Override - public void register(TypeRegistry registry) { - genericLoaders.register(registry); - registry - .registerLoader(BlockState.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o)) - .registerLoader(Identifier.class, (t, o, l) -> { - Identifier identifier = Identifier.tryParse((String) o); - if(identifier == null) throw new LoadException("Invalid identifier: " + o); - return identifier; - }); - } - - @Override - public void onInitialize() { - instance = this; - - this.dataFolder = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra"); - saveDefaultConfig(); - config.load(this); - LangUtil.load(config.getLanguage(), this); - logger.info("Initializing Terra..."); - - debugLogger.setDebug(config.isDebugLogging()); - if(config.isDebugProfiler()) profiler.start(); - - if(!addonRegistry.loadAll(getClass().getClassLoader())) { - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); - } - logger.info("Loaded addons."); - - - Registry.register(Registry.FEATURE, new Identifier("terra", "populator"), POPULATOR_FEATURE); - RegistryKey> floraKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_KEY, new Identifier("terra", "populator")); - Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, floraKey.getValue(), POPULATOR_CONFIGURED_FEATURE); - - Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC); - Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC); - - try { - CommandUtil.registerAll(manager); - } catch(MalformedCommandException e) { - e.printStackTrace(); // TODO do something here even though this should literally never happen - } - - logger.info("Finished initialization."); - } - - - @Override - public EventManager getEventManager() { - return eventManager; - } - - @Override - public Profiler getProfiler() { - return profiler; - } - -} 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 55ac5cc1f..2c84efe8d 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 @@ -7,7 +7,6 @@ import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; import com.dfsek.terra.util.FastRandom; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 6c8b68f86..823b10928 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.util.FabricUtil; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index ba8335d18..bc9ff7497 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -2,7 +2,6 @@ package com.dfsek.terra.fabric.generation; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java index 6e45e06e3..80cff60fd 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.RequiredArgumentBuilder; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index fedfae67e..8616bd890 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.mixin; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index ed1eac405..dcbb2cc84 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -7,12 +7,10 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.WorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.spongepowered.asm.mixin.Implements; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index c843e2ee5..d5015f600 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -4,7 +4,6 @@ import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.mixin.access.MobSpawnerLogicAccessor; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index d1c50aa21..e979808f1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.client; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.fabric.generation.TerraGeneratorType; import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 6a0ca014a..a3429a676 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -2,7 +2,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraPluginImpl; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index 69911894e..f75e62710 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -1,7 +1,6 @@ package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import net.minecraft.server.Main; import org.spongepowered.asm.mixin.Mixin; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index e31bd6cea..1604b0c38 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -7,8 +7,6 @@ import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraFabricPlugin; -import com.dfsek.terra.fabric.TerraPluginImpl; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.mojang.serialization.Lifecycle; import net.minecraft.block.entity.LootableContainerBlockEntity; From cb876d12f9ae520dec3017522bcef220c021601c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:06:14 -0700 Subject: [PATCH 0420/1529] use FabricAddon in TerraPluginImpl --- .../main/java/com/dfsek/terra/fabric/TerraPluginImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java index 311c8b3dc..b95e52329 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.AbstractTerraPlugin; import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; @@ -19,6 +20,7 @@ import net.minecraft.util.registry.BuiltinRegistries; import org.apache.logging.log4j.LogManager; import java.io.File; +import java.util.Optional; public class TerraPluginImpl extends AbstractTerraPlugin { private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); @@ -49,6 +51,11 @@ public class TerraPluginImpl extends AbstractTerraPlugin { return worldHandle; } + @Override + protected Optional getPlatformAddon() { + return Optional.of(new FabricAddon(this)); + } + @Override public Logger logger() { return logger; From 22aa03cd51226a40fdbd709fd983efb1edfe055a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:06:39 -0700 Subject: [PATCH 0421/1529] update FabricAddon ID --- .../src/main/java/com/dfsek/terra/fabric/FabricAddon.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index 5cfb010a5..c7df50dc6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -27,7 +27,7 @@ import net.minecraft.world.gen.feature.ConfiguredFeature; import java.util.HashMap; import java.util.Map; -@Addon("Terra-Fabric") +@Addon("terra-fabric") @Author("Terra") @Version("1.0.0") public final class FabricAddon extends TerraAddon { From 074528003bfa0672491b0406cca0921488fe1185 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:11:04 -0700 Subject: [PATCH 0422/1529] clean up addon registry initialization --- .../java/com/dfsek/terra/AbstractTerraPlugin.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 0c56cf6cf..492cb3095 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -54,13 +54,7 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { private final CommandManager manager = new TerraCommandManager(this); - private final AddonRegistry addonRegistry = Construct.construct(() -> { - Optional addon = getPlatformAddon(); - AddonRegistry registry = addon.map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); - InternalAddon internalAddon = new InternalAddon(this); - registry.register(internalAddon); - return registry; - }); + private final AddonRegistry addonRegistry; public AbstractTerraPlugin() { @@ -76,6 +70,9 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { profiler.start(); } + addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); + addonRegistry.register(new InternalAddon(this)); + if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); } From f73366fcb3fc9483b7c582c36ef3a50ee1ec6f9a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:14:19 -0700 Subject: [PATCH 0423/1529] Lazy#of -> Lazy#lazy --- .../terra/api/block/state/properties/base/EnumProperty.java | 2 +- .../src/main/java/com/dfsek/terra/api/util/generic/Lazy.java | 2 +- .../src/main/java/com/dfsek/terra/AbstractTerraPlugin.java | 4 +--- .../java/com/dfsek/terra/registry/RegistryFactoryImpl.java | 3 +-- .../src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java | 4 +--- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 7e658a259..777405d43 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -9,7 +9,7 @@ import java.util.Collection; public interface EnumProperty> extends Property { static > EnumProperty of(String name, Class clazz) { return new EnumProperty() { - private final Lazy> constants = Lazy.of(() -> Arrays.asList(clazz.getEnumConstants())); + private final Lazy> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants())); @Override public Class getType() { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java index e35376662..ffe186d5e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java @@ -11,7 +11,7 @@ public final class Lazy { this.valueSupplier = valueSupplier; } - public static Lazy of(Supplier valueSupplier) { + public static Lazy lazy(Supplier valueSupplier) { return new Lazy<>(valueSupplier); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 492cb3095..d0ad3467f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -9,13 +9,11 @@ import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.generic.Construct; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.TerraCommandManager; @@ -39,7 +37,7 @@ import java.util.Optional; * Skeleton implementation of {@link TerraPlugin} */ public abstract class AbstractTerraPlugin implements TerraPlugin { - private final Lazy debugLogger = Lazy.of(() -> new DebugLogger(logger())); + private final Lazy debugLogger = Lazy.lazy(() -> new DebugLogger(logger())); private final EventManager eventManager = new EventManagerImpl(this); private final ConfigRegistry configRegistry = new ConfigRegistry(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java index dab4171e2..52b701972 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java @@ -8,7 +8,6 @@ import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.util.generic.Lazy; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.function.Function; public class RegistryFactoryImpl implements RegistryFactory { @@ -20,7 +19,7 @@ public class RegistryFactoryImpl implements RegistryFactory { @Override public OpenRegistry create(Function, TypeLoader> loader) { return new OpenRegistryImpl<>() { - private final Lazy> loaderCache = Lazy.of(() -> loader.apply(this)); + private final Lazy> loaderCache = Lazy.lazy(() -> loader.apply(this)); @Override public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java index b95e52329..e0365c6e7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -5,10 +5,8 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.AbstractTerraPlugin; import com.dfsek.terra.api.Logger; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.fabric.handle.FabricItemHandle; @@ -44,7 +42,7 @@ public class TerraPluginImpl extends AbstractTerraPlugin { private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); - private final Lazy dataFolder = Lazy.of(() -> new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra")); + private final Lazy dataFolder = Lazy.lazy(() -> new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra")); @Override public WorldHandle getWorldHandle() { From 7f09ee4af34252fe2e09d354c4fa1526f40e6bc0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 24 Jul 2021 20:50:01 -0700 Subject: [PATCH 0424/1529] cleanup AbstractTerraPlugin --- .../src/main/java/com/dfsek/terra/AbstractTerraPlugin.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index d0ad3467f..9edc82ae9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -82,10 +82,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { e.printStackTrace(); // TODO do something here even though this should literally never happen } - eventManager - .getHandler(FunctionalEventHandler.class); - /**/ - logger().info("Finished initialization."); } From 19d4673afedd58041ce6b4f39fc50f1bed582f8c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 25 Jul 2021 22:33:18 -0700 Subject: [PATCH 0425/1529] fix logger issue --- .../com/dfsek/terra/AbstractTerraPlugin.java | 11 ++++++ .../dfsek/terra/fabric/TerraPluginImpl.java | 39 +++++++++---------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 9edc82ae9..80aaca966 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -54,8 +54,12 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { private final AddonRegistry addonRegistry; + private final Logger logger; + public AbstractTerraPlugin() { + this.logger = createLogger(); + System.out.println(logger); logger().info("Initializing Terra..."); config.load(this); // load config.yml @@ -90,6 +94,8 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { return Optional.empty(); } + protected abstract Logger createLogger(); + @Override public PluginConfig getTerraConfig() { return config; @@ -149,4 +155,9 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { public Language getLanguage() { return LangUtil.getLanguage(); } + + @Override + public Logger logger() { + return logger; + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java index e0365c6e7..c0b6c3ed4 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -21,24 +21,6 @@ import java.io.File; import java.util.Optional; public class TerraPluginImpl extends AbstractTerraPlugin { - private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); - - private final Logger logger = new Logger() { - @Override - public void info(String message) { - log4jLogger.info(message); - } - - @Override - public void warning(String message) { - log4jLogger.warn(message); - } - - @Override - public void severe(String message) { - log4jLogger.error(message); - } - }; private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); @@ -55,10 +37,27 @@ public class TerraPluginImpl extends AbstractTerraPlugin { } @Override - public Logger logger() { - return logger; + protected Logger createLogger() { + final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); + return new Logger() { + @Override + public void info(String message) { + log4jLogger.info(message); + } + + @Override + public void warning(String message) { + log4jLogger.warn(message); + } + + @Override + public void severe(String message) { + log4jLogger.error(message); + } + }; } + @Override public File getDataFolder() { return dataFolder.value(); From c13494ca0381f5ccdd9194fadcf5971debae5ade Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 25 Jul 2021 22:42:53 -0700 Subject: [PATCH 0426/1529] implement AbstractTerraPlugin#load --- .../com/dfsek/terra/AbstractTerraPlugin.java | 18 +++++++++++++++--- .../dfsek/terra/fabric/TerraPluginImpl.java | 4 ++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 80aaca966..813b36baf 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -9,12 +9,12 @@ import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.generic.Lazy; +import com.dfsek.terra.api.util.mutable.MutableBoolean; import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.config.GenericLoaders; @@ -35,6 +35,8 @@ import java.util.Optional; /** * Skeleton implementation of {@link TerraPlugin} + * + * Implementations must invoke {@link #load()} in their constructors. */ public abstract class AbstractTerraPlugin implements TerraPlugin { private final Lazy debugLogger = Lazy.lazy(() -> new DebugLogger(logger())); @@ -56,12 +58,23 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { private final Logger logger; + private static final MutableBoolean LOADED = new MutableBoolean(false); + public AbstractTerraPlugin() { this.logger = createLogger(); - System.out.println(logger); + addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); + } + + protected void load() { + if(LOADED.get()) { + throw new IllegalStateException("Someone tried to initialize Terra, but Terra has already initialized. This is most likely due to a broken platform implementation, or a misbehaving mod."); + } + LOADED.set(true); + logger().info("Initializing Terra..."); + saveDefaultConfig(); config.load(this); // load config.yml LangUtil.load(config.getLanguage(), this); // load language @@ -72,7 +85,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { profiler.start(); } - addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); addonRegistry.register(new InternalAddon(this)); if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java index c0b6c3ed4..0521c7edb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java @@ -36,6 +36,10 @@ public class TerraPluginImpl extends AbstractTerraPlugin { return Optional.of(new FabricAddon(this)); } + public TerraPluginImpl() { + load(); + } + @Override protected Logger createLogger() { final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); From 6da8c72593cd6da5eb38ee2a529b7cd7fdcb5d82 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 25 Jul 2021 22:43:36 -0700 Subject: [PATCH 0427/1529] remove TerraPlugin#saveDefaultConfig --- .../java/com/dfsek/terra/api/TerraPlugin.java | 2 -- .../com/dfsek/terra/AbstractTerraPlugin.java | 22 ++++++++----------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 698556227..9d2eba55a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -36,8 +36,6 @@ public interface TerraPlugin extends LoaderRegistrar { ItemHandle getItemHandle(); - void saveDefaultConfig(); - String platformName(); Logger getDebugLogger(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 813b36baf..5bbc04b88 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -74,7 +74,15 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { logger().info("Initializing Terra..."); - saveDefaultConfig(); + try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { + File configFile = new File(getDataFolder(), "config.yml"); + if(!configFile.exists()) { + FileUtils.copyInputStreamToFile(stream, configFile); + } + } catch(IOException e) { + e.printStackTrace(); + } + config.load(this); // load config.yml LangUtil.load(config.getLanguage(), this); // load language @@ -127,18 +135,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { return configRegistry; } - @Override - public void saveDefaultConfig() { - try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { - File configFile = new File(getDataFolder(), "config.yml"); - if(!configFile.exists()) { - FileUtils.copyInputStreamToFile(stream, configFile); - } - } catch(IOException e) { - e.printStackTrace(); - } - } - public CommandManager getManager() { return manager; } From f76ef93fe64912f527aa24a24e14c2a98a2cbae3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:37:52 -0700 Subject: [PATCH 0428/1529] create AndDistributorTemplate --- .../config/AndDistributorTemplate.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java new file mode 100644 index 000000000..a4c71d62b --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.List; + +public class AndDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("distributors") + private List distributors; + + + @Override + public Distributor get() { + Distributor current = distributors.remove(0); + while(!distributors.isEmpty()) { + current = current.and(distributors.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); + return true; + } +} From a24de0ab97383efdfec31531402fac854bc5204a Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:38:19 -0700 Subject: [PATCH 0429/1529] register AND distributor --- .../terra/addons/feature/distributor/DistributorAddon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index be29dd022..d0e4aedbb 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.distributor; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.distributor.config.AndDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.PointSetDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.util.Point; @@ -36,6 +37,7 @@ public class DistributorAddon extends TerraAddon { CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); + distributorRegistry.register("AND", AndDistributorTemplate::new); event.getPack() .applyLoader(Point.class, PointTemplate::new); From 4567011313dbbad8efa54bfe04c21cc46b68be93 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:39:43 -0700 Subject: [PATCH 0430/1529] create OrDistributorTemplate --- .../config/OrDistributorTemplate.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java new file mode 100644 index 000000000..240bfeb58 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.List; + +public class OrDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("distributors") + private List distributors; + + + @Override + public Distributor get() { + Distributor current = distributors.remove(0); + while(!distributors.isEmpty()) { + current = current.or(distributors.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); + return true; + } +} From b25be7ae985a6ed1c707a2e027ce42686dba48e6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:40:06 -0700 Subject: [PATCH 0431/1529] register OR distributor --- .../terra/addons/feature/distributor/DistributorAddon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index d0e4aedbb..07fb8295c 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.feature.distributor; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.config.AndDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; +import com.dfsek.terra.addons.feature.distributor.config.OrDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.PointSetDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.util.Point; import com.dfsek.terra.addons.feature.distributor.util.PointTemplate; @@ -38,6 +39,7 @@ public class DistributorAddon extends TerraAddon { distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); distributorRegistry.register("AND", AndDistributorTemplate::new); + distributorRegistry.register("OR", OrDistributorTemplate::new); event.getPack() .applyLoader(Point.class, PointTemplate::new); From c8bb7803121b8a9e0115648d3d87dd4baf828743 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 23:19:57 -0700 Subject: [PATCH 0432/1529] update noise IDs --- .../com/dfsek/terra/addons/noise/NoiseAddon.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index f596f9a9d..ae0656575 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -68,25 +68,25 @@ public class NoiseAddon extends TerraAddon { noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); - noiseRegistry.register("DOMAINWARP", DomainWarpTemplate::new); + noiseRegistry.register("DOMAIN_WARP", DomainWarpTemplate::new); noiseRegistry.register("FBM", BrownianMotionTemplate::new); - noiseRegistry.register("PINGPONG", PingPongTemplate::new); + noiseRegistry.register("PING_PONG", PingPongTemplate::new); noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.register("OPEN_SIMPLEX_2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.register("OPEN_SIMPLEX_2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); noiseRegistry.register("GABOR", GaborNoiseTemplate::new); noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.register("VALUE_CUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.register("WHITE_NOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); From 7430116fa9c66cdda9c9099a14d43292064256de Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:39:02 -0700 Subject: [PATCH 0433/1529] create Pattern interface --- .../terra/addons/feature/locator/patterns/Pattern.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java new file mode 100644 index 000000000..13e45bce4 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.addons.feature.locator.patterns; + +import com.dfsek.terra.api.world.Column; + +public interface Pattern { + boolean matches(int y, Column column); +} From fb3f90a9cde57e879136f5d83bd4fe7ee8a646e2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:39:53 -0700 Subject: [PATCH 0434/1529] Pattern boolean operations --- .../terra/addons/feature/locator/patterns/Pattern.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java index 13e45bce4..d275fea8e 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java @@ -4,4 +4,12 @@ import com.dfsek.terra.api.world.Column; public interface Pattern { boolean matches(int y, Column column); + + default Pattern and(Pattern that) { + return (y, column) -> this.matches(y, column) && that.matches(y, column); + } + + default Pattern or(Pattern that) { + return (y, column) -> this.matches(y, column) || that.matches(y, column); + } } From 649273db01d55288ef1f315bcaba3f3e757a8675 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:50:26 -0700 Subject: [PATCH 0435/1529] create MatchPattern --- .../locator/patterns/match/MatchPattern.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java new file mode 100644 index 000000000..512a5386b --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.addons.feature.locator.patterns.match; + +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.world.Column; + +import java.util.function.Predicate; + +public class MatchPattern implements Pattern { + private final Range range; + private final Predicate matches; + + protected MatchPattern(Range range, Predicate matches) { + this.range = range; + this.matches = matches; + } + + @Override + public boolean matches(int y, Column column) { + for(int i : range) { + if(!matches.test(column.getBlock(i))) return false; + } + return true; + } +} From ca02187b0c499fde4b44ac7dfd5965295016802e Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:56:11 -0700 Subject: [PATCH 0436/1529] create AirMatchPatternTemplate --- .../pattern/AirMatchPatternTemplate.java | 25 +++++++++++++++++++ .../locator/patterns/match/MatchPattern.java | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java new file mode 100644 index 000000000..dc351e27b --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java @@ -0,0 +1,25 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.Range; + +public class AirMatchPatternTemplate implements ObjectTemplate { + @Value("offset") + private Range offset; + + private final BlockState air; + + public AirMatchPatternTemplate(TerraPlugin main) { + this.air = main.getWorldHandle().air(); + } + + @Override + public Pattern get() { + return new MatchPattern(offset, air::matches); + } +} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java index 512a5386b..d8021a4b2 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java @@ -11,7 +11,7 @@ public class MatchPattern implements Pattern { private final Range range; private final Predicate matches; - protected MatchPattern(Range range, Predicate matches) { + public MatchPattern(Range range, Predicate matches) { this.range = range; this.matches = matches; } From 347e0d2bd1de0ab9e5b86218bb04674aa1726d41 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:57:46 -0700 Subject: [PATCH 0437/1529] create SolidMatchPatternTemplate --- .../pattern/SolidMatchPatternTemplate.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java new file mode 100644 index 000000000..79ecfa497 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.api.util.Range; + +public class SolidMatchPatternTemplate implements ObjectTemplate { + @Value("offset") + private Range offset; + + @Override + public Pattern get() { + return new MatchPattern(offset, blockState -> blockState.getBlockType().isSolid()); + } +} From 5321662847719c840e3d15b00aa2e87d391e86a5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 19:58:08 -0700 Subject: [PATCH 0438/1529] simplify AirMatchPatternTemplate --- .../locator/config/pattern/AirMatchPatternTemplate.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java index dc351e27b..79296367e 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java @@ -12,14 +12,9 @@ public class AirMatchPatternTemplate implements ObjectTemplate { @Value("offset") private Range offset; - private final BlockState air; - - public AirMatchPatternTemplate(TerraPlugin main) { - this.air = main.getWorldHandle().air(); - } @Override public Pattern get() { - return new MatchPattern(offset, air::matches); + return new MatchPattern(offset, BlockState::isAir); } } From 167ab3146ec09edebe1c396245689518d9eecfc4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:00:46 -0700 Subject: [PATCH 0439/1529] create AndPatternTemplate --- .../config/pattern/AndPatternTemplate.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java new file mode 100644 index 000000000..7d04a9566 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + +import java.util.List; + +public class AndPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("patterns") + private List patterns; + + @Override + public Pattern get() { + Pattern current = patterns.remove(0); + while(!patterns.isEmpty()) { + current = current.and(patterns.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); + return true; + } +} From 9693fa641b86eba8f4503d6315aaf02ebd129438 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:01:29 -0700 Subject: [PATCH 0440/1529] Pattern#not --- .../dfsek/terra/addons/feature/locator/patterns/Pattern.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java index d275fea8e..a5937b770 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java @@ -12,4 +12,8 @@ public interface Pattern { default Pattern or(Pattern that) { return (y, column) -> this.matches(y, column) || that.matches(y, column); } + + default Pattern not() { + return (y, column) -> !this.matches(y, column); + } } From 1739c51ce6d1de185d7959fa4e2ba4c5869f1fd8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:01:55 -0700 Subject: [PATCH 0441/1529] create OrPatternTemplate --- .../config/pattern/OrPatternTemplate.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java new file mode 100644 index 000000000..dc648d12e --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + +import java.util.List; + +public class OrPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("patterns") + private List patterns; + + @Override + public Pattern get() { + Pattern current = patterns.remove(0); + while(!patterns.isEmpty()) { + current = current.or(patterns.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); + return true; + } +} From db93c9e2e92096e9634e031392064ec339fbf619 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:02:42 -0700 Subject: [PATCH 0442/1529] create NotPatternTemplate --- .../config/pattern/NotPatternTemplate.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java new file mode 100644 index 000000000..8201774d2 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + +public class NotPatternTemplate implements ObjectTemplate { + @Value("pattern") + private Pattern pattern; + + @Override + public Pattern get() { + return pattern.not(); + } +} From abfd050acb7f28ea5e21590376095fa312e186b8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:05:06 -0700 Subject: [PATCH 0443/1529] create SingleBlockMatchPatternTemplate --- .../SingleBlockMatchPatternTemplate.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java new file mode 100644 index 000000000..c5719b64d --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.Range; + +public class SingleBlockMatchPatternTemplate implements ObjectTemplate { + @Value("block") + private BlockState block; + + @Value("offset") + private Range offset; + + + @Override + public Pattern get() { + return new MatchPattern(offset, block::matches); + } +} From 63667f256b0f0f6ea77c5f3460aea689082fc60c Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:06:33 -0700 Subject: [PATCH 0444/1529] implement BlockSetMatchPatternTemplate --- .../pattern/BlockSetMatchPatternTemplate.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java new file mode 100644 index 000000000..98bd2da2e --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.feature.locator.config.pattern; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.collection.MaterialSet; + +public class BlockSetMatchPatternTemplate implements ObjectTemplate { + @Value("blocks") + private MaterialSet blocks; + + @Value("offset") + private Range offset; + + @Override + public Pattern get() { + return new MatchPattern(offset, blockState -> blocks.contains(blockState.getBlockType())); + } +} From 07c8bfb29e4145e15ac2634536d5397fbdc28499 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:07:35 -0700 Subject: [PATCH 0445/1529] register patterns --- .../addons/feature/locator/LocatorAddon.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 67e29d7a0..d29e65a58 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -3,6 +3,14 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.AirMatchPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.AndPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.BlockSetMatchPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.NotPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.OrPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.SingleBlockMatchPatternTemplate; +import com.dfsek.terra.addons.feature.locator.config.pattern.SolidMatchPatternTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -23,6 +31,7 @@ import java.util.function.Supplier; public class LocatorAddon extends TerraAddon { public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() {}; + public static final TypeKey>> PATTERN_TOKEN = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -36,6 +45,17 @@ public class LocatorAddon extends TerraAddon { locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); }) + .then(event -> { + CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); + patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new); + patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new); + patternRegistry.register("MATCH", SingleBlockMatchPatternTemplate::new); + patternRegistry.register("MATCH_SET", BlockSetMatchPatternTemplate::new); + + patternRegistry.register("AND", AndPatternTemplate::new); + patternRegistry.register("OR", OrPatternTemplate::new); + patternRegistry.register("NOT", NotPatternTemplate::new); + }) .failThrough(); } } From 36e6d1270d1edf919d139bdca4799ca1dff81503 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:09:32 -0700 Subject: [PATCH 0446/1529] create PatternLocator --- .../locator/locators/PatternLocator.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java new file mode 100644 index 000000000..3f71fe28b --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.world.Column; + +import java.util.ArrayList; +import java.util.List; + +public class PatternLocator implements Locator { + private final Pattern pattern; + private final Range search; + + public PatternLocator(Pattern pattern, Range search) { + this.pattern = pattern; + this.search = search; + } + + @Override + public List getSuitableCoordinates(Column column) { + List locations = new ArrayList<>(); + + for(int y : search) { + if(pattern.matches(y, column)) locations.add(y); + } + + return locations; + } +} From 002b311827d0f71b00c4692581599fc90083f266 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:11:03 -0700 Subject: [PATCH 0447/1529] create PatternLocatorTemplate --- .../config/PatternLocatorTemplate.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java new file mode 100644 index 000000000..cdf926843 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.locators.PatternLocator; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; + +public class PatternLocatorTemplate implements ObjectTemplate { + @Value("range") + private @Meta Range range; + + @Value("pattern") + private @Meta Pattern pattern; + + @Override + public Locator get() { + return new PatternLocator(pattern, range); + } +} From 8ec438ab15a4808ee9398ff719e61feeb4f6535a Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:11:34 -0700 Subject: [PATCH 0448/1529] register pattern locator --- .../com/dfsek/terra/addons/feature/locator/LocatorAddon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index d29e65a58..371fde55b 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.config.PatternLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.pattern.AirMatchPatternTemplate; @@ -44,6 +45,7 @@ public class LocatorAddon extends TerraAddon { CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); + locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); }) .then(event -> { CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); From 782a43ca53dd5b44aec8bd6b90cac63a4d88b2f1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:13:00 -0700 Subject: [PATCH 0449/1529] meta annotate pattern templates --- .../locator/config/pattern/AirMatchPatternTemplate.java | 3 ++- .../feature/locator/config/pattern/AndPatternTemplate.java | 3 ++- .../locator/config/pattern/BlockSetMatchPatternTemplate.java | 5 +++-- .../feature/locator/config/pattern/NotPatternTemplate.java | 3 ++- .../feature/locator/config/pattern/OrPatternTemplate.java | 3 ++- .../config/pattern/SingleBlockMatchPatternTemplate.java | 5 +++-- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java index 79296367e..45324936a 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java @@ -6,11 +6,12 @@ import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; public class AirMatchPatternTemplate implements ObjectTemplate { @Value("offset") - private Range offset; + private @Meta Range offset; @Override diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java index 7d04a9566..af3ae0564 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java @@ -5,12 +5,13 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.config.meta.Meta; import java.util.List; public class AndPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("patterns") - private List patterns; + private @Meta List<@Meta Pattern> patterns; @Override public Pattern get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java index 98bd2da2e..00caa88e3 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java @@ -4,15 +4,16 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; public class BlockSetMatchPatternTemplate implements ObjectTemplate { @Value("blocks") - private MaterialSet blocks; + private @Meta MaterialSet blocks; @Value("offset") - private Range offset; + private @Meta Range offset; @Override public Pattern get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java index 8201774d2..310ccfd02 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java @@ -3,10 +3,11 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.config.meta.Meta; public class NotPatternTemplate implements ObjectTemplate { @Value("pattern") - private Pattern pattern; + private @Meta Pattern pattern; @Override public Pattern get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java index dc648d12e..538629e98 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java @@ -5,12 +5,13 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.config.meta.Meta; import java.util.List; public class OrPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("patterns") - private List patterns; + private @Meta List<@Meta Pattern> patterns; @Override public Pattern get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java index c5719b64d..2dfaba3f9 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java @@ -5,14 +5,15 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; public class SingleBlockMatchPatternTemplate implements ObjectTemplate { @Value("block") - private BlockState block; + private @Meta BlockState block; @Value("offset") - private Range offset; + private @Meta Range offset; @Override From ec19c468a27f972627adfeceb76a2c319733fa07 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:13:35 -0700 Subject: [PATCH 0450/1529] meta annotate distributors --- .../feature/distributor/config/AndDistributorTemplate.java | 3 ++- .../feature/distributor/config/OrDistributorTemplate.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java index a4c71d62b..cbc0c1ba5 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java @@ -4,13 +4,14 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; import java.util.List; public class AndDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("distributors") - private List distributors; + private @Meta List<@Meta Distributor> distributors; @Override diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java index 240bfeb58..292ebffbe 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java @@ -4,13 +4,14 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; import java.util.List; public class OrDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("distributors") - private List distributors; + private @Meta List<@Meta Distributor> distributors; @Override From b3f15b77ee7c7a41fb287fd1451870ffbbb72162 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:14:44 -0700 Subject: [PATCH 0451/1529] register value preprocessor last --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 49ca4fd23..55694470b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -241,10 +241,6 @@ public class ConfigPackImpl implements ConfigPack { main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. - MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); - MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, listPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); @@ -253,6 +249,10 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, stringPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, stringPreprocessor); + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); + Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations.values()) { // Sort the configs From 122e72e842454afe693e332261c3e51526c4588b Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:15:15 -0700 Subject: [PATCH 0452/1529] register string preprocessor first --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 55694470b..58c356520 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -241,14 +241,14 @@ public class ConfigPackImpl implements ConfigPack { main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. - MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, listPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); - MetaStringPreprocessor stringPreprocessor = new MetaStringPreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, stringPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, stringPreprocessor); + MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, listPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); From f00766ea937676eab93ec39dd5104d1920f9f961 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:16:08 -0700 Subject: [PATCH 0453/1529] register map preprocessor --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 58c356520..5802d653d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -42,6 +42,7 @@ import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; +import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; @@ -249,6 +250,10 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, listPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); + MetaMapPreprocessor mapPreprocessor = new MetaMapPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, mapPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, mapPreprocessor); + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); From d09fe9b2a4eb59b77157462af8c9bee3233e080b Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:17:02 -0700 Subject: [PATCH 0454/1529] register number preprocessor --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 5802d653d..2d855f8fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -43,6 +43,7 @@ import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaNumberPreprocessor; import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; @@ -254,6 +255,10 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, mapPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, mapPreprocessor); + MetaNumberPreprocessor numberPreprocessor = new MetaNumberPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, numberPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, numberPreprocessor); + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); From 9d12fe1bf1bb061cc0020573a14a1cf152ba1526 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:23:00 -0700 Subject: [PATCH 0455/1529] singleton range shorthand --- .../java/com/dfsek/terra/config/loaders/RangeLoader.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index 8ab1d7530..a55d934b3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -14,7 +14,12 @@ import java.util.Map; public class RangeLoader implements TypeLoader { @Override public Range load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { - Map map = (Map) o; - return new ConstantRange(map.get("min"), map.get("max")); + if(o instanceof Map) { + Map map = (Map) o; + return new ConstantRange(map.get("min"), map.get("max")); + } else { + int h = configLoader.loadType(Integer.class, o); + return new ConstantRange(h, h+1); + } } } From 90e127a5124314e231d50394b89f3ae4a4bdd1f2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:25:37 -0700 Subject: [PATCH 0456/1529] MetaNumberPreprocessor after MetaValuePreprocessor --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 2d855f8fd..50807e6d2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -255,14 +255,14 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, mapPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, mapPreprocessor); - MetaNumberPreprocessor numberPreprocessor = new MetaNumberPreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, numberPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, numberPreprocessor); - MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); + MetaNumberPreprocessor numberPreprocessor = new MetaNumberPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, numberPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, numberPreprocessor); + Map, List> configs = new HashMap<>(); for(Configuration configuration : configurations.values()) { // Sort the configs From 4ad638983a786d8ed675d1a9ee324d72773aa584 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:39:17 -0700 Subject: [PATCH 0457/1529] fix pattern Y level --- .../addons/feature/locator/patterns/match/MatchPattern.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java index d8021a4b2..f2ec98e89 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java @@ -19,7 +19,7 @@ public class MatchPattern implements Pattern { @Override public boolean matches(int y, Column column) { for(int i : range) { - if(!matches.test(column.getBlock(i))) return false; + if(!matches.test(column.getBlock(y + i))) return false; } return true; } From 926e5a8ca99027639a5f04e17973b85a84b77dd4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 27 Jul 2021 20:48:25 -0700 Subject: [PATCH 0458/1529] remove github workflow --- .github/workflows/build.yml | 40 ------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index a07456fd9..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,40 +0,0 @@ -# This workflow will build a Java project with Gradle -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle - -name: Java CI with Gradle - -on: - push: - tags: - - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - - name: Build Terra - run: gradle shadowJar - - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: Package - path: build/libs - - - name: Publish release - uses: marvinpinto/action-automatic-releases@latest - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - prerelease: false - files: | - build/libs/Terra-*.jar - LICENSE - \ No newline at end of file From 12d78e0b731a9d7e0e16dda1782e70902cb90357 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 07:27:31 -0700 Subject: [PATCH 0459/1529] equation -> expression --- .../config/templates/noise/ExpressionFunctionTemplate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 758320cca..7be032c03 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -30,7 +30,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate vars = new HashMap<>(); - @Value("equation") + @Value("expression") private @Meta String equation; @Value("functions") From e356291bbab175e79558cf1cab23bd107265129e Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 07:27:51 -0700 Subject: [PATCH 0460/1529] expressions -> functions --- .../config/templates/noise/ExpressionFunctionTemplate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 7be032c03..2db025d2f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -37,7 +37,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate functions = new LinkedHashMap<>(); - @Value("expressions") + @Value("functions") @Default private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); From 987de074c68cf41358fab4b55c4b3c08d5d00d21 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 07:28:17 -0700 Subject: [PATCH 0461/1529] refactor MatchPattern --- .../locator/config/pattern/AirMatchPatternTemplate.java | 3 +-- .../locator/config/pattern/BlockSetMatchPatternTemplate.java | 2 +- .../config/pattern/SingleBlockMatchPatternTemplate.java | 2 +- .../locator/config/pattern/SolidMatchPatternTemplate.java | 2 +- .../feature/locator/patterns/{match => }/MatchPattern.java | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) rename common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/{match => }/MatchPattern.java (91%) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java index 45324936a..d54e4c49c 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java @@ -3,8 +3,7 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java index 00caa88e3..83c9e429d 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java index 2dfaba3f9..2a40ce285 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java index 79ecfa497..800def8ef 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.addons.feature.locator.patterns.match.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; import com.dfsek.terra.api.util.Range; public class SolidMatchPatternTemplate implements ObjectTemplate { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java similarity index 91% rename from common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java rename to common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java index f2ec98e89..da85e8605 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/match/MatchPattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.feature.locator.patterns.match; +package com.dfsek.terra.addons.feature.locator.patterns; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.block.state.BlockState; From 220a981b0544f221c9b0c8cda565fea8da962850 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:08:03 -0700 Subject: [PATCH 0462/1529] implement BinaryColumn --- .../api/structure/feature/BinaryColumn.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java new file mode 100644 index 000000000..e2d5ad655 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java @@ -0,0 +1,54 @@ +package com.dfsek.terra.api.structure.feature; + +import java.util.function.IntConsumer; + +public class BinaryColumn { + private final boolean[] data; + private final int minY; + + public BinaryColumn(int minY, int maxY) { + this.minY = minY; + if(maxY <= minY) throw new IllegalArgumentException("Max y must be greater than min y"); + this.data = new boolean[maxY-minY]; + } + + public void set(int y) { + data[y - minY] = true; + } + + public boolean get(int y) { + return data[y - minY]; + } + + public void forEach(IntConsumer consumer) { + for(int y = 0; y < data.length; y++) { + if(data[y]) { + consumer.accept(y - minY); + } + } + } + + public BinaryColumn and(BinaryColumn that) { + if(that.minY != this.minY) throw new IllegalArgumentException("Must share same min Y"); + if(that.data.length != this.data.length) throw new IllegalArgumentException("Must share same max Y"); + BinaryColumn next = new BinaryColumn(minY, data.length - minY); + + for(int i = 0; i < this.data.length; i++) { + next.data[i] = this.data[i] && that.data[i]; + } + + return next; + } + + public BinaryColumn or(BinaryColumn that) { + if(that.minY != this.minY) throw new IllegalArgumentException("Must share same min Y"); + if(that.data.length != this.data.length) throw new IllegalArgumentException("Must share same max Y"); + BinaryColumn next = new BinaryColumn(minY, data.length - minY); + + for(int i = 0; i < this.data.length; i++) { + next.data[i] = this.data[i] || that.data[i]; + } + + return next; + } +} From 7a44b74b616a1b1a3324ae223d11242ba83354d6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:12:38 -0700 Subject: [PATCH 0463/1529] use binarycolumn in locator --- .../addons/feature/locator/locators/PatternLocator.java | 3 ++- .../terra/addons/feature/locator/locators/RandomLocator.java | 3 ++- .../addons/feature/locator/locators/SurfaceLocator.java | 5 ++--- .../java/com/dfsek/terra/api/structure/feature/Locator.java | 4 +--- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java index 3f71fe28b..ec76bdf1e 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.locator.locators; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; @@ -18,7 +19,7 @@ public class PatternLocator implements Locator { } @Override - public List getSuitableCoordinates(Column column) { + public BinaryColumn getSuitableCoordinates(Column column) { List locations = new ArrayList<>(); for(int y : search) { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java index 792e5b88f..6bff33d82 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.feature.locator.locators; +import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; @@ -19,7 +20,7 @@ public class RandomLocator implements Locator { } @Override - public List getSuitableCoordinates(Column column) { + public BinaryColumn getSuitableCoordinates(Column column) { long seed = column.getWorld().getSeed(); seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java index 8bcbde459..2555f2e03 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -2,13 +2,12 @@ package com.dfsek.terra.addons.feature.locator.locators; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; import java.util.Collections; -import java.util.List; public class SurfaceLocator implements Locator { private final Range search; @@ -21,7 +20,7 @@ public class SurfaceLocator implements Locator { } @Override - public List getSuitableCoordinates(Column column) { + public BinaryColumn getSuitableCoordinates(Column column) { for(int y : search) { if(column.getBlock(y).matches(air) && !column.getBlock(y-1).matches(air)) { return Collections.singletonList(y); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java index c49ebd2f5..a16262be7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -2,8 +2,6 @@ package com.dfsek.terra.api.structure.feature; import com.dfsek.terra.api.world.Column; -import java.util.List; - public interface Locator { - List getSuitableCoordinates(Column column); + BinaryColumn getSuitableCoordinates(Column column); } From d43eccc442cb8e12de968c65a3bcb757e1ebb80c Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:16:59 -0700 Subject: [PATCH 0464/1529] column min/max y --- .../terra/addons/generation/feature/ColumnImpl.java | 10 ++++++++++ .../main/java/com/dfsek/terra/api/world/Column.java | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java index ed18a9b96..4aefa0982 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java @@ -34,4 +34,14 @@ public class ColumnImpl implements Column { public World getWorld() { return world; } + + @Override + public int getMinY() { + return world.getMinHeight(); + } + + @Override + public int getMaxY() { + return world.getMaxHeight(); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/Column.java b/common/api/src/main/java/com/dfsek/terra/api/world/Column.java index 7f2ed0b43..c2b27fba9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/Column.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Column.java @@ -13,4 +13,8 @@ public interface Column { BlockState getBlock(int y); World getWorld(); + + int getMinY(); + + int getMaxY(); } From 1624c999accf200365715b647d0b4b04936978bc Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:19:03 -0700 Subject: [PATCH 0465/1529] PatternLocator binarycolumn --- .../terra/addons/feature/locator/locators/PatternLocator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java index ec76bdf1e..64dcc7bbb 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java @@ -20,10 +20,10 @@ public class PatternLocator implements Locator { @Override public BinaryColumn getSuitableCoordinates(Column column) { - List locations = new ArrayList<>(); + BinaryColumn locations = new BinaryColumn(column.getMinY(), column.getMaxY()); for(int y : search) { - if(pattern.matches(y, column)) locations.add(y); + if(pattern.matches(y, column)) locations.set(y); } return locations; From fda44b8e99233967dff7ebc82e01417d88f687b6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:33:36 -0700 Subject: [PATCH 0466/1529] RandomLocator binary column --- .../terra/addons/feature/locator/locators/RandomLocator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java index 6bff33d82..7dd0672b2 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java @@ -29,9 +29,9 @@ public class RandomLocator implements Locator { int size = points.get(r); - List results = new ArrayList<>(size); + BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); for(int i = 0; i < size; i++) { - results.set(i, height.get(r)); + results.set(height.get(r)); } return results; From 19861ec27b033c4a735fe347422f118e33f5122b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:40:48 -0700 Subject: [PATCH 0467/1529] binary column SurfaceLocator --- .../addons/feature/locator/locators/SurfaceLocator.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java index 2555f2e03..85da18385 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -21,11 +21,13 @@ public class SurfaceLocator implements Locator { @Override public BinaryColumn getSuitableCoordinates(Column column) { + BinaryColumn location = new BinaryColumn(column.getMinY(), column.getMaxY()); for(int y : search) { if(column.getBlock(y).matches(air) && !column.getBlock(y-1).matches(air)) { - return Collections.singletonList(y); + location.set(y); + return location; } } - return Collections.emptyList(); + return location; } } From 26152ec94e8d8f19611d867f95cacdb50aab6d17 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 08:58:10 -0700 Subject: [PATCH 0468/1529] add boolean methods to Locator --- .../com/dfsek/terra/api/structure/feature/Locator.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java index a16262be7..a6e07420e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -4,4 +4,12 @@ import com.dfsek.terra.api.world.Column; public interface Locator { BinaryColumn getSuitableCoordinates(Column column); + + default Locator and(Locator that) { + return column -> this.getSuitableCoordinates(column).and(that.getSuitableCoordinates(column)); + } + + default Locator or(Locator that) { + return column -> this.getSuitableCoordinates(column).or(that.getSuitableCoordinates(column)); + } } From 12c068b2520d39fb867327a5cd392c5641665a61 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:02:37 -0700 Subject: [PATCH 0469/1529] AndLocatorTemplate --- .../locator/config/AndLocatorTemplate.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java new file mode 100644 index 000000000..a26486370 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.structure.feature.Locator; + +import java.util.List; + +public class AndLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("locators") + private @Meta List<@Meta Locator> locators; + + @Override + public Locator get() { + Locator current = locators.remove(0); + while(!locators.isEmpty()) { + current = current.and(locators.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); + return true; + } +} From d6b36f4d3fada0d19e60e75588fa04fc76fe6d21 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:03:08 -0700 Subject: [PATCH 0470/1529] OrLocatorTemplate --- .../locator/config/OrLocatorTemplate.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java new file mode 100644 index 000000000..2ea4c6641 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.structure.feature.Locator; + +import java.util.List; + +public class OrLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("locators") + private @Meta List<@Meta Locator> locators; + + @Override + public Locator get() { + Locator current = locators.remove(0); + while(!locators.isEmpty()) { + current = current.or(locators.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); + return true; + } +} From cefa4369f2171d05d836a9b79d3166de702837c1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:04:10 -0700 Subject: [PATCH 0471/1529] register and/or locator templates --- .../com/dfsek/terra/addons/feature/locator/LocatorAddon.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 371fde55b..4755cd02b 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.config.AndLocatorTemplate; +import com.dfsek.terra.addons.feature.locator.config.OrLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.PatternLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; @@ -46,6 +48,9 @@ public class LocatorAddon extends TerraAddon { locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); + + locatorRegistry.register("AND", AndLocatorTemplate::new); + locatorRegistry.register("OR", OrLocatorTemplate::new); }) .then(event -> { CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); From 1522e6b57dcdd6af8ec6170ca9b613c16d1d818c Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:12:22 -0700 Subject: [PATCH 0472/1529] implement NoiseLocator --- .../locator/locators/NoiseLocator.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java new file mode 100644 index 000000000..addeaa10b --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.BinaryColumn; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.world.Column; +import net.jafama.FastMath; + +import java.util.List; + +public class NoiseLocator implements Locator { + private final List samplers; + + public NoiseLocator(List samplers) { + this.samplers = samplers; + } + + @Override + public BinaryColumn getSuitableCoordinates(Column column) { + BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); + + long seed = column.getWorld().getSeed(); + samplers.forEach(sampler -> { + int y = FastMath.floorToInt(sampler.getNoiseSeeded(seed, column.getX(), column.getX())); + if(y >= column.getMaxY() || y < column.getMinY()) return; + results.set(y); + }); + + return results; + } +} From dd0c6b557d9af324b4e1cd5e77498aff72d240b6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:14:37 -0700 Subject: [PATCH 0473/1529] implement NoiseLocatorTemplate --- .../locator/config/NoiseLocatorTemplate.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java new file mode 100644 index 000000000..835dbdd34 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.feature.locator.locators.NoiseLocator; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.Locator; + +import java.util.List; + +public class NoiseLocatorTemplate implements ObjectTemplate { + @Value("samplers") + private @Meta List<@Meta NoiseSampler> samplers; + + @Override + public Locator get() { + return new NoiseLocator(samplers); + } +} From 6df5aa112a94144baa1c942897e38ea0c2c8e46d Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 28 Jul 2021 09:15:02 -0700 Subject: [PATCH 0474/1529] register noise locator --- .../com/dfsek/terra/addons/feature/locator/LocatorAddon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 4755cd02b..46a9f62e4 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.config.AndLocatorTemplate; +import com.dfsek.terra.addons.feature.locator.config.NoiseLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.OrLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.PatternLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; @@ -48,6 +49,7 @@ public class LocatorAddon extends TerraAddon { locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); + locatorRegistry.register("NOISE", NoiseLocatorTemplate::new); locatorRegistry.register("AND", AndLocatorTemplate::new); locatorRegistry.register("OR", OrLocatorTemplate::new); From 9d24e8a282673f4b55e5bc0fb0bc8a8060263c92 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:23:05 -0700 Subject: [PATCH 0475/1529] remove unneeded TypeKeys --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index e1bec650b..b5e06c0fe 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -39,15 +39,12 @@ public class BiomePipelineAddon extends TerraAddon { @Inject private TerraPlugin main; - public static final TypeKey BIOME_PROVIDER_BUILDER_TOKEN = new TypeKey<>(){}; - public static final TypeKey BIOME_SOURCE_BUILDER_TOKEN = new TypeKey<>(){}; - @Override public void initialize() { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(BIOME_SOURCE_BUILDER_TOKEN.getType(), new SourceLoader()) + .then(event -> event.getPack().applyLoader(BiomeSource.class, new SourceLoader()) .applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) @@ -59,7 +56,7 @@ public class BiomePipelineAddon extends TerraAddon { .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderLoader()) + .applyLoader(BiomeProvider.class, new BiomeProviderLoader()) .applyLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object))) .failThrough(); } From fa8a66833ea5cf982c2350009e88cfffd4f1840b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:27:00 -0700 Subject: [PATCH 0476/1529] register biome sources --- .../addons/biome/pipeline/BiomePipelineAddon.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index b5e06c0fe..c27d0145e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.biome.pipeline; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; @@ -28,14 +29,20 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import java.util.function.Supplier; + @Addon("biome-provider-pipeline") @Author("Terra") @Version("1.0.0") public class BiomePipelineAddon extends TerraAddon { + + public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() {}; + @Inject private TerraPlugin main; @@ -44,11 +51,9 @@ public class BiomePipelineAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(BiomeSource.class, new SourceLoader()) - .applyLoader(Stage.class, new StageLoader()) + .then(event -> event.getPack().applyLoader(Stage.class, new StageLoader()) .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(NoiseSource.class, NoiseSourceTemplate::new) .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) @@ -58,6 +63,10 @@ public class BiomePipelineAddon extends TerraAddon { .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BiomeProvider.class, new BiomeProviderLoader()) .applyLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object))) + .then(event -> { + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); + sourceRegistry.register("NOISE", NoiseSourceTemplate::new); + }) .failThrough(); } } From 13ab02984b9f045d8885121f022891f83e93ef6b Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:27:30 -0700 Subject: [PATCH 0477/1529] remove SourceLoader --- .../biome/pipeline/BiomePipelineAddon.java | 2 -- .../biome/pipeline/config/SourceLoader.java | 25 ------------------- 2 files changed, 27 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index c27d0145e..572e308ce 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -5,7 +5,6 @@ import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.SourceLoader; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageLoader; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; @@ -18,7 +17,6 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.TerraPlugin; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java deleted file mode 100644 index 4a3aa65fd..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceLoader.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - -import java.lang.reflect.AnnotatedType; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class SourceLoader implements TypeLoader { - @Override - public BiomeSource load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - Map source = (Map) c; - - BiomeSource.Type type = loader.loadType(BiomeSource.Type.class, source.get("type")); - - if(type == BiomeSource.Type.NOISE) { - return loader.loadType(NoiseSource.class, source); - } - throw new LoadException("No such loader type: " + type); - } -} From 6da14f58dfced3168242f6bab12f16c39d483bc5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:28:09 -0700 Subject: [PATCH 0478/1529] remove BiomeSource.Type --- .../dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java | 3 +-- .../dfsek/terra/addons/biome/pipeline/source/BiomeSource.java | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 572e308ce..cc373bf09 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -59,8 +59,7 @@ public class BiomePipelineAddon extends TerraAddon { .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BiomeProvider.class, new BiomeProviderLoader()) - .applyLoader(BiomeSource.Type.class, (t, object, cf) -> BiomeSource.Type.valueOf((String) object))) + .applyLoader(BiomeProvider.class, new BiomeProviderLoader())) .then(event -> { CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); sourceRegistry.register("NOISE", NoiseSourceTemplate::new); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java index fc8df18b0..f1cf927c3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java @@ -4,8 +4,4 @@ import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeSource { TerraBiome getBiome(double x, double z, long seed); - - enum Type { - NOISE - } } From d5fd6531308e2640aff1d543839dcbf3f080a79a Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:38:41 -0700 Subject: [PATCH 0479/1529] register stages --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index cc373bf09..382b45f1b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -41,6 +41,7 @@ public class BiomePipelineAddon extends TerraAddon { public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() {}; + public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -49,8 +50,7 @@ public class BiomePipelineAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(Stage.class, new StageLoader()) - .applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) + .then(event -> event.getPack().applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) @@ -64,6 +64,10 @@ public class BiomePipelineAddon extends TerraAddon { CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); sourceRegistry.register("NOISE", NoiseSourceTemplate::new); }) + .then(event -> { + CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); + stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); + }) .failThrough(); } } From dd0ef7ea45b8f75b63d50bed99d8dfce501c9e10 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:47:56 -0700 Subject: [PATCH 0480/1529] register all stage types --- .../biome/pipeline/BiomePipelineAddon.java | 16 +++++++--------- .../pipeline/config/stage/StageTemplate.java | 2 ++ .../stage/mutator/BorderListMutatorTemplate.java | 10 ++++++---- .../stage/mutator/BorderMutatorTemplate.java | 9 ++++++--- .../stage/mutator/MutatorStageTemplate.java | 16 ---------------- .../mutator/ReplaceListMutatorTemplate.java | 9 ++++++--- .../stage/mutator/ReplaceMutatorTemplate.java | 9 ++++++--- .../stage/mutator/SmoothMutatorTemplate.java | 9 ++++++--- 8 files changed, 39 insertions(+), 41 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 382b45f1b..032f739a8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -6,6 +6,7 @@ import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageLoader; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; @@ -50,15 +51,7 @@ public class BiomePipelineAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o)) - .applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o)) - .applyLoader(ReplaceMutator.class, ReplaceMutatorTemplate::new) - .applyLoader(BorderMutator.class, BorderMutatorTemplate::new) - .applyLoader(BorderListMutator.class, BorderListMutatorTemplate::new) - .applyLoader(ReplaceListMutator.class, ReplaceListMutatorTemplate::new) - .applyLoader(SmoothMutator.class, SmoothMutatorTemplate::new) - .applyLoader(ExpanderStage.class, ExpanderStageTemplate::new) - .applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) + .then(event -> event.getPack().applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) .applyLoader(BiomeProvider.class, new BiomeProviderLoader())) .then(event -> { CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); @@ -67,6 +60,11 @@ public class BiomePipelineAddon extends TerraAddon { .then(event -> { CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); + stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); + stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); + stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); + stageRegistry.register("BORDER", BorderMutatorTemplate::new); + stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); }) .failThrough(); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index b7451b871..4aba4990f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -2,7 +2,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index 2538c9f9d..a65e181d6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -10,7 +12,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Map; @SuppressWarnings("unused") -public class BorderListMutatorTemplate extends MutatorStageTemplate { +public class BorderListMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -25,7 +27,7 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { @Override - public BiomeMutator get() { - return new BorderListMutator(replace, from, defaultReplace, noise, defaultTo); + public Stage get() { + return new MutatorStage(new BorderListMutator(replace, from, defaultReplace, noise, defaultTo)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index be8676afa..786b54dc8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -2,13 +2,16 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") -public class BorderMutatorTemplate extends MutatorStageTemplate { +public class BorderMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -19,7 +22,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private @Meta ProbabilityCollection<@Meta TerraBiome> to; @Override - public BiomeMutator get() { - return new BorderMutator(from, replace, noise, to); + public Stage get() { + return new MutatorStage(new BorderMutator(from, replace, noise, to)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java deleted file mode 100644 index d19357f16..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/MutatorStageTemplate.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - -public abstract class MutatorStageTemplate implements ObjectTemplate { - @Value("noise") - protected @Meta NoiseSampler noise; - - @Override - public abstract BiomeMutator get(); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index 6f23b76b7..bdd22ade9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -2,7 +2,10 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -10,7 +13,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Map; @SuppressWarnings("unused") -public class ReplaceListMutatorTemplate extends MutatorStageTemplate { +public class ReplaceListMutatorTemplate extends StageTemplate { @Value("default-from") private @Meta String defaultFrom; @@ -21,7 +24,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; @Override - public BiomeMutator get() { - return new ReplaceListMutator(replace, defaultFrom, defaultTo, noise); + public Stage get() { + return new MutatorStage(new ReplaceListMutator(replace, defaultFrom, defaultTo, noise)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index 9adb4aab5..ea59bd3d8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -2,13 +2,16 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; @SuppressWarnings("unused") -public class ReplaceMutatorTemplate extends MutatorStageTemplate { +public class ReplaceMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; @@ -16,7 +19,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private @Meta ProbabilityCollection<@Meta TerraBiome> to; @Override - public BiomeMutator get() { - return new ReplaceMutator(from, to, noise); + public Stage get() { + return new MutatorStage(new ReplaceMutator(from, to, noise)); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index 20f98e993..77e23c100 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -1,11 +1,14 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; +import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -public class SmoothMutatorTemplate extends MutatorStageTemplate { +public class SmoothMutatorTemplate extends StageTemplate { @Override - public BiomeMutator get() { - return new SmoothMutator(noise); + public Stage get() { + return new MutatorStage(new SmoothMutator(noise)); } } From 276c78a329b8e2eaf1f240dc75f830547ff6f8c3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:48:43 -0700 Subject: [PATCH 0481/1529] remove StageLoader --- .../biome/pipeline/BiomePipelineAddon.java | 9 --- .../pipeline/config/stage/StageLoader.java | 63 ------------------- 2 files changed, 72 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 032f739a8..9d7cb870d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -5,21 +5,12 @@ import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageLoader; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java deleted file mode 100644 index 6805f4fcb..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageLoader.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; -import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; - -import java.lang.reflect.AnnotatedType; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class StageLoader implements TypeLoader { - @Override - public Stage load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - Map raw = (Map) c; - - if(raw.size() != 1) throw new LoadException("Illegal stage map size: " + raw.size()); - - Map.Entry entry = null; - - for(Map.Entry e : raw.entrySet()) { - entry = e; - } - - Map mutator = (Map) entry.getValue(); - - if(entry.getKey().equals("expand")) { - ExpanderStage.Type stageType = loader.loadType(ExpanderStage.Type.class, mutator.get("type")); - if(stageType.equals(ExpanderStage.Type.FRACTAL)) { - return loader.loadType(ExpanderStage.class, mutator); - } else throw new LoadException("No such expander \"" + stageType + "\""); - } else if(entry.getKey().equals("mutate")) { - switch(loader.loadType(MutatorStage.Type.class, mutator.get("type"))) { - case SMOOTH: - return new MutatorStage(loader.loadType(SmoothMutator.class, mutator)); - case REPLACE: - return new MutatorStage(loader.loadType(ReplaceMutator.class, mutator)); - case REPLACE_LIST: - return new MutatorStage(loader.loadType(ReplaceListMutator.class, mutator)); - case BORDER: - return new MutatorStage(loader.loadType(BorderMutator.class, mutator)); - case BORDER_LIST: - return new MutatorStage(loader.loadType(BorderListMutator.class, mutator)); - default: - throw new LoadException("No such mutator type \"" + mutator.get("type")); - } - } - throw new LoadException("No such mutator \"" + entry.getKey() + "\""); - } -} From 480e41b99a6fa7a7f9d2ec8bcec161f8674c285a Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:56:21 -0700 Subject: [PATCH 0482/1529] register biome provider types --- .../terra/addons/biome/pipeline/BiomePipelineAddon.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 9d7cb870d..539723a67 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -34,6 +34,7 @@ public class BiomePipelineAddon extends TerraAddon { public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() {}; public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() {}; + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; @Inject private TerraPlugin main; @@ -42,8 +43,10 @@ public class BiomePipelineAddon extends TerraAddon { main.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(BiomePipelineProvider.class, () -> new BiomePipelineTemplate(main)) - .applyLoader(BiomeProvider.class, new BiomeProviderLoader())) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); + providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(main)); + }) .then(event -> { CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); sourceRegistry.register("NOISE", NoiseSourceTemplate::new); From 1c5945706febed02b1b0fa8ddbcb243ef250cfe4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 07:59:13 -0700 Subject: [PATCH 0483/1529] implement single biome provider addon --- .../single/SingleBiomeProviderAddon.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java new file mode 100644 index 000000000..704a20d28 --- /dev/null +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.addons.biome.single; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; +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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.function.Supplier; + +@Addon("biome-provider-single") +@Author("Terra") +@Version("1.0.0") +public class SingleBiomeProviderAddon extends TerraAddon { + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; + + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); + providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); + }) + .failThrough(); + } +} From a2d8a5a259dd9ec98c19728ccb7b52a0adc9be44 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 08:03:22 -0700 Subject: [PATCH 0484/1529] implement ImageBiomeProviderAddon --- .../biome/image/ImageBiomeProviderAddon.java | 39 +++++++++++++++++++ .../biome/image/ImageProviderTemplate.java | 12 ++++-- 2 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java new file mode 100644 index 000000000..566abff80 --- /dev/null +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.biome.image; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; +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.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.function.Supplier; + +@Addon("biome-provider-image") +@Author("Terra") +@Version("1.0.0") +public class ImageBiomeProviderAddon extends TerraAddon { + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; + + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); + providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); + }) + .failThrough(); + } +} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index f0388a941..70ad46589 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.biome.image; +import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -8,7 +10,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; import java.util.HashSet; -public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { +public class ImageProviderTemplate implements ObjectTemplate { private final Registry biomes; @Value("image.name") private BufferedImage image; @@ -16,14 +18,16 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { @Value("image.align") private ImageBiomeProvider.Align align; - private int resolution; + @Value("resolution") + @Default + private int resolution = 1; public ImageProviderTemplate(Registry set) { this.biomes = set; } - //@Override - public BiomeProvider build() { + @Override + public BiomeProvider get() { return new ImageBiomeProvider(new HashSet<>(biomes.entries()), image, resolution, align); } } From 43874521dbc6d9760c46e86017ee5399d375fb58 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 08:22:41 -0700 Subject: [PATCH 0485/1529] remove jcenter from buildscripts --- buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt | 1 - platforms/forge/build.gradle.kts.old | 2 -- platforms/sponge/build.gradle.kts.old | 1 - 3 files changed, 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index c9e7b27ad..5dbb19755 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -23,7 +23,6 @@ fun Project.configureDependencies() { maven { url = uri("https://papermc.io/repo/repository/maven-public/") } maven { url = uri("https://maven.fabricmc.net/") } gradlePluginPortal() - jcenter() mavenCentral() } diff --git a/platforms/forge/build.gradle.kts.old b/platforms/forge/build.gradle.kts.old index b83a95c37..b92c19880 100644 --- a/platforms/forge/build.gradle.kts.old +++ b/platforms/forge/build.gradle.kts.old @@ -7,7 +7,6 @@ import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace buildscript { repositories { maven { url = uri("https://files.minecraftforge.net/maven") } - jcenter() mavenCentral() maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } } @@ -32,7 +31,6 @@ configureCommon() repositories { maven { url = uri("https://files.minecraftforge.net/maven") } - jcenter() mavenCentral() maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } } diff --git a/platforms/sponge/build.gradle.kts.old b/platforms/sponge/build.gradle.kts.old index 412f28650..bf613ec9a 100644 --- a/platforms/sponge/build.gradle.kts.old +++ b/platforms/sponge/build.gradle.kts.old @@ -9,7 +9,6 @@ configureCommon() repositories { mavenCentral() - jcenter() } dependencies { From a21eb2c3bac54e83a2a443c12961ccc816cb6bff Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 08:24:10 -0700 Subject: [PATCH 0486/1529] fix deprecation warning on bukkit --- platforms/bukkit/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 2e4d704c3..ab2532deb 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -143,7 +143,7 @@ task(name = "runPaper") { copyTerra("paper") } - main = "io.papermc.paperclip.Paperclip" + mainClass.set("io.papermc.paperclip.Paperclip") jvmArgs = jvmFlags maxHeapSize = testMem minHeapSize = testMem @@ -161,7 +161,7 @@ task(name = "runPurpur") { copyTerra("purpur") } - main = "io.papermc.paperclip.Paperclip" + mainClass.set("io.papermc.paperclip.Paperclip") jvmArgs = jvmFlags maxHeapSize = testMem minHeapSize = testMem From 102828039def9a286e823a8568db2773c34b0a07 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 09:32:41 -0700 Subject: [PATCH 0487/1529] split up bukkit terraplugin impl --- .../com/dfsek/terra/bukkit/BukkitAddon.java | 23 +++ .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 148 ++---------------- .../dfsek/terra/bukkit/TerraPluginImpl.java | 90 +++++++++++ 3 files changed, 124 insertions(+), 137 deletions(-) create mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java create mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java new file mode 100644 index 000000000..0648a2a6e --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java @@ -0,0 +1,23 @@ +package com.dfsek.terra.bukkit; + +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; + +@Addon("Terra-Bukkit") +@Version("1.0.0") +@Author("Terra") +final class BukkitAddon extends TerraAddon { + private final TerraPlugin main; + + public BukkitAddon(TerraPlugin main) { + this.main = main; + } + + @Override + public void initialize() { + + } +} 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 f1e51d032..200cfa7ac 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 @@ -61,7 +61,7 @@ import java.util.Map; import java.util.Objects; -public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { +public class TerraBukkitPlugin extends JavaPlugin { public static final BukkitVersion BUKKIT_VERSION; static { @@ -74,57 +74,9 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { else BUKKIT_VERSION = BukkitVersion.UNKNOWN; } + private final TerraPluginImpl terraPlugin = new TerraPluginImpl(this); private final Map generatorMap = new HashMap<>(); private final Map worlds = new HashMap<>(); - private final Profiler profiler = new ProfilerImpl(); - private final ConfigRegistry registry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistryImpl<>(registry); - private final PluginConfig config = new PluginConfigImpl(); - private final ItemHandle itemHandle = new BukkitItemHandle(); - private final GenericLoaders genericLoaders = new GenericLoaders(this); - private final EventManager eventManager = new EventManagerImpl(this); - private final AddonRegistry addonRegistry = new AddonRegistry(new BukkitAddon(this), this); - private final LockedRegistryImpl addonLockedRegistry = new LockedRegistryImpl<>(addonRegistry); - private WorldHandle handle = new BukkitWorldHandle(); - private DebugLogger debugLogger; - - public boolean reload() { - config.load(this); - LangUtil.load(config.getLanguage(), this); // Load language. - boolean succeed = registry.loadAll(this); - - return succeed; - } - - @Override - public ItemHandle getItemHandle() { - return itemHandle; - } - - @Override - public String platformName() { - return "Bukkit"; - } - - @Override - public DebugLogger getDebugLogger() { - return debugLogger; - } - - @Override - public EventManager getEventManager() { - return eventManager; - } - - @Override - public void runPossiblyUnsafeTask(Runnable task) { - Bukkit.getScheduler().runTask(this, task); - } - - @Override - public Profiler getProfiler() { - return profiler; - } @Override public void onDisable() { @@ -133,35 +85,17 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { @Override public void onEnable() { - debugLogger = new DebugLogger(logger()); - getLogger().info("Running on version " + BUKKIT_VERSION); if(BUKKIT_VERSION == BukkitVersion.UNKNOWN) { getLogger().warning("Terra is running on an unknown Bukkit version. Proceed with caution."); } - saveDefaultConfig(); Metrics metrics = new Metrics(this, 9017); // Set up bStats. - metrics.addCustomChart(new Metrics.SingleLineChart("worlds", worldMap::size)); // World number chart. - - config.load(this); // Load master config.yml - LangUtil.load(config.getLanguage(), this); // Load language. - - debugLogger.setDebug(config.isDebugLogging()); - if(config.isDebugProfiler()) profiler.start(); - - if(!addonRegistry.loadAll()) { - getLogger().severe("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); - Bukkit.getPluginManager().disablePlugin(this); - return; - } - - registry.loadAll(this); // Load all config packs. PluginCommand c = Objects.requireNonNull(getCommand("terra")); - CommandManager manager = new TerraCommandManager(this); + CommandManager manager = new TerraCommandManager(terraPlugin); try { @@ -169,9 +103,9 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { manager.register("save-data", SaveDataCommand.class); manager.register("fix-chunk", FixChunkCommand.class); } catch(MalformedCommandException e) { // This should never happen. - logger().severe("Errors occurred while registering commands."); + terraPlugin.logger().severe("Errors occurred while registering commands."); e.printStackTrace(); - logger().severe("Please report this to Terra."); + terraPlugin.logger().severe("Please report this to Terra."); Bukkit.getPluginManager().disablePlugin(this); return; } @@ -182,15 +116,15 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { c.setTabCompleter(command); - long save = config.getDataSaveInterval(); + long save = terraPlugin.getTerraConfig().getDataSaveInterval(); Bukkit.getScheduler().runTaskTimerAsynchronously(this, BukkitChunkGeneratorWrapper::saveAll, save, save); // Schedule population data saving - Bukkit.getPluginManager().registerEvents(new CommonListener(this), this); // Register master event listener + Bukkit.getPluginManager().registerEvents(new CommonListener(terraPlugin), this); // Register master event listener PaperUtil.checkPaper(this); if(PaperLib.isPaper()) { try { Class.forName("io.papermc.paper.event.world.StructureLocateEvent"); // Check if user is on Paper version with event. - Bukkit.getPluginManager().registerEvents(new PaperListener(this), this); // Register Paper events. + Bukkit.getPluginManager().registerEvents(new PaperListener(terraPlugin), this); // Register Paper events. } catch(ClassNotFoundException e) { registerSpigotEvents(true); // Outdated Paper version. } @@ -218,64 +152,19 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { getLogger().severe("Find out more at https://papermc.io/"); } - Bukkit.getPluginManager().registerEvents(new SpigotListener(this), this); // Register Spigot event listener + Bukkit.getPluginManager().registerEvents(new SpigotListener(terraPlugin), this); // Register Spigot event listener } @Override public @Nullable ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) { return new BukkitChunkGeneratorWrapper(generatorMap.computeIfAbsent(worldName, name -> { - if(!registry.contains(id)) throw new IllegalArgumentException("No such config pack \"" + id + "\""); - ConfigPack pack = registry.get(id); + if(!terraPlugin.getConfigRegistry().contains(id)) throw new IllegalArgumentException("No such config pack \"" + id + "\""); + ConfigPack pack = terraPlugin.getConfigRegistry().get(id); worlds.put(worldName, pack); return pack.getGeneratorProvider().newInstance(pack); })); } - @Override - public Language getLanguage() { - return LangUtil.getLanguage(); - } - - public CheckedRegistry getConfigRegistry() { - return checkedRegistry; - } - - @Override - public Logger logger() { - return new JavaLogger(getLogger()); - } - - @NotNull - @Override - public PluginConfig getTerraConfig() { - return config; - } - - @Override - public WorldHandle getWorldHandle() { - return handle; - } - - - @Override - public void register(TypeRegistry registry) { - registry - .registerLoader(BlockState.class, (t, o, l) -> handle.createBlockData((String) o)) - .registerLoader(Biome.class, (t, o, l) -> parseBiome((String) o)) - .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); - genericLoaders.register(registry); - } - - private BukkitBiome parseBiome(String id) throws LoadException { - if(!id.startsWith("minecraft:")) throw new LoadException("Invalid biome identifier " + id); - return new BukkitBiome(org.bukkit.block.Biome.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); - } - - @Override - public Registry getAddons() { - return addonLockedRegistry; - } - public enum BukkitVersion { V1_13(13), @@ -306,19 +195,4 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { } } - @Addon("Terra-Bukkit") - @Version("1.0.0") - @Author("Terra") - private static final class BukkitAddon extends TerraAddon { - private final TerraPlugin main; - - private BukkitAddon(TerraPlugin main) { - this.main = main; - } - - @Override - public void initialize() { - - } - } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java new file mode 100644 index 000000000..140ffb4e2 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java @@ -0,0 +1,90 @@ +package com.dfsek.terra.bukkit; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.AbstractTerraPlugin; +import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.bukkit.handles.BukkitItemHandle; +import com.dfsek.terra.bukkit.handles.BukkitWorldHandle; +import com.dfsek.terra.bukkit.world.BukkitBiome; +import com.dfsek.terra.util.logging.JavaLogger; +import org.bukkit.Bukkit; +import org.bukkit.entity.EntityType; + +import java.io.File; +import java.util.Locale; +import java.util.Optional; + +public class TerraPluginImpl extends AbstractTerraPlugin { + private final ItemHandle itemHandle = new BukkitItemHandle(); + + private WorldHandle handle = new BukkitWorldHandle(); + + private final TerraBukkitPlugin plugin; + + public TerraPluginImpl(TerraBukkitPlugin plugin) { + this.plugin = plugin; + load(); + } + + + @Override + public WorldHandle getWorldHandle() { + return handle; + } + + @Override + public File getDataFolder() { + return plugin.getDataFolder(); + } + + @Override + public boolean reload() { + return false; + } + + @Override + protected Optional getPlatformAddon() { + return Optional.of(new BukkitAddon(this)); + } + + @Override + public ItemHandle getItemHandle() { + return itemHandle; + } + + @Override + public String platformName() { + return "Bukkit"; + } + + @Override + protected Logger createLogger() { + return new JavaLogger(plugin.getLogger()); + } + + @Override + public void register(TypeRegistry registry) { + super.register(registry); + registry + .registerLoader(BlockState.class, (t, o, l) -> handle.createBlockData((String) o)) + .registerLoader(Biome.class, (t, o, l) -> parseBiome((String) o)) + .registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o)); + + } + + private BukkitBiome parseBiome(String id) throws LoadException { + if(!id.startsWith("minecraft:")) throw new LoadException("Invalid biome identifier " + id); + return new BukkitBiome(org.bukkit.block.Biome.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); + } + + @Override + public void runPossiblyUnsafeTask(Runnable task) { + Bukkit.getScheduler().runTask(plugin, task); + } +} From 0b0742d850e83be58cd0cdbfafbe30646975fcc7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 10:44:49 -0700 Subject: [PATCH 0488/1529] compile bukkit --- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 34 ------------------- .../BukkitChunkGeneratorWrapper.java | 12 ++++++- .../bukkit/handles/BukkitWorldHandle.java | 11 ++++++ .../bukkit/listeners/CommonListener.java | 1 + .../terra/bukkit/listeners/PaperListener.java | 8 ++--- .../bukkit/listeners/SpigotListener.java | 10 ++---- .../dfsek/terra/bukkit/world/BukkitWorld.java | 19 +++++++++++ .../world/block/data/BukkitBlockState.java | 16 +++++++++ 8 files changed, 62 insertions(+), 49 deletions(-) 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 200cfa7ac..a4394e3a8 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 @@ -1,62 +1,28 @@ package com.dfsek.terra.bukkit; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.Logger; -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.block.state.BlockState; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.PluginConfig; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.profiler.Profiler; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; import com.dfsek.terra.bukkit.command.SaveDataCommand; import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; -import com.dfsek.terra.bukkit.handles.BukkitItemHandle; -import com.dfsek.terra.bukkit.handles.BukkitWorldHandle; import com.dfsek.terra.bukkit.listeners.CommonListener; import com.dfsek.terra.bukkit.listeners.PaperListener; import com.dfsek.terra.bukkit.listeners.SpigotListener; import com.dfsek.terra.bukkit.util.PaperUtil; -import com.dfsek.terra.bukkit.world.BukkitBiome; 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; -import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.profiler.ProfilerImpl; -import com.dfsek.terra.registry.CheckedRegistryImpl; -import com.dfsek.terra.registry.LockedRegistryImpl; -import com.dfsek.terra.registry.master.AddonRegistry; -import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.util.logging.DebugLogger; -import com.dfsek.terra.util.logging.JavaLogger; import io.papermc.lib.PaperLib; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.command.PluginCommand; -import org.bukkit.entity.EntityType; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.Locale; import java.util.Map; import java.util.Objects; 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 ec5dcb422..dc21682ac 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 @@ -1,12 +1,14 @@ package com.dfsek.terra.bukkit.generator; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.ChunkGenerator; 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.bukkit.world.BukkitWorld; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; @@ -31,11 +33,12 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener private boolean needsLoad = true; + private WorldConfig worldConfig; + public BukkitChunkGeneratorWrapper(ChunkGenerator delegate) { this.delegate = delegate; this.main = delegate.getMain(); this.popMan = new PopulationManager(delegate, main); - } @@ -67,12 +70,19 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener @Override public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) { + if(this.worldConfig == null) { + this.worldConfig = delegate.getConfigPack().toWorldConfig(BukkitAdapter.adapt(world)); + } com.dfsek.terra.api.world.World bukkitWorld = BukkitAdapter.adapt(world); if(needsLoad) load(bukkitWorld); // Load population data for world. delegate.generateBiomes(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome)); return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitChunkData(createChunkData(world))).getHandle(); } + public WorldConfig getWorldConfig() { + return worldConfig; + } + @Override public @NotNull List getDefaultPopulators(@NotNull World world) { return Arrays.asList(popMan, new BukkitPopulatorWrapper(delegate)); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 097302662..62131d9f1 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -11,8 +11,14 @@ import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.Bukkit; +import org.bukkit.Material; public class BukkitWorldHandle implements WorldHandle { + private final BlockState air; + + public BukkitWorldHandle() { + this.air = BukkitBlockState.newInstance(Material.AIR.createBlockData()); + } @Override public BlockState createBlockData(String data) { @@ -20,6 +26,11 @@ public class BukkitWorldHandle implements WorldHandle { return BukkitBlockState.newInstance(bukkitData); } + @Override + public BlockState air() { + return air; + } + @Override public EntityType getEntity(String id) { return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id)); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 4726f0836..70f4c8485 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.World; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 82a410479..84aed6cbd 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,11 +1,6 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.world.population.items.TerraStructure; import io.papermc.paper.event.world.StructureLocateEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -19,7 +14,7 @@ public class PaperListener implements Listener { @EventHandler public void onStructureLocate(StructureLocateEvent e) { - String name = "minecraft:" + e.getType().getName(); + /*String name = "minecraft:" + e.getType().getName(); main.getDebugLogger().info("Overriding structure location for \"" + name + "\""); World w = BukkitAdapter.adapt(e.getWorld()); ConfiguredStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getLocatable().get(name)); @@ -34,5 +29,6 @@ public class PaperListener implements Listener { e.setResult(e.getOrigin()); main.logger().warning("No overrides are defined for \"" + name + "\". Locating this structure will NOT work properly!"); } + */ } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index c82051162..88f456e3e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,14 +1,6 @@ package com.dfsek.terra.bukkit.listeners; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.world.population.items.TerraStructure; -import org.bukkit.entity.EnderSignal; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -32,6 +24,7 @@ public class SpigotListener implements Listener { @EventHandler(priority = EventPriority.NORMAL) public void onEnderEye(EntitySpawnEvent e) { + /* Entity entity = e.getEntity(); if(e.getEntityType().equals(EntityType.ENDER_SIGNAL)) { main.getDebugLogger().info("Detected Ender Signal..."); @@ -49,6 +42,7 @@ public class SpigotListener implements Listener { } else main.logger().warning("No overrides are defined for Strongholds. Ender Signals will not work correctly."); } + */ } @EventHandler diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 77aa58976..a204434c4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -2,12 +2,16 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.BukkitEntity; +import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; @@ -77,6 +81,21 @@ public class BukkitWorld implements World { return delegate.getMinHeight(); } + @Override + public ChunkGenerator getGenerator() { + return ((BukkitChunkGeneratorWrapper) delegate.getGenerator()).getHandle(); + } + + @Override + public BiomeProvider getBiomeProvider() { + return ((BukkitChunkGeneratorWrapper) delegate.getGenerator()).getWorldConfig().getProvider(); + } + + @Override + public WorldConfig getConfig() { + return ((BukkitChunkGeneratorWrapper) delegate.getGenerator()).getWorldConfig(); + } + @Override public org.bukkit.World getHandle() { return delegate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index 5f3a4460f..d99292933 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.world.block.data; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.Property; import com.dfsek.terra.bukkit.world.BukkitAdapter; import org.bukkit.Material; @@ -57,4 +58,19 @@ public class BukkitBlockState implements BlockState { public boolean isStructureVoid() { return delegate.getMaterial() == Material.STRUCTURE_VOID; } + + @Override + public boolean has(Property property) { + return false; + } + + @Override + public T get(Property property) { + return null; + } + + @Override + public BlockState set(Property property, T value) { + return null; + } } From b407ca8821ff2a21286c9a8ab4ae05e0e0c6db19 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 07:56:18 -0700 Subject: [PATCH 0489/1529] move platform addon registration --- .../java/com/dfsek/terra/AbstractTerraPlugin.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 5bbc04b88..7c75c1642 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -54,18 +54,13 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { private final CommandManager manager = new TerraCommandManager(this); - private final AddonRegistry addonRegistry; + private final AddonRegistry addonRegistry = new AddonRegistry(this); - private final Logger logger; + private final Lazy logger = Lazy.lazy(() -> createLogger()); private static final MutableBoolean LOADED = new MutableBoolean(false); - public AbstractTerraPlugin() { - this.logger = createLogger(); - addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this)); - } - protected void load() { if(LOADED.get()) { throw new IllegalStateException("Someone tried to initialize Terra, but Terra has already initialized. This is most likely due to a broken platform implementation, or a misbehaving mod."); @@ -74,6 +69,8 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { logger().info("Initializing Terra..."); + getPlatformAddon().ifPresent(addonRegistry::register); + try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { File configFile = new File(getDataFolder(), "config.yml"); if(!configFile.exists()) { @@ -166,6 +163,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { @Override public Logger logger() { - return logger; + return logger.value(); } } From 1dbcb031eab43f1d9b9749ad655d7e3501e5e040 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:09:37 -0700 Subject: [PATCH 0490/1529] move resource dumping to AbstractTerraPlugin --- .../dfsek/terra/api/config/PluginConfig.java | 2 + .../com/dfsek/terra/AbstractTerraPlugin.java | 41 +++++++++++++++++++ .../dfsek/terra/config/PluginConfigImpl.java | 35 +++------------- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java index 2275c7283..1f81ec6ed 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java @@ -30,4 +30,6 @@ public interface PluginConfig { int getBiomeCache(); int getProviderCache(); + + boolean dumpDefaultConfig(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 7c75c1642..05196803b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -27,10 +27,18 @@ import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.yaml.snakeyaml.Yaml; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.io.UncheckedIOException; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; import java.util.Optional; /** @@ -80,6 +88,39 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { e.printStackTrace(); } + if(config.dumpDefaultConfig()) { + try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { + if(resourcesConfig == null) { + logger().info("No resources config found. Skipping resource dumping."); + return; + } + String resourceYaml = IOUtils.toString(resourcesConfig, StandardCharsets.UTF_8); + Map> resources = new Yaml().load(resourceYaml); + resources.forEach((dir, entries) -> entries.forEach(entry -> { + String resourcePath = dir + "/" + entry; + File resource = new File(getDataFolder(), resourcePath); + if(resource.exists()) return; // dont overwrite + logger().info("Dumping resource " + resource.getAbsolutePath()); + try { + resource.getParentFile().mkdirs(); + resource.createNewFile(); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + try(InputStream is = getClass().getResourceAsStream("/" + resourcePath); + OutputStream os = new FileOutputStream(resource)) { + IOUtils.copy(is, os); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + })); + } catch(IOException e) { + e.printStackTrace(); + } + } else { + getDebugLogger().info("Skipping resource dumping."); + } + config.load(this); // load config.yml LangUtil.load(config.getLanguage(), this); // load language diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index 75206e894..817f3ee12 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -88,36 +88,8 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con try(FileInputStream file = new FileInputStream(new File(main.getDataFolder(), "config.yml"))) { ConfigLoader loader = new ConfigLoader(); loader.load(this, new YamlConfiguration(file, "config.yml")); - if(dumpDefaultData) { - try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { - if(resourcesConfig == null) { - logger.info("No resources config found. Skipping resource dumping."); - return; - } - String resourceYaml = IOUtils.toString(resourcesConfig, StandardCharsets.UTF_8); - Map> resources = new Yaml().load(resourceYaml); - resources.forEach((dir, entries) -> entries.forEach(entry -> { - String resourcePath = dir + "/" + entry; - File resource = new File(main.getDataFolder(), resourcePath); - if(resource.exists()) return; // dont overwrite - main.logger().info("Dumping resource " + resource.getAbsolutePath()); - try { - resource.getParentFile().mkdirs(); - resource.createNewFile(); - } catch(IOException e) { - throw new UncheckedIOException(e); - } - try(InputStream is = getClass().getResourceAsStream("/" + resourcePath); - OutputStream os = new FileOutputStream(resource)) { - IOUtils.copy(is, os); - } catch(IOException e) { - throw new UncheckedIOException(e); - } - })); - } - } } catch(ConfigException | IOException | UncheckedIOException e) { - logger.severe("Failed to dump resources"); + logger.severe("Failed to load config"); e.printStackTrace(); } @@ -191,4 +163,9 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con public int getProviderCache() { return providerCache; } + + @Override + public boolean dumpDefaultConfig() { + return dumpDefaultData; + } } From bda359402542ba88a9ffa30db12f449d866cfd24 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:14:01 -0700 Subject: [PATCH 0491/1529] addon dump bukkit --- platforms/bukkit/build.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index ab2532deb..3bac3b13c 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -1,3 +1,4 @@ +import com.dfsek.terra.addonDir import com.dfsek.terra.gitClone import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import java.net.URL @@ -175,3 +176,7 @@ tasks.named("shadowJar") { relocate("io.papermc.lib", "com.dfsek.terra.lib.paperlib") relocate("com.google.common", "com.dfsek.terra.lib.google.common") } + + +addonDir(project.file("./target/paper/plugins/Terra/addons"), tasks.named("runPaper").get()) +addonDir(project.file("./target/purpur/plugins/Terra/addons"), tasks.named("runPurpur").get()) From ddf1334f6f586c98b533b4627153cc9ddee3564a Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:25:35 -0700 Subject: [PATCH 0492/1529] properly initialize config.yml --- .../main/java/com/dfsek/terra/AbstractTerraPlugin.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java index 05196803b..f41e0720a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java @@ -88,6 +88,11 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { e.printStackTrace(); } + + config.load(this); // load config.yml + + LangUtil.load(config.getLanguage(), this); // load language + if(config.dumpDefaultConfig()) { try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { if(resourcesConfig == null) { @@ -121,10 +126,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin { getDebugLogger().info("Skipping resource dumping."); } - config.load(this); // load config.yml - - LangUtil.load(config.getLanguage(), this); // load language - debugLogger.value().setDebug(config.isDebugLogging()); // enable debug logger if applicable if(config.isDebugProfiler()) { // if debug.profiler is enabled, start profiling From 3a47fd5aa94da4249908f1973fd8a8e3fcf7116b Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:36:14 -0700 Subject: [PATCH 0493/1529] fire initialization event on bukkit --- .../main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 a4394e3a8..3537e065e 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 @@ -3,6 +3,7 @@ package com.dfsek.terra.bukkit; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.FixChunkCommand; import com.dfsek.terra.bukkit.command.SaveDataCommand; @@ -56,8 +57,9 @@ public class TerraBukkitPlugin extends JavaPlugin { getLogger().warning("Terra is running on an unknown Bukkit version. Proceed with caution."); } + terraPlugin.getEventManager().callEvent(new PlatformInitializationEvent()); - Metrics metrics = new Metrics(this, 9017); // Set up bStats. + new Metrics(this, 9017); // Set up bStats. PluginCommand c = Objects.requireNonNull(getCommand("terra")); From 76173c1f31e863345834b92d67d58aa11526f804 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:37:47 -0700 Subject: [PATCH 0494/1529] correct bukkit addon dirs --- platforms/bukkit/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 3bac3b13c..4f31244c3 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -178,5 +178,5 @@ tasks.named("shadowJar") { } -addonDir(project.file("./target/paper/plugins/Terra/addons"), tasks.named("runPaper").get()) -addonDir(project.file("./target/purpur/plugins/Terra/addons"), tasks.named("runPurpur").get()) +addonDir(project.file("./target/server/paper/plugins/Terra/addons"), tasks.named("runPaper").get()) +addonDir(project.file("./target/server/purpur/plugins/Terra/addons"), tasks.named("runPurpur").get()) From 7becdf7f64a0038c754c336cd99fcde02b40669e Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 08:40:27 -0700 Subject: [PATCH 0495/1529] dont delete addons in bukkit build --- platforms/bukkit/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 4f31244c3..54a2f650c 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -47,7 +47,7 @@ fun downloadPaperclip(url: String, dir: String) { fun copyTerra(dir: String) { file("$testDir/$dir").walk().forEach { - if (it.name.startsWith("Terra-") && it.name.endsWith(".jar")) it.delete() // Delete old Terra jar(s) + if (it.name.startsWith("Terra-bukkit") && it.name.endsWith(".jar")) it.delete() // Delete old Terra jar(s) } copy { from("$buildDir/libs/Terra-bukkit-$version-shaded.jar") From a15c5f2cca20c055f6a6c215ccd3d012c12ea68c Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 10:17:17 -0700 Subject: [PATCH 0496/1529] shade ioutils in terrascript addon --- .../structure-terrascript-loader/build.gradle.kts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index a323c705d..e71d4b285 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -1,3 +1,18 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + id("com.github.johnrengelman.shadow") +} + dependencies { "shadedApi"("commons-io:commons-io:2.6") } + +tasks.named("shadowJar") { + archiveClassifier.set("") + relocate("org.apache.commons", "com.dfsek.terra.addons.terrascript.lib.commons") +} + +tasks.named("build") { + finalizedBy(tasks.named("shadowJar")) +} \ No newline at end of file From c8429141c86ef0a2a516aa2cf1ce80105ae5aced Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 10:23:09 -0700 Subject: [PATCH 0497/1529] fix class cast issue --- .../src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java | 3 +++ .../com/dfsek/terra/bukkit/population/PopulationManager.java | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java index 140ffb4e2..7456de828 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java @@ -32,6 +32,9 @@ public class TerraPluginImpl extends AbstractTerraPlugin { load(); } + public TerraBukkitPlugin getPlugin() { + return plugin; + } @Override public WorldHandle getWorldHandle() { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 4aef275da..d37316b6f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.bukkit.TerraBukkitPlugin; +import com.dfsek.terra.bukkit.TerraPluginImpl; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.util.FastRandom; @@ -80,7 +81,7 @@ public class PopulationManager extends BlockPopulator { needsPop.add(new ChunkCoordinate(chunk)); int x = chunk.getX(); int z = chunk.getZ(); - if(((TerraBukkitPlugin) main).isEnabled()) { + if(((TerraPluginImpl) main).getPlugin().isEnabled()) { for(int xi = -1; xi <= 1; xi++) { for(int zi = -1; zi <= 1; zi++) { if(xi == 0 && zi == 0) continue; From 6010ea3bd69e4d90404d25729bcd7ef1927c28ec Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 10:25:58 -0700 Subject: [PATCH 0498/1529] bump test version to 1.17.1 --- platforms/bukkit/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 54a2f650c..2987fd84f 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -7,7 +7,7 @@ import java.nio.file.Files import java.nio.file.StandardCopyOption -val mcVersion = "1.17" +val mcVersion = "1.17.1" val testDir = "target/server" val testMem = "3G" From df6cdf37aacf6288c39a1583264f5bcff18751e9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 10:45:24 -0700 Subject: [PATCH 0499/1529] reset sponge build --- platforms/sponge/build.gradle.kts | 10 ++ platforms/sponge/build.gradle.kts.old | 25 ---- .../com/dfsek/terra/sponge/SpongeAdapter.java | 14 -- .../com/dfsek/terra/sponge/SpongeLogger.java | 26 ---- .../dfsek/terra/sponge/TerraSpongePlugin.java | 137 ------------------ .../terra/sponge/world/SpongeWorldHandle.java | 19 --- .../world/block/data/SpongeBlockState.java | 47 ------ 7 files changed, 10 insertions(+), 268 deletions(-) create mode 100644 platforms/sponge/build.gradle.kts delete mode 100644 platforms/sponge/build.gradle.kts.old delete mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java delete mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java delete mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java delete mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java delete mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts new file mode 100644 index 000000000..01a4f0e4c --- /dev/null +++ b/platforms/sponge/build.gradle.kts @@ -0,0 +1,10 @@ +repositories { + maven { + url = uri("https://repo-new.spongepowered.org/repository/maven-public/") + } +} + +dependencies { + "shadedApi"(project(":common:implementation")) + annotationProcessor(implementation("org.spongepowered:spongeapi:8.0.0-SNAPSHOT")!!) +} diff --git a/platforms/sponge/build.gradle.kts.old b/platforms/sponge/build.gradle.kts.old deleted file mode 100644 index bf613ec9a..000000000 --- a/platforms/sponge/build.gradle.kts.old +++ /dev/null @@ -1,25 +0,0 @@ -import com.dfsek.terra.configureCommon - -plugins { - id("org.spongepowered.plugin").version("0.9.0") -} - -configureCommon() - - -repositories { - mavenCentral() -} - -dependencies { - "compileOnly"("org.spongepowered:spongeapi:7.2.0") - "shadedApi"(project(":common:implementation")) - "shadedImplementation"("org.yaml:snakeyaml:1.27") - "shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1") -} - -sponge { - plugin { - id = "terra" - } -} \ No newline at end of file diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java deleted file mode 100644 index 584fbb6d4..000000000 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeAdapter.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.sponge; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.sponge.world.block.data.SpongeBlockState; - -public final class SpongeAdapter { - public static BlockState adapt(org.spongepowered.api.block.BlockState state) { - return new SpongeBlockState(state); - } - - public static org.spongepowered.api.block.BlockState adapt(BlockState data) { - return ((SpongeBlockState) data).getHandle(); - } -} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java deleted file mode 100644 index 8ea1150aa..000000000 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.sponge; - -import com.dfsek.terra.api.Logger; - -public class SpongeLogger implements Logger { - private final org.slf4j.Logger logger; - - public SpongeLogger(org.slf4j.Logger logger) { - this.logger = logger; - } - - @Override - public void info(String message) { - logger.info(message); - } - - @Override - public void warning(String message) { - logger.warn(message); - } - - @Override - public void severe(String message) { - logger.error(message); - } -} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java deleted file mode 100644 index be0eb9be7..000000000 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.dfsek.terra.sponge; - -import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.PluginConfig; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.lang.Language; -import com.dfsek.terra.api.profiler.Profiler; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.config.PluginConfigImpl; -import com.dfsek.terra.config.lang.LanguageImpl; -import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.registry.master.AddonRegistry; -import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.sponge.world.SpongeWorldHandle; -import com.dfsek.terra.util.logging.DebugLogger; -import com.google.inject.Inject; -import org.slf4j.Logger; -import org.spongepowered.api.config.ConfigDir; -import org.spongepowered.api.event.Listener; -import org.spongepowered.api.event.game.state.GameStartedServerEvent; -import org.spongepowered.api.plugin.Plugin; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; - -@Plugin(id = "terra", name = "Terra-Sponge", version = "", description = "Terra") -public class TerraSpongePlugin implements TerraPlugin { - private final ConfigRegistry configRegistry = new ConfigRegistry(); - private final CheckedRegistry packCheckedRegistry = new CheckedRegistry<>(configRegistry); - private final PluginConfig config = new PluginConfigImpl(); - private final AddonRegistry addonRegistry = new AddonRegistry(this); - private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); - - private final SpongeWorldHandle spongeWorldHandle = new SpongeWorldHandle(); - - private final EventManager eventManager = new EventManagerImpl(this); - - @Inject - @ConfigDir(sharedRoot = false) - private Path privateConfigDir; - - @Inject - private Logger logger; - - - @Listener - public void initialize(GameStartedServerEvent event) { - addonRegistry.loadAll(); - configRegistry.loadAll(this); - } - - @Override - public void register(TypeRegistry registry) { - - } - - @Override - public WorldHandle getWorldHandle() { - return spongeWorldHandle; - } - - @Override - public com.dfsek.terra.api.Logger logger() { - return new SpongeLogger(logger); - } - - @Override - public PluginConfig getTerraConfig() { - return config; - } - - @Override - public File getDataFolder() { - return privateConfigDir.toFile(); - } - - @Override - public Language getLanguage() { - try { - return new LanguageImpl(new File(getDataFolder(), "lang/en_us.yml")); - } catch(IOException e) { - throw new IllegalArgumentException(); - } - } - - @Override - public CheckedRegistry getConfigRegistry() { - return packCheckedRegistry; - } - - @Override - public LockedRegistry getAddons() { - return addonLockedRegistry; - } - - @Override - public boolean reload() { - return false; - } - - @Override - public ItemHandle getItemHandle() { - return null; - } - - @Override - public void saveDefaultConfig() { - - } - - @Override - public String platformName() { - return "Sponge"; - } - - @Override - public DebugLogger getDebugLogger() { - return null; - } - - @Override - public EventManager getEventManager() { - return eventManager; - } - - @Override - public Profiler getProfiler() { - return null; - } -} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java deleted file mode 100644 index b7b2b4607..000000000 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.sponge.world; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.sponge.SpongeAdapter; -import org.spongepowered.api.Sponge; - -public class SpongeWorldHandle implements WorldHandle { - @Override - public BlockState createBlockData(String data) { - return SpongeAdapter.adapt(Sponge.getRegistry().getType(org.spongepowered.api.block.BlockState.class, data).orElseThrow(() -> new IllegalArgumentException("Invalid block data \"" + data + "\""))); - } - - @Override - public EntityType getEntity(String id) { - return null; - } -} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java deleted file mode 100644 index 4fb0a2cf2..000000000 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/block/data/SpongeBlockState.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.sponge.world.block.data; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; - -public class SpongeBlockState implements BlockState { - private final org.spongepowered.api.block.BlockState delegate; - - public SpongeBlockState(org.spongepowered.api.block.BlockState delegate) { - this.delegate = delegate; - } - - @Override - public org.spongepowered.api.block.BlockState getHandle() { - return delegate; - } - - @Override - public BlockType getBlockType() { - return null; - } - - @Override - public boolean matches(BlockState other) { - return false; - } - - @Override - public BlockState clone() { - return null; - } - - @Override - public String getAsString() { - return null; - } - - @Override - public boolean isAir() { - return false; - } - - @Override - public boolean isStructureVoid() { - return false; - } -} From 2263e6722bd9403c287cfac0f42cb889d4091de3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 10:53:22 -0700 Subject: [PATCH 0500/1529] set up mixin and vanillagradle --- platforms/sponge/build.gradle.kts | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 01a4f0e4c..76394c1af 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -1,3 +1,8 @@ +plugins { + id("org.spongepowered.plugin").version("0.9.0") + id("org.spongepowered.gradle.vanilla").version("0.2") +} + repositories { maven { url = uri("https://repo-new.spongepowered.org/repository/maven-public/") @@ -6,5 +11,28 @@ repositories { dependencies { "shadedApi"(project(":common:implementation")) - annotationProcessor(implementation("org.spongepowered:spongeapi:8.0.0-SNAPSHOT")!!) + annotationProcessor(implementation("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")!!) + annotationProcessor("org.spongepowered:mixin:0.8.2:processor") } + +sponge { + plugin { + id = "terra" + } +} + +minecraft { + version("1.17.1") + runs { + server() + client() + } +} + +tasks.named("jar") { + manifest { + attributes( + mapOf("MixinConfigs" to "terra.mixins.json") + ) + } +} \ No newline at end of file From bea45ff030370c12bb63a69fda7a58a89b13df15 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 30 Jul 2021 15:23:39 -0700 Subject: [PATCH 0501/1529] begin sponge impl --- platforms/sponge/build.gradle.kts | 17 +++-- .../dfsek/terra/sponge/SpongeListener.java | 19 ++++++ .../dfsek/terra/sponge/TerraPluginImpl.java | 65 +++++++++++++++++++ .../dfsek/terra/sponge/TerraSpongePlugin.java | 24 +++++++ .../terra/sponge/block/SpongeBlockState.java | 64 ++++++++++++++++++ .../terra/sponge/block/SpongeBlockType.java | 34 ++++++++++ .../sponge/handle/SpongeWorldHandle.java | 30 +++++++++ .../src/main/resources/META-INF/plugins.json | 24 +++++++ 8 files changed, 268 insertions(+), 9 deletions(-) create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java create mode 100644 platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java create mode 100644 platforms/sponge/src/main/resources/META-INF/plugins.json diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 76394c1af..3962b6381 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -1,5 +1,4 @@ plugins { - id("org.spongepowered.plugin").version("0.9.0") id("org.spongepowered.gradle.vanilla").version("0.2") } @@ -9,16 +8,16 @@ repositories { } } -dependencies { - "shadedApi"(project(":common:implementation")) - annotationProcessor(implementation("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")!!) - annotationProcessor("org.spongepowered:mixin:0.8.2:processor") +java { + sourceCompatibility = JavaVersion.VERSION_16 + targetCompatibility = JavaVersion.VERSION_16 } -sponge { - plugin { - id = "terra" - } +dependencies { + "shadedApi"(project(":common:implementation")) + "annotationProcessor"("org.spongepowered:spongeapi:9.0.0-SNAPSHOT") + "shadedImplementation"("org.spongepowered:spongeapi:9.0.0-SNAPSHOT") + "annotationProcessor"("org.spongepowered:mixin:0.8.2:processor") } minecraft { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java new file mode 100644 index 000000000..22b74a321 --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.sponge; + +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import org.spongepowered.api.Server; +import org.spongepowered.api.event.Listener; +import org.spongepowered.api.event.lifecycle.StartingEngineEvent; + +public class SpongeListener { + private final TerraSpongePlugin plugin; + + public SpongeListener(TerraSpongePlugin plugin) { + this.plugin = plugin; + } + + @Listener + public void initialize(StartingEngineEvent event) { + plugin.getTerraPlugin().getEventManager().callEvent(new PlatformInitializationEvent()); + } +} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java new file mode 100644 index 000000000..695479217 --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java @@ -0,0 +1,65 @@ +package com.dfsek.terra.sponge; + +import com.dfsek.terra.AbstractTerraPlugin; +import com.dfsek.terra.api.Logger; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.sponge.handle.SpongeWorldHandle; +import org.spongepowered.api.Sponge; + +import java.io.File; + + +public class TerraPluginImpl extends AbstractTerraPlugin { + private final TerraSpongePlugin plugin; + private final SpongeWorldHandle worldHandle = new SpongeWorldHandle(); + public TerraPluginImpl(TerraSpongePlugin plugin) { + this.plugin = plugin; + load(); + } + + @Override + public WorldHandle getWorldHandle() { + return worldHandle; + } + + @Override + public File getDataFolder() { + return Sponge.configManager().pluginConfig(plugin.getPluginContainer()).directory().toFile(); + } + + @Override + public boolean reload() { + return false; + } + + @Override + public ItemHandle getItemHandle() { + return null; + } + + @Override + public String platformName() { + return "Sponge"; + } + + @Override + protected Logger createLogger() { + return new Logger() { + @Override + public void info(String message) { + plugin.getPluginContainer().logger().info(message); + } + + @Override + public void warning(String message) { + plugin.getPluginContainer().logger().warn(message); + } + + @Override + public void severe(String message) { + plugin.getPluginContainer().logger().error(message); + } + }; + } +} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java new file mode 100644 index 000000000..128cdcb0e --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.sponge; + +import com.google.inject.Inject; +import org.spongepowered.plugin.PluginContainer; +import org.spongepowered.plugin.jvm.Plugin; + +@Plugin("terra") +public class TerraSpongePlugin { + private final PluginContainer plugin; + private final TerraPluginImpl terraPlugin; + @Inject + public TerraSpongePlugin(PluginContainer plugin) { + this.plugin = plugin; + this.terraPlugin = new TerraPluginImpl(this); + } + + public PluginContainer getPluginContainer() { + return plugin; + } + + public TerraPluginImpl getTerraPlugin() { + return terraPlugin; + } +} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java new file mode 100644 index 000000000..41f91936c --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java @@ -0,0 +1,64 @@ +package com.dfsek.terra.sponge.block; + +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.Property; +import org.spongepowered.api.block.BlockTypes; + +public class SpongeBlockState implements BlockState { + private final org.spongepowered.api.block.BlockState delegate; + + public SpongeBlockState(org.spongepowered.api.block.BlockState delegate) { + this.delegate = delegate; + } + + @Override + public org.spongepowered.api.block.BlockState getHandle() { + return delegate; + } + + @Override + public BlockType getBlockType() { + return new SpongeBlockType(delegate.type()); + } + + @Override + public boolean matches(BlockState other) { + return delegate.type().equals(((SpongeBlockType) other.getBlockType()).getHandle()); + } + + @Override + public BlockState clone() { + return this; + } + + @Override + public String getAsString() { + return delegate.toString(); + } + + @Override + public boolean isAir() { + return delegate.type().equals(BlockTypes.AIR.get()); + } + + @Override + public boolean isStructureVoid() { + return delegate.type().equals(BlockTypes.STRUCTURE_VOID.get()); + } + + @Override + public boolean has(Property property) { + return false; + } + + @Override + public T get(Property property) { + return null; + } + + @Override + public BlockState set(Property property, T value) { + return this; + } +} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java new file mode 100644 index 000000000..27c5a388d --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.sponge.block; + +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import org.spongepowered.api.block.BlockTypes; +import org.spongepowered.api.data.Keys; + +public class SpongeBlockType implements BlockType { + private final org.spongepowered.api.block.BlockType delegate; + + public SpongeBlockType(org.spongepowered.api.block.BlockType delegate) { + this.delegate = delegate; + } + + @Override + public org.spongepowered.api.block.BlockType getHandle() { + return delegate; + } + + @Override + public BlockState getDefaultData() { + return new SpongeBlockState(delegate.defaultState()); + } + + @Override + public boolean isSolid() { + return !delegate.getOrElse(Keys.IS_SOLID, false); + } + + @Override + public boolean isWater() { + return delegate.equals(BlockTypes.WATER.get()); + } +} diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java new file mode 100644 index 000000000..4b1483cb9 --- /dev/null +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.sponge.handle; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.sponge.block.SpongeBlockState; +import org.spongepowered.api.block.BlockTypes; + +public class SpongeWorldHandle implements WorldHandle { + private final SpongeBlockState air; + + public SpongeWorldHandle() { + air = new SpongeBlockState(BlockTypes.AIR.get().defaultState()); + } + + @Override + public BlockState createBlockData(String data) { + return new SpongeBlockState(org.spongepowered.api.block.BlockState.fromString(data)); + } + + @Override + public BlockState air() { + return air; + } + + @Override + public EntityType getEntity(String id) { + return null; + } +} diff --git a/platforms/sponge/src/main/resources/META-INF/plugins.json b/platforms/sponge/src/main/resources/META-INF/plugins.json new file mode 100644 index 000000000..77077496b --- /dev/null +++ b/platforms/sponge/src/main/resources/META-INF/plugins.json @@ -0,0 +1,24 @@ +{ + "plugins": [ + { + "loader": "java_plain", + "id": "terra", + "name": "Terra", + "version": "@VERSION@", + "main-class": "com.dfsek.terra.sponge.TerraSpongePlugin", + "description": "@DESCRIPTION@", + "links": { + "source": "@SOURCE@", + "issues": "@ISSUES@" + }, + "contributors": [ + ], + "dependencies": [ + { + "id": "spongeapi", + "version": "9.0.0" + } + ] + } + ] +} \ No newline at end of file From f5c73e926ff42b0ed0daf1f1919a5a7a42168936 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 31 Jul 2021 00:44:06 -0700 Subject: [PATCH 0502/1529] remove mixin stuff for now --- platforms/sponge/build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 3962b6381..9377541e6 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -30,8 +30,8 @@ minecraft { tasks.named("jar") { manifest { - attributes( - mapOf("MixinConfigs" to "terra.mixins.json") - ) + //attributes( + // mapOf("MixinConfigs" to "terra.mixins.json") + //) } } \ No newline at end of file From 9eecaf71c8684476a5af0a6c7064c6acf782da14 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 31 Jul 2021 00:46:33 -0700 Subject: [PATCH 0503/1529] hold air blockstate in Lazy --- .../com/dfsek/terra/sponge/handle/SpongeWorldHandle.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java index 4b1483cb9..3ef7b3cde 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java @@ -3,14 +3,15 @@ package com.dfsek.terra.sponge.handle; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.sponge.block.SpongeBlockState; import org.spongepowered.api.block.BlockTypes; public class SpongeWorldHandle implements WorldHandle { - private final SpongeBlockState air; + private final Lazy air; public SpongeWorldHandle() { - air = new SpongeBlockState(BlockTypes.AIR.get().defaultState()); + air = Lazy.lazy(() -> new SpongeBlockState(BlockTypes.AIR.get().defaultState())); } @Override @@ -20,7 +21,7 @@ public class SpongeWorldHandle implements WorldHandle { @Override public BlockState air() { - return air; + return air.value(); } @Override From 03241fa41284641a0ed6a18266880a4225f41329 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 31 Jul 2021 00:56:45 -0700 Subject: [PATCH 0504/1529] register event listeners --- .../main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 128cdcb0e..5758553e8 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -1,6 +1,7 @@ package com.dfsek.terra.sponge; import com.google.inject.Inject; +import org.spongepowered.api.Game; import org.spongepowered.plugin.PluginContainer; import org.spongepowered.plugin.jvm.Plugin; @@ -9,9 +10,10 @@ public class TerraSpongePlugin { private final PluginContainer plugin; private final TerraPluginImpl terraPlugin; @Inject - public TerraSpongePlugin(PluginContainer plugin) { + public TerraSpongePlugin(PluginContainer plugin, Game game) { this.plugin = plugin; this.terraPlugin = new TerraPluginImpl(this); + game.eventManager().registerListeners(plugin, new SpongeListener(this)); } public PluginContainer getPluginContainer() { From 5919d5f031778539a2d24711fecf9c99e75172de Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 2 Aug 2021 23:29:29 -0700 Subject: [PATCH 0505/1529] create "merged" platform --- platforms/merged/build.gradle.kts | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 platforms/merged/build.gradle.kts diff --git a/platforms/merged/build.gradle.kts b/platforms/merged/build.gradle.kts new file mode 100644 index 000000000..278513d4a --- /dev/null +++ b/platforms/merged/build.gradle.kts @@ -0,0 +1,39 @@ +import java.lang.IllegalArgumentException + +val platformOverrides = mapOf( + "fabric" to "remapJar" +) + +dependencies { + "shadedApi"(project(":common:implementation")) +} + +val taskSet = HashSet() +val resourcesDir = File("${project.buildDir}/resources/main/") + +val dump = tasks.create("dumpDependents") { + doFirst { + taskSet.forEach { + val resource = File(resourcesDir, it.archiveFileName.get()) + println("Including archive " + it.archiveFileName.orNull + " in directory " + resource.absolutePath) + it.archiveFile.get().asFile.copyTo(resource, true) + } + } +} + +tasks["processResources"].dependsOn(dump) + +afterEvaluate { + project(":platforms").subprojects.forEach { + if(it == this@afterEvaluate) return@forEach + + val taskName = platformOverrides.getOrDefault(it.name, "jar") + val task = it.tasks.named(taskName).get() + if(task !is AbstractArchiveTask) { + throw IllegalArgumentException("Task dependency must be Archive Task: " + task.name) + } + tasks["dumpDependents"].dependsOn(task) + taskSet.add(task) + println("Merged JAR will incorporate task ${task.name} from platform ${it.name}.") + } +} \ No newline at end of file From 0d04f79cd44a96ceeea48e30b3c15ce3ff86f71f Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 17 Aug 2021 09:38:12 -0700 Subject: [PATCH 0506/1529] createBlockEntity method --- .../java/com/dfsek/terra/api/handle/WorldHandle.java | 3 +++ .../terra/bukkit/handles/BukkitWorldHandle.java | 6 ++++++ .../dfsek/terra/fabric/handle/FabricWorldHandle.java | 12 ++++++++++++ .../dfsek/terra/sponge/handle/SpongeWorldHandle.java | 7 +++++++ 4 files changed, 28 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 0e0b2e06f..7397485bc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.handle; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; @@ -16,6 +17,8 @@ public interface WorldHandle { EntityType getEntity(String id); + BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt); + /** * Get the locations selected by a player. (Usually via WorldEdit) * diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 62131d9f1..71fd68d9d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit.handles; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; @@ -36,6 +37,11 @@ public class BukkitWorldHandle implements WorldHandle { return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id)); } + @Override + public BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt) { + return null; + } + @Override public Pair getSelectedLocation(Player player) { org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index efa13a123..678dab35a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.handle; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; @@ -13,6 +14,8 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.command.argument.BlockArgumentParser; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.StringNbtReader; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -46,6 +49,15 @@ public class FabricWorldHandle implements WorldHandle { return (EntityType) Registry.ENTITY_TYPE.get(identifier); } + @Override + public BlockEntity createBlockEntity(Vector3 location, com.dfsek.terra.api.block.state.BlockState block, String snbt) { + try { + return (BlockEntity) net.minecraft.block.entity.BlockEntity.createFromNbt(FabricAdapter.adapt(location), (BlockState) block, StringNbtReader.parse(snbt)); + } catch(CommandSyntaxException e) { + throw new RuntimeException(e); + } + } + @Override public Pair getSelectedLocation(Player player) { try { diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java index 3ef7b3cde..071ce544c 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java @@ -1,9 +1,11 @@ package com.dfsek.terra.sponge.handle; +import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.Lazy; +import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.sponge.block.SpongeBlockState; import org.spongepowered.api.block.BlockTypes; @@ -28,4 +30,9 @@ public class SpongeWorldHandle implements WorldHandle { public EntityType getEntity(String id) { return null; } + + @Override + public BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt) { + return null; + } } From 1c124e8b75806d2a9f3f81dbcfe9598d4e092bd7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 17 Aug 2021 10:04:11 -0700 Subject: [PATCH 0507/1529] use namespaced IDs for entities --- .../com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java | 7 ++++++- .../com/dfsek/terra/fabric/handle/FabricWorldHandle.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 71fd68d9d..3bd4e452d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,5 +1,6 @@ package com.dfsek.terra.bukkit.handles; +import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; @@ -9,11 +10,14 @@ import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.world.BukkitAdapter; +import com.dfsek.terra.bukkit.world.BukkitBiome; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; import org.bukkit.Bukkit; import org.bukkit.Material; +import java.util.Locale; + public class BukkitWorldHandle implements WorldHandle { private final BlockState air; @@ -34,7 +38,8 @@ public class BukkitWorldHandle implements WorldHandle { @Override public EntityType getEntity(String id) { - return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id)); + if(!id.startsWith("minecraft:")) throw new LoadException("Invalid entity identifier " + id); + return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 678dab35a..e851031c8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -45,7 +45,7 @@ public class FabricWorldHandle implements WorldHandle { @Override public EntityType getEntity(String id) { Identifier identifier = Identifier.tryParse(id); - if(identifier == null) identifier = Identifier.tryParse("minecraft:" + id.toLowerCase(Locale.ROOT)); + if(identifier == null) identifier = Identifier.tryParse(id); return (EntityType) Registry.ENTITY_TYPE.get(identifier); } From 859b968555c07d8c70830ba57d5acfdf3710024c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 29 Aug 2021 17:20:34 -0700 Subject: [PATCH 0508/1529] remove Forge implementation --- platforms/forge/build.gradle.kts.old | 138 ------ .../com/dfsek/terra/forge/ForgeAdapter.java | 90 ---- .../java/com/dfsek/terra/forge/ForgeUtil.java | 109 ----- .../dfsek/terra/forge/TerraForgePlugin.java | 408 ------------------ .../dfsek/terra/forge/block/ForgeBlock.java | 95 ---- .../terra/forge/block/ForgeBlockData.java | 83 ---- .../block/data/ForgeAnaloguePowerable.java | 29 -- .../forge/block/data/ForgeDirectional.java | 42 -- .../forge/block/data/ForgeEnumAdapter.java | 159 ------- .../forge/block/data/ForgeMultipleFacing.java | 69 --- .../forge/block/data/ForgeOrientable.java | 36 -- .../forge/block/data/ForgeRotatable.java | 111 ----- .../terra/forge/block/data/ForgeSlab.java | 21 - .../terra/forge/block/data/ForgeStairs.java | 42 -- .../forge/block/data/ForgeWaterlogged.java | 22 - .../config/PostLoadCompatibilityOptions.java | 30 -- .../config/PreLoadCompatibilityOptions.java | 52 --- .../ForgeChunkGeneratorWrapper.java | 197 --------- .../forge/generation/PopulatorFeature.java | 30 -- .../forge/generation/TerraBiomeSource.java | 59 --- .../forge/generation/TerraGeneratorType.java | 25 -- .../terra/forge/handle/ForgeItemHandle.java | 35 -- .../terra/forge/handle/ForgeWorldHandle.java | 36 -- .../terra/forge/listener/ForgeListener.java | 81 ---- .../forge/listener/RegistryListener.java | 15 - .../DimensionGeneratorSettingsMixin.java | 64 --- .../terra/forge/mixin/ServerWorldMixin.java | 37 -- .../mixin/access/AbstractSpawnerAccessor.java | 12 - .../BiomeGeneratorTypeScreensAccessor.java | 21 - .../mixin/implementations/BiomeMixin.java | 14 - .../implementations/ChunkGeneratorMixin.java | 14 - .../ConfiguredFeatureMixin.java | 40 -- .../implementations/block/BlockMixin.java | 36 -- .../block/TileEntityMixin.java | 63 --- .../state/LockableLootTileEntityMixin.java | 21 - .../state/MobSpawnerTileEntityMixin.java | 120 ------ .../block/state/SignTileEntityMixin.java | 50 --- .../implementations/chunk/ChunkMixin.java | 55 --- .../chunk/WorldGenRegionMixin.java | 58 --- .../chunk/data/ChunkPrimerMixin.java | 38 -- .../entity/CommandSourceMixin.java | 25 -- .../implementations/entity/EntityMixin.java | 52 --- .../entity/EntityTypeMixin.java | 14 - .../entity/PlayerEntityMixin.java | 13 - .../inventory/LockableTileEntityMixin.java | 32 -- .../inventory/item/ItemMixin.java | 28 -- .../inventory/item/ItemStackMixin.java | 62 --- .../inventory/meta/EnchantmentMixin.java | 39 -- .../meta/ItemStackDamageableMixin.java | 36 -- .../inventory/meta/ItemStackMetaMixin.java | 50 --- .../mixin/implementations/package-info.java | 5 - .../world/ServerWorldMixin.java | 86 ---- .../world/WorldGenRegionMixin.java | 108 ----- .../mixin/init/MinecraftClientMixin.java | 29 -- .../mixin/init/MinecraftServerMixin.java | 16 - .../src/main/resources/META-INF/mods.toml | 17 - .../forge/src/main/resources/pack.mcmeta | 6 - .../src/main/resources/terra.mixins.json | 45 -- .../src/test/resources/META-INF/mods.toml | 20 - .../forge/src/test/resources/pack.mcmeta | 6 - 60 files changed, 3346 deletions(-) delete mode 100644 platforms/forge/build.gradle.kts.old delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeUtil.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/config/PostLoadCompatibilityOptions.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/config/PreLoadCompatibilityOptions.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/listener/RegistryListener.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/DimensionGeneratorSettingsMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/AbstractSpawnerAccessor.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/BiomeGeneratorTypeScreensAccessor.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/CommandSourceMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/package-info.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftClientMixin.java delete mode 100644 platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftServerMixin.java delete mode 100644 platforms/forge/src/main/resources/META-INF/mods.toml delete mode 100644 platforms/forge/src/main/resources/pack.mcmeta delete mode 100644 platforms/forge/src/main/resources/terra.mixins.json delete mode 100644 platforms/forge/src/test/resources/META-INF/mods.toml delete mode 100644 platforms/forge/src/test/resources/pack.mcmeta diff --git a/platforms/forge/build.gradle.kts.old b/platforms/forge/build.gradle.kts.old deleted file mode 100644 index b92c19880..000000000 --- a/platforms/forge/build.gradle.kts.old +++ /dev/null @@ -1,138 +0,0 @@ -import com.dfsek.terra.configureCommon -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import net.minecraftforge.gradle.common.util.RunConfig -import net.minecraftforge.gradle.userdev.UserDevExtension -import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace - -buildscript { - repositories { - maven { url = uri("https://files.minecraftforge.net/maven") } - mavenCentral() - maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } - } - dependencies { - classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = "4.1.+") - classpath("org.spongepowered:mixingradle:0.7-SNAPSHOT") - } -} -apply(plugin = "net.minecraftforge.gradle") -apply(plugin = "org.spongepowered.mixin") - -configure { - add(sourceSets.main.get(), "terra-refmap.json") -} - -plugins { - id("com.modrinth.minotaur").version("1.1.0") -} - -configureCommon() - - -repositories { - maven { url = uri("https://files.minecraftforge.net/maven") } - mavenCentral() - maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } -} - -val forgeVersion = "36.1.13" -val mcVersion = "1.16.5" -dependencies { - "shadedApi"(project(":common")) - "minecraft"("net.minecraftforge:forge:$mcVersion-$forgeVersion") - "annotationProcessor"("org.spongepowered:mixin:0.8.2:processor") -} - -if ("true" == System.getProperty("idea.sync.active")) { - afterEvaluate { - tasks.withType().all { - options.annotationProcessorPath = files() - } - } -} - - -tasks.named("shadowJar") { - archiveBaseName.set(tasks.getByName("jar").archiveBaseName.orNull) // Pain. Agony, even. - archiveClassifier.set("") // Suffering, if you will. -} - -afterEvaluate { - tasks.named("reobfJar") { - val shadow = tasks.getByName("shadowJar"); - dependsOn(shadow) - input = shadow.archiveFile.orNull?.asFile - } -} - -configure { - mappings(mapOf( - "channel" to "official", - "version" to mcVersion - )) - runs { - val runConfig = Action { - properties(mapOf( - //"forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP", - "forge.logging.console.level" to "debug" - )) - arg("-mixin.config=terra.mixins.json") - workingDirectory = project.file("run").canonicalPath - source(sourceSets["main"]) - } - create("client", runConfig) - create("server", runConfig) - } -} - -tasks.register("deobfJar") { - from(sourceSets["main"].output) - archiveClassifier.set("dev") - group = "forge" -} - -val deobfElements = configurations.register("deobfElements") { - isVisible = false - description = "De-obfuscated elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.EXTERNAL)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) - } - outgoing.artifact(tasks.named("deobfJar")) -} - -val javaComponent = components["java"] as AdhocComponentWithVariants -javaComponent.addVariantsFromConfiguration(deobfElements.get()) { - mapToMavenScope("runtime") -} - -tasks.jar { - manifest { - attributes(mapOf( - "Specification-Title" to "terra", - "Specification-Vendor" to "Terra", - "Specification-Version" to "1.0", - "Implementation-Title" to "Terra", - "Implementation-Version" to project.version, - "Implementation-Vendor" to "terra", - "MixinConfigs" to "terra.mixins.json" - )) - } -} - -tasks.register("publishModrinthForge") { - dependsOn("reobfJar") - group = "forge" - token = System.getenv("MODRINTH_SECRET") - projectId = "FIlZB9L0" - versionNumber = "${project.version}-forge" - uploadFile = tasks.named("reobfJar").get().input.absoluteFile - releaseType = "alpha" - addGameVersion("1.16.5") - addLoader("forge") -} \ No newline at end of file diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java deleted file mode 100644 index 4eceae900..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAdapter.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.dfsek.terra.forge; - -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.entity.Container; -import com.dfsek.terra.api.block.entity.MobSpawner; -import com.dfsek.terra.api.block.entity.Sign; -import com.dfsek.terra.forge.block.ForgeBlockData; -import com.dfsek.terra.forge.block.data.ForgeDirectional; -import com.dfsek.terra.forge.block.data.ForgeMultipleFacing; -import com.dfsek.terra.forge.block.data.ForgeOrientable; -import com.dfsek.terra.forge.block.data.ForgeRotatable; -import com.dfsek.terra.forge.block.data.ForgeSlab; -import com.dfsek.terra.forge.block.data.ForgeStairs; -import com.dfsek.terra.forge.block.data.ForgeWaterlogged; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.LockableLootTileEntity; -import net.minecraft.tileentity.MobSpawnerTileEntity; -import net.minecraft.tileentity.SignTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; - -import java.util.Arrays; - -public final class ForgeAdapter { - public static BlockPos adapt(Vector3 v) { - return new BlockPos(v.getBlockX(), v.getBlockY(), v.getBlockZ()); - } - - public static Vector3 adapt(BlockPos pos) { - return new Vector3(pos.getX(), pos.getY(), pos.getZ()); - } - - public static ForgeBlockData adapt(BlockState state) { - if(state.hasProperty(BlockStateProperties.STAIRS_SHAPE)) return new ForgeStairs(state); - - if(state.hasProperty(BlockStateProperties.SLAB_TYPE)) return new ForgeSlab(state); - - if(state.hasProperty(BlockStateProperties.AXIS)) return new ForgeOrientable(state, BlockStateProperties.AXIS); - if(state.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) return new ForgeOrientable(state, BlockStateProperties.HORIZONTAL_AXIS); - - if(state.hasProperty(BlockStateProperties.ROTATION_16)) return new ForgeRotatable(state); - - if(state.hasProperty(BlockStateProperties.FACING)) return new ForgeDirectional(state, BlockStateProperties.FACING); - if(state.hasProperty(BlockStateProperties.FACING_HOPPER)) return new ForgeDirectional(state, BlockStateProperties.FACING_HOPPER); - if(state.hasProperty(BlockStateProperties.HORIZONTAL_FACING)) - return new ForgeDirectional(state, BlockStateProperties.HORIZONTAL_FACING); - - if(state.getProperties().containsAll(Arrays.asList(BlockStateProperties.NORTH, BlockStateProperties.SOUTH, BlockStateProperties.EAST, BlockStateProperties.WEST))) - return new ForgeMultipleFacing(state); - if(state.hasProperty(BlockStateProperties.WATERLOGGED)) return new ForgeWaterlogged(state); - return new ForgeBlockData(state); - } - - public static com.dfsek.terra.api.block.entity.BlockState adapt(com.dfsek.terra.api.block.Block block) { - IWorld worldAccess = (IWorld) block.getLocation().getWorld(); - - TileEntity entity = worldAccess.getBlockEntity(adapt(block.getLocation().toVector())); - if(entity instanceof SignTileEntity) { - return (Sign) entity; - } else if(entity instanceof MobSpawnerTileEntity) { - return (MobSpawner) entity; - } else if(entity instanceof LockableLootTileEntity) { - return (Container) entity; - } - return null; - } - - public static Direction adapt(BlockFace face) { - switch(face) { - case NORTH: - return Direction.NORTH; - case WEST: - return Direction.WEST; - case SOUTH: - return Direction.SOUTH; - case EAST: - return Direction.EAST; - case UP: - return Direction.UP; - case DOWN: - return Direction.DOWN; - default: - throw new IllegalArgumentException("Illegal direction: " + face); - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeUtil.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeUtil.java deleted file mode 100644 index e7f77feec..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeUtil.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.dfsek.terra.forge; - -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.config.builder.BiomeBuilder; -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.forge.config.PostLoadCompatibilityOptions; -import com.dfsek.terra.forge.config.PreLoadCompatibilityOptions; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.WorldGenRegistries; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.BiomeAmbience; -import net.minecraft.world.biome.BiomeGenerationSettings; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.carver.ConfiguredCarver; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.StructureFeature; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Locale; -import java.util.Map; -import java.util.function.Supplier; - -public final class ForgeUtil { - public static String createBiomeID(ConfigPack pack, String biomeID) { - return pack.getTemplate().getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT); - } - - public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, TerraForgePlugin.ForgeAddon forgeAddon) { - BiomeTemplate template = biome.getTemplate(); - Map colors = template.getColors(); - - Biome vanilla = (Biome) (new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0)).getHandle(); - - BiomeGenerationSettings.Builder generationSettings = new BiomeGenerationSettings.Builder(); - - generationSettings.surfaceBuilder(vanilla.getGenerationSettings().getSurfaceBuilder()); // It needs a surfacebuilder, even though we dont use it. - - generationSettings.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, TerraForgePlugin.POPULATOR_CONFIGURED_FEATURE); - - if(pack.getTemplate().vanillaCaves()) { - for(GenerationStage.Carving carver : GenerationStage.Carving.values()) { - for(Supplier> configuredCarverSupplier : vanilla.getGenerationSettings().getCarvers(carver)) { - generationSettings.addCarver(carver, configuredCarverSupplier.get()); - } - } - } - - Pair pair = forgeAddon.getTemplates().get(pack); - PreLoadCompatibilityOptions compatibilityOptions = pair.getLeft(); - PostLoadCompatibilityOptions postLoadCompatibilityOptions = pair.getRight(); - - TerraForgePlugin.getInstance().getDebugLogger().info("Injecting Vanilla structures and features into Terra biome " + biome.getTemplate().getID()); - - for(Supplier> structureFeature : vanilla.getGenerationSettings().structures()) { - ResourceLocation key = WorldGenRegistries.CONFIGURED_STRUCTURE_FEATURE.getKey(structureFeature.get()); - if(!compatibilityOptions.getExcludedBiomeStructures().contains(key) && !postLoadCompatibilityOptions.getExcludedPerBiomeStructures().getOrDefault(biome, Collections.emptySet()).contains(key)) { - generationSettings.addStructureStart(structureFeature.get()); - TerraForgePlugin.getInstance().getDebugLogger().info("Injected structure " + key); - } - } - - if(compatibilityOptions.doBiomeInjection()) { - for(int step = 0; step < vanilla.getGenerationSettings().features().size(); step++) { - for(Supplier> featureSupplier : vanilla.getGenerationSettings().features().get(step)) { - ResourceLocation key = WorldGenRegistries.CONFIGURED_FEATURE.getKey(featureSupplier.get()); - if(!compatibilityOptions.getExcludedBiomeFeatures().contains(key) && !postLoadCompatibilityOptions.getExcludedPerBiomeFeatures().getOrDefault(biome, Collections.emptySet()).contains(key)) { - generationSettings.addFeature(step, featureSupplier); - TerraForgePlugin.getInstance().getDebugLogger().info("Injected feature " + key + " at stage " + step); - } - } - } - } - - BiomeAmbience vanillaEffects = vanilla.getSpecialEffects(); - BiomeAmbience.Builder effects = new BiomeAmbience.Builder() - .waterColor(colors.getOrDefault("water", vanillaEffects.getWaterColor())) - .waterFogColor(colors.getOrDefault("water-fog", vanillaEffects.getWaterFogColor())) - .fogColor(colors.getOrDefault("fog", vanillaEffects.getFogColor())) - .skyColor(colors.getOrDefault("sky", vanillaEffects.getSkyColor())) - .grassColorModifier(vanillaEffects.getGrassColorModifier()); - - if(colors.containsKey("grass")) { - effects.grassColorOverride(colors.get("grass")); - } else { - vanillaEffects.getGrassColorOverride().ifPresent(effects::grassColorOverride); - } - - if(colors.containsKey("foliage")) { - effects.foliageColorOverride(colors.get("foliage")); - } else { - vanillaEffects.getFoliageColorOverride().ifPresent(effects::foliageColorOverride); - } - - return new Biome.Builder() - .precipitation(vanilla.getPrecipitation()) - .biomeCategory(vanilla.getBiomeCategory()) - .depth(vanilla.getDepth()) - .scale(vanilla.getScale()) - .temperature(vanilla.getBaseTemperature()) - .downfall(vanilla.getDownfall()) - .specialEffects(effects.build()) - .mobSpawnSettings(vanilla.getMobSettings()) - .generationSettings(generationSettings.build()) - .build() - .setRegistryName("terra", createBiomeID(template.getPack(), template.getID())); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java deleted file mode 100644 index deaa61a19..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ /dev/null @@ -1,408 +0,0 @@ -package com.dfsek.terra.forge; - -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeRegistry; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.addons.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.command.CommandManager; -import com.dfsek.terra.api.command.TerraCommandManager; -import com.dfsek.terra.api.command.exception.MalformedCommandException; -import com.dfsek.terra.api.event.EventListener; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.TerraEventManager; -import com.dfsek.terra.api.event.annotations.Global; -import com.dfsek.terra.api.event.annotations.Priority; -import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; -import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.LockedRegistry; -import com.dfsek.terra.api.transform.Transformer; -import com.dfsek.terra.api.transform.Validator; -import com.dfsek.terra.api.util.JarUtil; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.logging.DebugLogger; -import com.dfsek.terra.commands.CommandUtil; -import com.dfsek.terra.config.GenericLoaders; -import com.dfsek.terra.config.PluginConfig; -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.forge.config.PostLoadCompatibilityOptions; -import com.dfsek.terra.forge.config.PreLoadCompatibilityOptions; -import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; -import com.dfsek.terra.forge.generation.PopulatorFeature; -import com.dfsek.terra.forge.generation.TerraBiomeSource; -import com.dfsek.terra.forge.handle.ForgeItemHandle; -import com.dfsek.terra.forge.handle.ForgeWorldHandle; -import com.dfsek.terra.profiler.Profiler; -import com.dfsek.terra.profiler.ProfilerImpl; -import com.dfsek.terra.registry.exception.DuplicateEntryException; -import com.dfsek.terra.registry.master.AddonRegistry; -import com.dfsek.terra.registry.master.ConfigRegistry; -import com.dfsek.terra.world.TerraWorld; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.WorldGenRegistries; -import net.minecraft.world.DimensionType; -import net.minecraft.world.IWorld; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.Features; -import net.minecraft.world.gen.feature.IFeatureConfig; -import net.minecraft.world.gen.feature.NoFeatureConfig; -import net.minecraft.world.gen.placement.DecoratedPlacement; -import net.minecraft.world.gen.placement.NoPlacementConfig; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.ForgeRegistry; -import org.apache.commons.io.FileUtils; -import org.apache.logging.log4j.LogManager; -import org.objectweb.asm.Type; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URISyntaxException; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.jar.JarFile; -import java.util.zip.ZipFile; - -@Mod("terra") -@Mod.EventBusSubscriber(modid = "terra", bus = Mod.EventBusSubscriber.Bus.MOD) -public class TerraForgePlugin implements TerraPlugin { - public static final PopulatorFeature POPULATOR_FEATURE = (PopulatorFeature) new PopulatorFeature(NoFeatureConfig.CODEC).setRegistryName("terra", "terra"); - public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configured(IFeatureConfig.NONE).decorated(DecoratedPlacement.NOPE.configured(NoPlacementConfig.INSTANCE)); - - private static TerraForgePlugin INSTANCE; - private final Map> worldMap = new HashMap<>(); - private final EventManager eventManager = new TerraEventManager(this); - private final GenericLoaders genericLoaders = new GenericLoaders(this); - private final Profiler profiler = new ProfilerImpl(); - - private final CommandManager manager = new TerraCommandManager(this); - - private final com.dfsek.terra.api.util.logging.Logger logger = new com.dfsek.terra.api.util.logging.Logger() { - private final org.apache.logging.log4j.Logger logger = LogManager.getLogger(); - - @Override - public void info(String message) { - logger.info(message); - } - - @Override - public void warning(String message) { - logger.warn(message); - } - - @Override - public void severe(String message) { - logger.error(message); - } - }; - - private final DebugLogger debugLogger = new DebugLogger(logger); - private final ItemHandle itemHandle = new ForgeItemHandle(); - private final WorldHandle worldHandle = new ForgeWorldHandle(); - private final ConfigRegistry registry = new ConfigRegistry(); - private final CheckedRegistry checkedRegistry = new CheckedRegistry<>(registry); - - private final ForgeAddon addon = new ForgeAddon(this); - - private final AddonRegistry addonRegistry = new AddonRegistry(addon, this); - private final LockedRegistry addonLockedRegistry = new LockedRegistry<>(addonRegistry); - private final PluginConfig config = new PluginConfig(); - private final Transformer biomeFixer = new Transformer.Builder() - .addTransform(id -> ForgeRegistries.BIOMES.getValue(ResourceLocation.tryParse(id)), Validator.notNull()) - .addTransform(id -> ForgeRegistries.BIOMES.getValue(ResourceLocation.tryParse("minecraft:" + id.toLowerCase())), Validator.notNull()).build(); - private final File dataFolder; - - public TerraForgePlugin() { - if(INSTANCE != null) throw new IllegalStateException("Only one TerraPlugin instance may exist."); - INSTANCE = this; - this.dataFolder = Paths.get("config", "Terra").toFile(); - saveDefaultConfig(); - config.load(this); - debugLogger.setDebug(config.isDebug()); - LangUtil.load(config.getLanguage(), this); - try { - CommandUtil.registerAll(manager); - } catch(MalformedCommandException e) { - e.printStackTrace(); // TODO do something here even though this should literally never happen - } - } - - public static TerraForgePlugin getInstance() { - return INSTANCE; - } - - @SubscribeEvent - public static void setupListener(FMLCommonSetupEvent event) { - event.enqueueWork(() -> { - Registry.register(Registry.BIOME_SOURCE, "terra:biome", TerraBiomeSource.CODEC); - Registry.register(Registry.CHUNK_GENERATOR, "terra:generator", ForgeChunkGeneratorWrapper.CODEC); - }); - } - - public void init() { - logger.info("Initializing Terra..."); - - if(!addonRegistry.loadAll()) { - throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); - } - logger.info("Loaded addons."); - - registry.loadAll(this); - logger.info("Loaded packs."); - - ((ForgeRegistry) ForgeRegistries.BIOMES).unfreeze(); // Evil - getConfigRegistry().forEach(pack -> pack.getBiomeRegistry().forEach((id, biome) -> ForgeRegistries.BIOMES.register(ForgeUtil.createBiome(biome, pack, addon)))); // Register all Terra biomes. - ((ForgeRegistry) ForgeRegistries.BIOMES).freeze(); - } - - @Override - public WorldHandle getWorldHandle() { - return worldHandle; - } - - @Override - public TerraWorld getWorld(World world) { - return getWorld(((IWorld) world).dimensionType()); - } - - public TerraWorld getWorld(DimensionType type) { - TerraWorld world = worldMap.get(type).getRight(); - if(world == null) throw new IllegalArgumentException("No world exists with dimension type " + type); - return world; - } - - /** - * evil code brought to you by Forge Mod Loader - *

- * Forge changes the JAR URI to something that cannot - * be resolved back to the original JAR, so we have to - * do this to get our JAR. - */ - @Override - public JarFile getModJar() throws URISyntaxException, IOException { - File modsDir = new File("./mods"); - - if(!modsDir.exists()) return JarUtil.getJarFile(); - - for(File file : Objects.requireNonNull(modsDir.listFiles((dir, name) -> name.endsWith(".jar")))) { - try(ZipFile zipFile = new ZipFile(file)) { - if(zipFile.getEntry(Type.getInternalName(TerraPlugin.class) + ".class") != null) { - return new JarFile(file); - } - } - } - return JarUtil.getJarFile(); - } - - @Override - public com.dfsek.terra.api.util.logging.Logger logger() { - return logger; - } - - @Override - public PluginConfig getTerraConfig() { - return config; - } - - @Override - public File getDataFolder() { - return dataFolder; - } - - @Override - public boolean isDebug() { - return config.isDebug(); - } - - @Override - public Language getLanguage() { - return LangUtil.getLanguage(); - } - - @Override - public CheckedRegistry getConfigRegistry() { - return checkedRegistry; - } - - @Override - public LockedRegistry getAddons() { - return addonLockedRegistry; - } - - @Override - public boolean reload() { - config.load(this); - LangUtil.load(config.getLanguage(), this); // Load language. - boolean succeed = registry.loadAll(this); - worldMap.forEach((seed, pair) -> { - pair.getRight().getConfig().getSamplerCache().clear(); - String packID = pair.getRight().getConfig().getTemplate().getID(); - pair.setRight(new TerraWorld(pair.getRight().getWorld(), registry.get(packID), this)); - }); - return succeed; - } - - @Override - public ItemHandle getItemHandle() { - return itemHandle; - } - - @Override - public void saveDefaultConfig() { - try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { - File configFile = new File(getDataFolder(), "config.yml"); - if(!configFile.exists()) FileUtils.copyInputStreamToFile(stream, configFile); - } catch(IOException e) { - e.printStackTrace(); - } - } - - @Override - public String platformName() { - return "Forge"; - } - - @Override - public DebugLogger getDebugLogger() { - return debugLogger; - } - - @Override - public void register(TypeRegistry registry) { - genericLoaders.register(registry); - registry - .registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o)) - .registerLoader(com.dfsek.terra.api.world.Biome.class, (t, o, l) -> biomeFixer.translate((String) o)) - .registerLoader(ResourceLocation.class, (t, o, l) -> { - ResourceLocation identifier = ResourceLocation.tryParse((String) o); - if(identifier == null) throw new LoadException("Invalid identifier: " + o); - return identifier; - }); - } - - @Override - public EventManager getEventManager() { - return eventManager; - } - - @Override - public Profiler getProfiler() { - return profiler; - } - - public CommandManager getManager() { - return manager; - } - - public Map> getWorldMap() { - return worldMap; - } - - @Addon("Terra-Forge") - @Author("Terra") - @Version("1.0.0") - public static final class ForgeAddon extends TerraAddon implements EventListener { - - private final Map> templates = new HashMap<>(); - - private final TerraPlugin main; - - private ForgeAddon(TerraPlugin main) { - this.main = main; - } - - @Override - public void initialize() { - main.getEventManager().registerListener(this, this); - } - - @Priority(Priority.LOWEST) - @Global - public void injectTrees(ConfigPackPreLoadEvent event) { - CheckedRegistry treeRegistry = event.getPack().getRegistry(Tree.class); - injectTree(treeRegistry, "BROWN_MUSHROOM", Features.HUGE_BROWN_MUSHROOM); - injectTree(treeRegistry, "RED_MUSHROOM", Features.HUGE_RED_MUSHROOM); - injectTree(treeRegistry, "JUNGLE", Features.MEGA_JUNGLE_TREE); - injectTree(treeRegistry, "JUNGLE_COCOA", Features.JUNGLE_TREE); - injectTree(treeRegistry, "LARGE_OAK", Features.FANCY_OAK); - injectTree(treeRegistry, "LARGE_SPRUCE", Features.PINE); - injectTree(treeRegistry, "SMALL_JUNGLE", Features.JUNGLE_TREE); - injectTree(treeRegistry, "SWAMP_OAK", Features.SWAMP_TREE); - injectTree(treeRegistry, "TALL_BIRCH", Features.BIRCH_TALL); - injectTree(treeRegistry, "ACACIA", Features.ACACIA); - injectTree(treeRegistry, "BIRCH", Features.BIRCH); - injectTree(treeRegistry, "DARK_OAK", Features.DARK_OAK); - injectTree(treeRegistry, "OAK", Features.OAK); - injectTree(treeRegistry, "CHORUS_PLANT", Features.CHORUS_PLANT); - injectTree(treeRegistry, "SPRUCE", Features.SPRUCE); - injectTree(treeRegistry, "JUNGLE_BUSH", Features.JUNGLE_BUSH); - injectTree(treeRegistry, "MEGA_SPRUCE", Features.MEGA_SPRUCE); - injectTree(treeRegistry, "CRIMSON_FUNGUS", Features.CRIMSON_FUNGI); - injectTree(treeRegistry, "WARPED_FUNGUS", Features.WARPED_FUNGI); - PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - if(template.doRegistryInjection()) { - WorldGenRegistries.CONFIGURED_FEATURE.entrySet().forEach(entry -> { - if(!template.getExcludedRegistryFeatures().contains(entry.getKey().getRegistryName())) { - try { - event.getPack().getTreeRegistry().add(entry.getKey().getRegistryName().toString(), (Tree) entry.getValue()); - main.getDebugLogger().info("Injected ConfiguredFeature " + entry.getKey().getRegistryName() + " as Tree: " + entry.getValue()); - } catch(DuplicateEntryException ignored) { - } - } - }); - } - templates.put(event.getPack(), Pair.of(template, null)); - } - - @Priority(Priority.HIGHEST) - @Global - public void createInjectionOptions(ConfigPackPostLoadEvent event) { - PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); - - try { - event.loadTemplate(template); - } catch(ConfigException e) { - e.printStackTrace(); - } - - templates.get(event.getPack()).setRight(template); - } - - - private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { - try { - registry.add(id, (Tree) tree); - } catch(DuplicateEntryException ignore) { - } - } - - public Map> getTemplates() { - return templates; - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java deleted file mode 100644 index 6772a9825..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlock.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.dfsek.terra.forge.block; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.entity.BlockState; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.forge.ForgeAdapter; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; - -public class ForgeBlock implements Block { - private final Handle delegate; - - public ForgeBlock(BlockPos position, IWorld worldAccess) { - this.delegate = new Handle(position, worldAccess); - } - - @Override - public void setBlockData(BlockData data, boolean physics) { - delegate.worldAccess.setBlock(delegate.position, ((ForgeBlockData) data).getHandle(), physics ? 3 : 1042); - if(physics && ((ForgeBlockData) data).getHandle().getBlock() instanceof FlowingFluidBlock) { - delegate.worldAccess.getLiquidTicks().scheduleTick(delegate.position, ((FlowingFluidBlock) ((ForgeBlockData) data).getHandle().getBlock()).getFluidState(((ForgeBlockData) data).getHandle()).getFluidState().getType(), 0); - } - } - - @Override - public BlockData getBlockData() { - return new ForgeBlockData(delegate.worldAccess.getBlockState(delegate.position)); - } - - @Override - public BlockState getState() { - return ForgeAdapter.adapt(this); - } - - @Override - public Block getRelative(BlockFace face, int len) { - BlockPos newPos = delegate.position.offset(face.getModX() * len, face.getModY() * len, face.getModZ() * len); - return new ForgeBlock(newPos, delegate.worldAccess); - } - - @Override - public boolean isEmpty() { - return getBlockData().isAir(); - } - - @Override - public Location getLocation() { - return ForgeAdapter.adapt(delegate.position).toLocation((World) delegate.worldAccess); - } - - @Override - public BlockType getType() { - return getBlockData().getBlockType(); - } - - @Override - public int getX() { - return delegate.position.getX(); - } - - @Override - public int getZ() { - return delegate.position.getZ(); - } - - @Override - public int getY() { - return delegate.position.getY(); - } - - @Override - public boolean isPassable() { - return isEmpty(); - } - - @Override - public Handle getHandle() { - return delegate; - } - - public static final class Handle { - private final BlockPos position; - private final IWorld worldAccess; - - public Handle(BlockPos position, IWorld worldAccess) { - this.position = position; - this.worldAccess = worldAccess; - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java deleted file mode 100644 index 91c88275d..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/ForgeBlockData.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.dfsek.terra.forge.block; - -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockType; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.state.Property; -import net.minecraftforge.registries.ForgeRegistries; - -import javax.annotation.Nullable; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.stream.Collectors; - -public class ForgeBlockData implements BlockData { - private static final Function, Comparable>, String> PROPERTY_MAPPER = new Function, Comparable>, String>() { - public String apply(@Nullable Map.Entry, Comparable> entry) { - if(entry == null) { - return ""; - } else { - Property property = entry.getKey(); - return property.getName() + "=" + this.getName(property, entry.getValue()); - } - } - - @SuppressWarnings("unchecked") - private > String getName(Property property, Comparable comparable) { - return property.getName((T) comparable); - } - }; - - protected BlockState delegate; - - public ForgeBlockData(BlockState delegate) { - this.delegate = delegate; - } - - @Override - public BlockType getBlockType() { - return (BlockType) delegate.getBlock(); - } - - @Override - public boolean matches(BlockData other) { - return delegate.getBlock() == ((ForgeBlockData) other).delegate.getBlock(); - } - - @Override - public BlockData clone() { - try { - return (ForgeBlockData) super.clone(); - } catch(CloneNotSupportedException e) { - throw new Error(e); - } - } - - @Override - public String getAsString() { - StringBuilder data = new StringBuilder(Objects.requireNonNull(ForgeRegistries.BLOCKS.getKey(delegate.getBlock())).toString()); - if(!delegate.getProperties().isEmpty()) { - data.append('['); - data.append(delegate.getValues().entrySet().stream().map(PROPERTY_MAPPER).collect(Collectors.joining(","))); - data.append(']'); - } - return data.toString(); - } - - @Override - public boolean isAir() { - return delegate.isAir(); - } - - @Override - public boolean isStructureVoid() { - return delegate.getBlock() == Blocks.STRUCTURE_VOID; - } - - @Override - public BlockState getHandle() { - return delegate; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java deleted file mode 100644 index 29ff41d12..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeAnaloguePowerable.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.data.AnaloguePowerable; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; - -/** - * None of this actually has implementation, TODO: implement this if we ever end up needing it. - */ -public class ForgeAnaloguePowerable extends ForgeBlockData implements AnaloguePowerable { - public ForgeAnaloguePowerable(BlockState delegate) { - super(delegate); - } - - @Override - public int getMaximumPower() { - return 0; - } - - @Override - public int getPower() { - return 0; - } - - @Override - public void setPower(int power) { - - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java deleted file mode 100644 index e3a958077..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeDirectional.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Directional; -import com.dfsek.terra.forge.ForgeAdapter; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.state.DirectionProperty; - -public class ForgeDirectional extends ForgeBlockData implements Directional { - private final DirectionProperty property; - - public ForgeDirectional(BlockState delegate, DirectionProperty property) { - super(delegate); - this.property = property; - } - - @Override - public BlockFace getFacing() { - switch(delegate.getValue(property)) { - case SOUTH: - return BlockFace.SOUTH; - case DOWN: - return BlockFace.DOWN; - case UP: - return BlockFace.UP; - case EAST: - return BlockFace.EAST; - case WEST: - return BlockFace.WEST; - case NORTH: - return BlockFace.NORTH; - default: - throw new IllegalStateException(); - } - } - - @Override - public void setFacing(BlockFace facing) { - delegate = delegate.setValue(property, ForgeAdapter.adapt(facing)); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java deleted file mode 100644 index 80e685df2..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeEnumAdapter.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.Axis; -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Bisected; -import com.dfsek.terra.api.block.data.Slab; -import com.dfsek.terra.api.block.data.Stairs; -import net.minecraft.state.properties.Half; -import net.minecraft.state.properties.SlabType; -import net.minecraft.state.properties.StairsShape; -import net.minecraft.util.Direction; - -public final class ForgeEnumAdapter { - public static Stairs.Shape adapt(StairsShape shape) { - switch(shape) { - case OUTER_RIGHT: - return Stairs.Shape.OUTER_RIGHT; - case INNER_RIGHT: - return Stairs.Shape.INNER_RIGHT; - case OUTER_LEFT: - return Stairs.Shape.OUTER_LEFT; - case INNER_LEFT: - return Stairs.Shape.INNER_LEFT; - case STRAIGHT: - return Stairs.Shape.STRAIGHT; - default: - throw new IllegalStateException(); - } - } - - public static Bisected.Half adapt(Half half) { - switch(half) { - case BOTTOM: - return Bisected.Half.BOTTOM; - case TOP: - return Bisected.Half.TOP; - default: - throw new IllegalStateException(); - } - } - - public static BlockFace adapt(Direction direction) { - switch(direction) { - case DOWN: - return BlockFace.DOWN; - case UP: - return BlockFace.UP; - case WEST: - return BlockFace.WEST; - case EAST: - return BlockFace.EAST; - case NORTH: - return BlockFace.NORTH; - case SOUTH: - return BlockFace.SOUTH; - default: - throw new IllegalStateException(); - } - } - - public static Slab.Type adapt(SlabType type) { - switch(type) { - case BOTTOM: - return Slab.Type.BOTTOM; - case TOP: - return Slab.Type.TOP; - case DOUBLE: - return Slab.Type.DOUBLE; - default: - throw new IllegalStateException(); - } - } - - public static StairsShape adapt(Stairs.Shape shape) { - switch(shape) { - case STRAIGHT: - return StairsShape.STRAIGHT; - case INNER_LEFT: - return StairsShape.INNER_LEFT; - case OUTER_LEFT: - return StairsShape.OUTER_LEFT; - case INNER_RIGHT: - return StairsShape.INNER_RIGHT; - case OUTER_RIGHT: - return StairsShape.OUTER_RIGHT; - default: - throw new IllegalStateException(); - } - } - - public static Half adapt(Bisected.Half half) { - switch(half) { - case TOP: - return Half.TOP; - case BOTTOM: - return Half.BOTTOM; - default: - throw new IllegalStateException(); - } - } - - public static Direction adapt(BlockFace face) { - switch(face) { - case SOUTH: - return Direction.SOUTH; - case NORTH: - return Direction.NORTH; - case EAST: - return Direction.EAST; - case WEST: - return Direction.WEST; - case UP: - return Direction.UP; - case DOWN: - return Direction.DOWN; - default: - throw new IllegalArgumentException(); - } - } - - public static SlabType adapt(Slab.Type type) { - switch(type) { - case DOUBLE: - return SlabType.DOUBLE; - case TOP: - return SlabType.TOP; - case BOTTOM: - return SlabType.BOTTOM; - default: - throw new IllegalStateException(); - } - } - - public static Axis adapt(Direction.Axis axis) { - switch(axis) { - case X: - return Axis.X; - case Y: - return Axis.Y; - case Z: - return Axis.Z; - default: - throw new IllegalStateException(); - } - } - - public static Direction.Axis adapt(Axis axis) { - switch(axis) { - case Z: - return Direction.Axis.Z; - case Y: - return Direction.Axis.Y; - case X: - return Direction.Axis.X; - default: - throw new IllegalStateException(); - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java deleted file mode 100644 index 50ea34971..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeMultipleFacing.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.MultipleFacing; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; - -import java.util.HashSet; -import java.util.Set; - -public class ForgeMultipleFacing extends ForgeBlockData implements MultipleFacing { - public ForgeMultipleFacing(BlockState delegate) { - super(delegate); - } - - @Override - public Set getFaces() { - Set set = new HashSet<>(); - if(delegate.getValue(BlockStateProperties.NORTH)) set.add(BlockFace.NORTH); - if(delegate.getValue(BlockStateProperties.SOUTH)) set.add(BlockFace.SOUTH); - if(delegate.getValue(BlockStateProperties.EAST)) set.add(BlockFace.EAST); - if(delegate.getValue(BlockStateProperties.WEST)) set.add(BlockFace.WEST); - if(delegate.hasProperty(BlockStateProperties.UP) && delegate.getValue(BlockStateProperties.UP)) set.add(BlockFace.UP); - if(delegate.hasProperty(BlockStateProperties.DOWN) && delegate.getValue(BlockStateProperties.DOWN)) set.add(BlockFace.DOWN); - return set; - } - - @Override - public void setFace(BlockFace face, boolean facing) { - switch(face) { - case NORTH: - delegate = delegate.setValue(BlockStateProperties.NORTH, facing); - break; - case SOUTH: - delegate = delegate.setValue(BlockStateProperties.SOUTH, facing); - break; - case EAST: - delegate = delegate.setValue(BlockStateProperties.EAST, facing); - break; - case WEST: - delegate = delegate.setValue(BlockStateProperties.WEST, facing); - break; - case UP: - delegate = delegate.setValue(BlockStateProperties.UP, facing); - break; - case DOWN: - delegate = delegate.setValue(BlockStateProperties.DOWN, facing); - break; - } - } - - @Override - public Set getAllowedFaces() { - Set set = new HashSet<>(); - if(delegate.hasProperty(BlockStateProperties.NORTH)) set.add(BlockFace.NORTH); - if(delegate.hasProperty(BlockStateProperties.SOUTH)) set.add(BlockFace.SOUTH); - if(delegate.hasProperty(BlockStateProperties.EAST)) set.add(BlockFace.EAST); - if(delegate.hasProperty(BlockStateProperties.WEST)) set.add(BlockFace.WEST); - if(delegate.hasProperty(BlockStateProperties.UP)) set.add(BlockFace.UP); - if(delegate.hasProperty(BlockStateProperties.DOWN)) set.add(BlockFace.DOWN); - return set; - } - - @Override - public boolean hasFace(BlockFace f) { - return getFaces().contains(f); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java deleted file mode 100644 index b9f52f028..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeOrientable.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.Axis; -import com.dfsek.terra.api.block.data.Orientable; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.state.EnumProperty; -import net.minecraft.util.Direction; - -import java.util.Arrays; -import java.util.Set; -import java.util.stream.Collectors; - -public class ForgeOrientable extends ForgeBlockData implements Orientable { - private final EnumProperty property; - - public ForgeOrientable(BlockState delegate, EnumProperty property) { - super(delegate); - this.property = property; - } - - @Override - public Set getAxes() { - return Arrays.stream(Axis.values()).collect(Collectors.toSet()); - } - - @Override - public Axis getAxis() { - return ForgeEnumAdapter.adapt(getHandle().getValue(property)); - } - - @Override - public void setAxis(Axis axis) { - delegate = delegate.setValue(property, ForgeEnumAdapter.adapt(axis)); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java deleted file mode 100644 index fd3d7cfbb..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeRotatable.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Rotatable; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; - -public class ForgeRotatable extends ForgeBlockData implements Rotatable { - public ForgeRotatable(BlockState delegate) { - super(delegate); - } - - @Override - public BlockFace getRotation() { - int r = delegate.getValue(BlockStateProperties.ROTATION_16); - switch(r) { - case 0: - return BlockFace.SOUTH; - case 1: - return BlockFace.SOUTH_SOUTH_WEST; - case 2: - return BlockFace.SOUTH_WEST; - case 3: - return BlockFace.WEST_SOUTH_WEST; - case 4: - return BlockFace.WEST; - case 5: - return BlockFace.WEST_NORTH_WEST; - case 6: - return BlockFace.NORTH_WEST; - case 7: - return BlockFace.NORTH_NORTH_WEST; - case 8: - return BlockFace.NORTH; - case 9: - return BlockFace.NORTH_NORTH_EAST; - case 10: - return BlockFace.NORTH_EAST; - case 11: - return BlockFace.EAST_NORTH_EAST; - case 12: - return BlockFace.EAST; - case 13: - return BlockFace.EAST_SOUTH_EAST; - case 14: - return BlockFace.SOUTH_EAST; - case 15: - return BlockFace.SOUTH_SOUTH_EAST; - default: - throw new IllegalArgumentException("Unknown rotation " + r); - } - } - - @Override - public void setRotation(BlockFace face) { - switch(face) { - case UP: - case DOWN: - throw new IllegalArgumentException("Illegal rotation " + face); - case SOUTH: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 0); - return; - case SOUTH_SOUTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 1); - return; - case SOUTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 2); - return; - case WEST_SOUTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 3); - return; - case WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 4); - return; - case WEST_NORTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 5); - return; - case NORTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 6); - return; - case NORTH_NORTH_WEST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 7); - return; - case NORTH: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 8); - return; - case NORTH_NORTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 9); - return; - case NORTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 10); - return; - case EAST_NORTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 11); - return; - case EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 12); - return; - case EAST_SOUTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 13); - return; - case SOUTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 14); - return; - case SOUTH_SOUTH_EAST: - delegate = delegate.setValue(BlockStateProperties.ROTATION_16, 15); - return; - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java deleted file mode 100644 index 887ab27bc..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeSlab.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.data.Slab; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; - -public class ForgeSlab extends ForgeWaterlogged implements Slab { - public ForgeSlab(BlockState delegate) { - super(delegate); - } - - @Override - public Type getType() { - return ForgeEnumAdapter.adapt(delegate.getValue(BlockStateProperties.SLAB_TYPE)); - } - - @Override - public void setType(Type type) { - delegate = delegate.setValue(BlockStateProperties.SLAB_TYPE, ForgeEnumAdapter.adapt(type)); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java deleted file mode 100644 index 12f25c5fa..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeStairs.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.BlockFace; -import com.dfsek.terra.api.block.data.Stairs; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; - -public class ForgeStairs extends ForgeWaterlogged implements Stairs { - public ForgeStairs(BlockState delegate) { - super(delegate); - } - - @Override - public Shape getShape() { - return ForgeEnumAdapter.adapt(getHandle().getValue(BlockStateProperties.STAIRS_SHAPE)); - } - - @Override - public void setShape(Shape shape) { - super.delegate = getHandle().setValue(BlockStateProperties.STAIRS_SHAPE, ForgeEnumAdapter.adapt(shape)); - } - - @Override - public Half getHalf() { - return ForgeEnumAdapter.adapt(getHandle().getValue(BlockStateProperties.HALF)); - } - - @Override - public void setHalf(Half half) { - super.delegate = getHandle().setValue(BlockStateProperties.HALF, ForgeEnumAdapter.adapt(half)); - } - - @Override - public BlockFace getFacing() { - return ForgeEnumAdapter.adapt(getHandle().getValue(BlockStateProperties.HORIZONTAL_FACING)); - } - - @Override - public void setFacing(BlockFace facing) { - super.delegate = getHandle().setValue(BlockStateProperties.HORIZONTAL_FACING, ForgeEnumAdapter.adapt(facing)); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java deleted file mode 100644 index 92afbe168..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/block/data/ForgeWaterlogged.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.forge.block.data; - -import com.dfsek.terra.api.block.data.Waterlogged; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; - -public class ForgeWaterlogged extends ForgeBlockData implements Waterlogged { - public ForgeWaterlogged(BlockState delegate) { - super(delegate); - } - - @Override - public boolean isWaterlogged() { - return delegate.getValue(BlockStateProperties.WATERLOGGED); - } - - @Override - public void setWaterlogged(boolean waterlogged) { - super.delegate = delegate.setValue(BlockStateProperties.WATERLOGGED, waterlogged); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PostLoadCompatibilityOptions.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PostLoadCompatibilityOptions.java deleted file mode 100644 index 7d0bd3e5b..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PostLoadCompatibilityOptions.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.forge.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.config.builder.BiomeBuilder; -import net.minecraft.util.ResourceLocation; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("FieldMayBeFinal") -public class PostLoadCompatibilityOptions implements ConfigTemplate { - @Value("structures.inject-biome.exclude-biomes") - @Default - private Map> excludedPerBiomeStructures = new HashMap<>(); - - @Value("features.inject-biome.exclude-biomes") - @Default - private Map> excludedPerBiomeFeatures = new HashMap<>(); - - public Map> getExcludedPerBiomeFeatures() { - return excludedPerBiomeFeatures; - } - - public Map> getExcludedPerBiomeStructures() { - return excludedPerBiomeStructures; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PreLoadCompatibilityOptions.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PreLoadCompatibilityOptions.java deleted file mode 100644 index 575327b59..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/config/PreLoadCompatibilityOptions.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.forge.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; -import net.minecraft.util.ResourceLocation; - -import java.util.HashSet; -import java.util.Set; - -@SuppressWarnings("FieldMayBeFinal") -public class PreLoadCompatibilityOptions implements ConfigTemplate { - @Value("features.inject-registry.enable") - @Default - private boolean doRegistryInjection = false; - - @Value("features.inject-biome.enable") - @Default - private boolean doBiomeInjection = false; - - @Value("features.inject-registry.excluded-features") - @Default - private Set excludedRegistryFeatures = new HashSet<>(); - - @Value("features.inject-biome.excluded-features") - @Default - private Set excludedBiomeFeatures = new HashSet<>(); - - @Value("structures.inject-biome.excluded-features") - @Default - private Set excludedBiomeStructures = new HashSet<>(); - - public boolean doBiomeInjection() { - return doBiomeInjection; - } - - public boolean doRegistryInjection() { - return doRegistryInjection; - } - - public Set getExcludedBiomeFeatures() { - return excludedBiomeFeatures; - } - - public Set getExcludedRegistryFeatures() { - return excludedRegistryFeatures; - } - - public Set getExcludedBiomeStructures() { - return excludedBiomeStructures; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java deleted file mode 100644 index 382df94e7..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/ForgeChunkGeneratorWrapper.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.dfsek.terra.forge.generation; - -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.forge.ForgeAdapter; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.world.TerraWorld; -import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; -import com.dfsek.terra.world.generation.math.samplers.Sampler; -import com.dfsek.terra.world.population.items.TerraStructure; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.jafama.FastMath; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.util.SharedSeedRandom; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.Blockreader; -import net.minecraft.world.DimensionType; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.BiomeManager; -import net.minecraft.world.chunk.IChunk; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.Heightmap; -import net.minecraft.world.gen.WorldGenRegion; -import net.minecraft.world.gen.feature.structure.Structure; -import net.minecraft.world.gen.feature.structure.StructureManager; -import net.minecraft.world.gen.feature.template.TemplateManager; -import net.minecraft.world.gen.settings.DimensionStructuresSettings; -import net.minecraft.world.server.ServerWorld; -import net.minecraft.world.spawner.WorldEntitySpawner; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; - -public class ForgeChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { - public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( - Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID()) - ).apply(config, config.stable(TerraForgePlugin.getInstance().getConfigRegistry()::get)))); - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - TerraBiomeSource.CODEC.fieldOf("biome_source").forGetter(generator -> generator.biomeSource), - Codec.LONG.fieldOf("seed").stable().forGetter(generator -> generator.seed), - PACK_CODEC.fieldOf("pack").stable().forGetter(generator -> generator.pack)) - .apply(instance, instance.stable(ForgeChunkGeneratorWrapper::new))); - private final long seed; - private final DefaultChunkGenerator3D delegate; - private final TerraBiomeSource biomeSource; - private final ConfigPack pack; - private DimensionType dimensionType; - - public ForgeChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { - super(biomeSource, new DimensionStructuresSettings(false)); - this.pack = configPack; - - this.delegate = new DefaultChunkGenerator3D(pack, TerraForgePlugin.getInstance()); - delegate.getMain().logger().info("Loading world with config pack " + pack.getTemplate().getID()); - this.biomeSource = biomeSource; - - this.seed = seed; - } - - public ConfigPack getPack() { - return pack; - } - - @Override - protected @NotNull - Codec codec() { - return CODEC; - } - - @Override - public @NotNull - ChunkGenerator withSeed(long seed) { - return new ForgeChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); - } - - @Override - public void buildSurfaceAndBedrock(@NotNull WorldGenRegion p_225551_1_, @NotNull IChunk p_225551_2_) { - - } - - @Nullable - @Override - public BlockPos findNearestMapFeature(@NotNull ServerWorld world, @NotNull Structure feature, @NotNull BlockPos center, int radius, boolean skipExistingChunks) { - if(!pack.getTemplate().disableStructures()) { - String name = Objects.requireNonNull(Registry.STRUCTURE_FEATURE.getKey(feature)).toString(); - TerraWorld terraWorld = TerraForgePlugin.getInstance().getWorld((World) world); - TerraStructure located = pack.getStructure(pack.getTemplate().getLocatable().get(name)); - if(located != null) { - CompletableFuture result = new CompletableFuture<>(); - AsyncStructureFinder finder = new AsyncStructureFinder(terraWorld.getBiomeProvider(), located, ForgeAdapter.adapt(center).toLocation((World) world), 0, 500, location -> { - result.complete(ForgeAdapter.adapt(location)); - }, TerraForgePlugin.getInstance()); - finder.run(); // Do this synchronously. - try { - return result.get(); - } catch(InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } - } - } - return super.findNearestMapFeature(world, feature, center, radius, skipExistingChunks); - } - - @Override - public boolean hasStronghold(@NotNull ChunkPos p_235952_1_) { - if(pack.getTemplate().vanillaStructures()) return super.hasStronghold(p_235952_1_); - return false; - } - - @Override - public void createStructures(@NotNull DynamicRegistries dynamicRegistries, @NotNull StructureManager manager, @NotNull IChunk chunk, @NotNull TemplateManager templateManager, long p_242707_5_) { - if(pack.getTemplate().vanillaStructures()) super.createStructures(dynamicRegistries, manager, chunk, templateManager, p_242707_5_); - } - - @Override - public void applyCarvers(long p_230350_1_, @NotNull BiomeManager biomeManager, @NotNull IChunk chunk, GenerationStage.@NotNull Carving carving) { - if(pack.getTemplate().vanillaCaves()) super.applyCarvers(p_230350_1_, biomeManager, chunk, carving); - } - - @Override - public void fillFromNoise(@NotNull IWorld world, @NotNull StructureManager p_230352_2_, @NotNull IChunk chunk) { - delegate.generateChunkData((World) world, new FastRandom(), chunk.getPos().x, chunk.getPos().z, (ChunkData) chunk); - } - - @Override - public int getBaseHeight(int x, int z, Heightmap.@NotNull Type p_222529_3_) { - TerraWorld world = TerraForgePlugin.getInstance().getWorld(dimensionType); - Sampler sampler = world.getConfig().getSamplerCache().getChunk(FastMath.floorDiv(x, 16), FastMath.floorDiv(z, 16)); - int cx = FastMath.floorMod(x, 16); - int cz = FastMath.floorMod(z, 16); - - int height = world.getWorld().getMaxHeight(); - - while(height >= 0 && sampler.sample(cx, height - 1, cz) < 0) height--; - - return height; - } - - @Override - public @NotNull - IBlockReader getBaseColumn(int x, int z) { - TerraWorld world = TerraForgePlugin.getInstance().getWorld(dimensionType); - int height = getBaseHeight(x, z, Heightmap.Type.WORLD_SURFACE); - BlockState[] array = new BlockState[256]; - for(int y = 255; y >= 0; y--) { - if(y > height) { - if(y > ((UserDefinedBiome) world.getBiomeProvider().getBiome(x, z)).getConfig().getSeaLevel()) { - array[y] = Blocks.AIR.defaultBlockState(); - } else { - array[y] = Blocks.WATER.defaultBlockState(); - } - } else { - array[y] = Blocks.STONE.defaultBlockState(); - } - } - - return new Blockreader(array); - } - - @Override - public void spawnOriginalMobs(WorldGenRegion region) { - if(pack.getTemplate().vanillaMobs()) { - int cx = region.getCenterX(); - int cy = region.getCenterZ(); - Biome biome = region.getBiome((new ChunkPos(cx, cy)).getWorldPosition()); - SharedSeedRandom chunkRandom = new SharedSeedRandom(); - chunkRandom.setDecorationSeed(region.getSeed(), cx << 4, cy << 4); - WorldEntitySpawner.spawnMobsForChunkGeneration(region, biome, cx, cy, chunkRandom); - } - } - - @Override - public TerraChunkGenerator getHandle() { - return delegate; - } - - public void setDimensionType(DimensionType dimensionType) { - this.dimensionType = dimensionType; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java deleted file mode 100644 index d1e1106dd..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/PopulatorFeature.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.forge.generation; - -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.mojang.serialization.Codec; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ISeedReader; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.NoFeatureConfig; -import org.jetbrains.annotations.NotNull; - -import java.util.Random; - -/** - * Feature wrapper for Terra populator - */ -public class PopulatorFeature extends Feature { - public PopulatorFeature(Codec codec) { - super(codec); - } - - @Override - public boolean place(@NotNull ISeedReader world, @NotNull ChunkGenerator generator, @NotNull Random random, @NotNull BlockPos pos, @NotNull NoFeatureConfig config) { - ForgeChunkGeneratorWrapper gen = (ForgeChunkGeneratorWrapper) generator; - gen.getHandle().getPopulators().forEach(populator -> populator.populate((World) world, (Chunk) world)); - return true; - } - -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java deleted file mode 100644 index b057272f5..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraBiomeSource.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.dfsek.terra.forge.generation; - -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.forge.ForgeUtil; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryLookupCodec; -import net.minecraft.world.biome.Biome; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; -import java.util.stream.Collectors; - -public class TerraBiomeSource extends net.minecraft.world.biome.provider.BiomeProvider { - public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( - Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID()) - ).apply(config, config.stable(TerraForgePlugin.getInstance().getConfigRegistry()::get)))); - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter(source -> source.biomeRegistry), - Codec.LONG.fieldOf("seed").stable().forGetter(source -> source.seed), - PACK_CODEC.fieldOf("pack").stable().forGetter(source -> source.pack)) - .apply(instance, instance.stable(TerraBiomeSource::new))); - - private final Registry biomeRegistry; - private final long seed; - private final BiomeProvider grid; - private final ConfigPack pack; - - public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { - super(biomes.stream().collect(Collectors.toList())); - this.biomeRegistry = biomes; - this.seed = seed; - this.grid = pack.getBiomeProviderBuilder().build(seed); - this.pack = pack; - } - - @Override - protected @NotNull - Codec codec() { - return CODEC; - } - - @Override - public net.minecraft.world.biome.provider.@NotNull BiomeProvider withSeed(long seed) { - return new TerraBiomeSource(this.biomeRegistry, seed, pack); - } - - @Override - public @NotNull - Biome getNoiseBiome(int biomeX, int biomeY, int biomeZ) { - UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(biomeX << 2, biomeZ << 2); - return Objects.requireNonNull(biomeRegistry.get(new ResourceLocation("terra", ForgeUtil.createBiomeID(pack, biome.getID())))); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java deleted file mode 100644 index a86175e53..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/generation/TerraGeneratorType.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.forge.generation; - -import com.dfsek.terra.config.pack.ConfigPack; -import net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.DimensionSettings; -import org.jetbrains.annotations.NotNull; - -public class TerraGeneratorType extends BiomeGeneratorTypeScreens { - private final ConfigPack pack; - - public TerraGeneratorType(ConfigPack pack) { - super(new StringTextComponent("Terra:" + pack.getTemplate().getID())); - this.pack = pack; - } - - @Override - protected @NotNull - ChunkGenerator generator(@NotNull Registry biomeRegistry, @NotNull Registry chunkGeneratorSettingsRegistry, long seed) { - return new ForgeChunkGeneratorWrapper(new TerraBiomeSource(biomeRegistry, seed, pack), seed, pack); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java deleted file mode 100644 index 886ef1b1e..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeItemHandle.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.forge.handle; - -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.arguments.ItemArgument; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.registries.ForgeRegistries; - -import java.util.Set; -import java.util.stream.Collectors; - -public class ForgeItemHandle implements ItemHandle { - - @Override - public Item createItem(String data) { - try { - return (Item) new ItemArgument().parse(new StringReader(data)).getItem(); - } catch(CommandSyntaxException e) { - throw new IllegalArgumentException("Invalid item data \"" + data + "\"", e); - } - } - - @Override - public Enchantment getEnchantment(String id) { - return (Enchantment) ForgeRegistries.ENCHANTMENTS.getValue(ResourceLocation.tryParse(id)); - } - - @Override - public Set getEnchantments() { - return ForgeRegistries.ENCHANTMENTS.getEntries().stream().map(entry -> (Enchantment) entry.getValue()).collect(Collectors.toSet()); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java deleted file mode 100644 index f3b8118be..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/handle/ForgeWorldHandle.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.forge.handle; - -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.forge.ForgeAdapter; -import com.dfsek.terra.forge.block.ForgeBlockData; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.block.BlockState; -import net.minecraft.command.arguments.BlockStateParser; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.registries.ForgeRegistries; - -import java.util.Locale; - -public class ForgeWorldHandle implements WorldHandle { - - @Override - public ForgeBlockData createBlockData(String data) { - BlockStateParser parser = new BlockStateParser(new StringReader(data), true); - try { - BlockState state = parser.parse(true).getState(); - if(state == null) throw new IllegalArgumentException("Invalid data: " + data); - return ForgeAdapter.adapt(state); - } catch(CommandSyntaxException e) { - throw new IllegalArgumentException(e); - } - } - - @Override - public EntityType getEntity(String id) { - ResourceLocation identifier = ResourceLocation.tryParse(id); - if(identifier == null) identifier = ResourceLocation.tryParse("minecraft:" + id.toLowerCase(Locale.ROOT)); - return (EntityType) ForgeRegistries.ENTITIES.getValue(identifier); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java deleted file mode 100644 index 4cfec2e15..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/ForgeListener.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.dfsek.terra.forge.listener; - -import com.dfsek.terra.api.command.CommandManager; -import com.dfsek.terra.api.command.exception.CommandException; -import com.dfsek.terra.api.platform.CommandSender; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.builder.RequiredArgumentBuilder; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.event.RegisterCommandsEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static com.mojang.brigadier.builder.LiteralArgumentBuilder.literal; -import static com.mojang.brigadier.builder.RequiredArgumentBuilder.argument; - -@Mod.EventBusSubscriber(modid = "terra", bus = Mod.EventBusSubscriber.Bus.FORGE) -public class ForgeListener { - private static final TerraForgePlugin INSTANCE = TerraForgePlugin.getInstance(); - - @SuppressWarnings({"unchecked", "rawtypes"}) - @SubscribeEvent - public static void registerCommands(RegisterCommandsEvent event) { - int max = INSTANCE.getManager().getMaxArgumentDepth(); - RequiredArgumentBuilder arg = argument("arg" + (max - 1), StringArgumentType.word()); - for(int i = 0; i < max; i++) { - RequiredArgumentBuilder next = argument("arg" + (max - i - 1), StringArgumentType.word()); - - arg = next.then(assemble(arg, INSTANCE.getManager())); - } - - event.getDispatcher().register(literal("terra").executes(context -> 1).then((ArgumentBuilder) assemble(arg, INSTANCE.getManager()))); - event.getDispatcher().register(literal("te").executes(context -> 1).then((ArgumentBuilder) assemble(arg, INSTANCE.getManager()))); - } - - public static RequiredArgumentBuilder assemble(RequiredArgumentBuilder in, CommandManager manager) { - return in.suggests((context, builder) -> { - List args = parseCommand(context.getInput()); - CommandSender sender = (CommandSender) context.getSource(); - try { - sender = (Entity) context.getSource().getEntityOrException(); - } catch(CommandSyntaxException ignore) { - } - try { - manager.tabComplete(args.remove(0), sender, args).forEach(builder::suggest); - } catch(CommandException e) { - sender.sendMessage(e.getMessage()); - } - return builder.buildFuture(); - }).executes(context -> { - List args = parseCommand(context.getInput()); - try { - CommandSender sender = (CommandSender) context.getSource(); - try { - sender = (Entity) context.getSource().getEntityOrException(); - } catch(CommandSyntaxException ignore) { - } - manager.execute(args.remove(0), sender, args); - } catch(CommandException e) { - context.getSource().sendFailure(new StringTextComponent(e.getMessage())); - } - return 1; - }); - } - - private static List parseCommand(String command) { - if(command.startsWith("/terra ")) command = command.substring("/terra ".length()); - else if(command.startsWith("/te ")) command = command.substring("/te ".length()); - List c = new ArrayList<>(Arrays.asList(command.split(" "))); - if(command.endsWith(" ")) c.add(""); - return c; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/RegistryListener.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/RegistryListener.java deleted file mode 100644 index 19847bf0a..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/listener/RegistryListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.forge.listener; - -import com.dfsek.terra.forge.TerraForgePlugin; -import net.minecraft.world.gen.feature.Feature; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) -public class RegistryListener { - @SubscribeEvent - public static void registerPop(RegistryEvent.Register> event) { - event.getRegistry().register(TerraForgePlugin.POPULATOR_FEATURE); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/DimensionGeneratorSettingsMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/DimensionGeneratorSettingsMixin.java deleted file mode 100644 index ca899217a..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/DimensionGeneratorSettingsMixin.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.dfsek.terra.forge.mixin; - -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; -import com.dfsek.terra.forge.generation.TerraBiomeSource; -import com.google.common.base.MoreObjects; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.SimpleRegistry; -import net.minecraft.world.Dimension; -import net.minecraft.world.DimensionType; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.gen.DimensionSettings; -import net.minecraft.world.gen.settings.DimensionGeneratorSettings; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.Properties; -import java.util.Random; - -@Mixin(DimensionGeneratorSettings.class) -public abstract class DimensionGeneratorSettingsMixin { - @Inject(method = "create(Lnet/minecraft/util/registry/DynamicRegistries;Ljava/util/Properties;)Lnet/minecraft/world/gen/settings/DimensionGeneratorSettings;", at = @At("HEAD"), cancellable = true) - private static void fromProperties(DynamicRegistries dynamicRegistries, Properties properties, CallbackInfoReturnable cir) { - if(properties.get("level-type") == null) { - return; - } - - String prop = properties.get("level-type").toString().trim(); - if(prop.startsWith("Terra")) { - String seed = (String) MoreObjects.firstNonNull(properties.get("level-seed"), ""); - long l = new Random().nextLong(); - if(!seed.isEmpty()) { - try { - long m = Long.parseLong(seed); - if(m != 0L) { - l = m; - } - } catch(NumberFormatException exception) { - l = seed.hashCode(); - } - } - - String generate_structures = (String) properties.get("generate-structures"); - boolean generateStructures = generate_structures == null || Boolean.parseBoolean(generate_structures); - Registry dimensionTypes = dynamicRegistries.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); - Registry biomes = dynamicRegistries.registryOrThrow(Registry.BIOME_REGISTRY); - Registry chunkGeneratorSettings = dynamicRegistries.registryOrThrow(Registry.NOISE_GENERATOR_SETTINGS_REGISTRY); - SimpleRegistry dimensionOptions = DimensionType.defaultDimensions(dimensionTypes, biomes, chunkGeneratorSettings, l); - - prop = prop.substring(prop.indexOf(":") + 1); - - ConfigPack pack = TerraForgePlugin.getInstance().getConfigRegistry().get(prop); - - if(pack == null) throw new IllegalArgumentException("No such pack " + prop); - - TerraForgePlugin.getInstance().logger().info("Using config pack " + pack.getTemplate().getID()); - cir.setReturnValue(new DimensionGeneratorSettings(l, generateStructures, false, DimensionGeneratorSettings.withOverworld(dimensionTypes, dimensionOptions, new ForgeChunkGeneratorWrapper(new TerraBiomeSource(biomes, l, pack), l, pack)))); - } - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java deleted file mode 100644 index 7bdb717d6..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/ServerWorldMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.forge.mixin; - -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; -import com.dfsek.terra.world.TerraWorld; -import net.minecraft.world.DimensionType; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerChunkProvider; -import net.minecraft.world.server.ServerWorld; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(ServerWorld.class) -public abstract class ServerWorldMixin { - @Shadow - @Final - private ServerChunkProvider chunkSource; - - @Shadow - protected abstract void initCapabilities(); - - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/server/ServerWorld;initCapabilities()V")) - public void injectConstructor(ServerWorld serverWorld) { - if(chunkSource.getGenerator() instanceof ForgeChunkGeneratorWrapper) { - ForgeChunkGeneratorWrapper chunkGeneratorWrapper = (ForgeChunkGeneratorWrapper) chunkSource.getGenerator(); - DimensionType dimensionType = ((World) (Object) this).dimensionType(); - TerraForgePlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) (Object) this, new TerraWorld((com.dfsek.terra.api.world.World) this, chunkGeneratorWrapper.getPack(), TerraForgePlugin.getInstance()))); - chunkGeneratorWrapper.setDimensionType(dimensionType); - TerraForgePlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType); - } - initCapabilities(); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/AbstractSpawnerAccessor.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/AbstractSpawnerAccessor.java deleted file mode 100644 index 5783c350f..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/AbstractSpawnerAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dfsek.terra.forge.mixin.access; - -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.spawner.AbstractSpawner; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(AbstractSpawner.class) -public interface AbstractSpawnerAccessor { - @Invoker("getEntityId") - ResourceLocation callGetEntityId(); -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/BiomeGeneratorTypeScreensAccessor.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/BiomeGeneratorTypeScreensAccessor.java deleted file mode 100644 index b7d7363b5..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/access/BiomeGeneratorTypeScreensAccessor.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.forge.mixin.access; - -import net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens; -import net.minecraft.util.text.ITextComponent; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.List; - -@Mixin(BiomeGeneratorTypeScreens.class) -public interface BiomeGeneratorTypeScreensAccessor { - @Accessor("PRESETS") - static List getPresets() { - throw new UnsupportedOperationException(); - } - - @Mutable - @Accessor - void setDescription(ITextComponent description); -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java deleted file mode 100644 index e9718aa16..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/BiomeMixin.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations; - -import net.minecraft.world.biome.Biome; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(Biome.class) -@Implements(@Interface(iface = com.dfsek.terra.api.world.Biome.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class BiomeMixin { - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java deleted file mode 100644 index 741a80515..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ChunkGeneratorMixin.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations; - -import net.minecraft.world.gen.ChunkGenerator; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(ChunkGenerator.class) -@Implements(@Interface(iface = com.dfsek.terra.api.world.generator.ChunkGenerator.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ChunkGeneratorMixin { - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java deleted file mode 100644 index 1a4a8856b..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/ConfiguredFeatureMixin.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.profiler.ProfileFrame; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ISeedReader; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.Random; - -@Mixin(ConfiguredFeature.class) -@Implements(@Interface(iface = Tree.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ConfiguredFeatureMixin { - - @Shadow - public abstract boolean place(ISeedReader p_242765_1_, ChunkGenerator p_242765_2_, Random p_242765_3_, BlockPos p_242765_4_); - - @SuppressWarnings({"try"}) - public boolean terra$plant(Location l, Random r) { - try(ProfileFrame ignore = TerraForgePlugin.getInstance().getProfiler().profile("forge_tree")) { - ISeedReader world = ((ISeedReader) l.getWorld()); - ChunkGenerator generatorWrapper = (ChunkGenerator) l.getWorld().getGenerator(); - return place(world, generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); - } - } - - public MaterialSet terra$getSpawnable() { - return MaterialSet.get(TerraForgePlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), - TerraForgePlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), - TerraForgePlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java deleted file mode 100644 index 0ca7c207b..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/BlockMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.block; - -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.forge.ForgeAdapter; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(Block.class) -@Implements(@Interface(iface = BlockType.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class BlockMixin { - @Shadow - private BlockState defaultBlockState; - - public Object terra$getHandle() { - return this; - } - - public BlockData terra$getDefaultData() { - return ForgeAdapter.adapt(defaultBlockState); - } - - public boolean terra$isSolid() { - return defaultBlockState.canOcclude(); - } - - @SuppressWarnings("ConstantConditions") - public boolean terra$isWater() { - return ((Object) this) == Blocks.WATER; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java deleted file mode 100644 index 00344d40c..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/TileEntityMixin.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.block; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.block.entity.BlockState; -import com.dfsek.terra.forge.ForgeAdapter; -import com.dfsek.terra.forge.block.ForgeBlock; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import javax.annotation.Nullable; - -@Mixin(TileEntity.class) -@Implements(@Interface(iface = BlockState.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class TileEntityMixin { - @Shadow - protected BlockPos worldPosition; - - @Shadow - @Nullable - protected World level; - - @Shadow - @Nullable - private net.minecraft.block.BlockState blockState; - - @Shadow - public abstract boolean hasLevel(); - - public Object terra$getHandle() { - return this; - } - - public Block terra$getBlock() { - return new ForgeBlock(worldPosition, level); - } - - public int terra$getX() { - return worldPosition.getX(); - } - - public int terra$getY() { - return worldPosition.getY(); - } - - public int terra$getZ() { - return worldPosition.getZ(); - } - - public BlockData terra$getBlockData() { - return ForgeAdapter.adapt(blockState); - } - - public boolean terra$update(boolean applyPhysics) { - if(hasLevel()) level.getChunk(worldPosition).setBlockEntity(worldPosition, (TileEntity) (Object) this); - return true; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java deleted file mode 100644 index c7585535f..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/LockableLootTileEntityMixin.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.block.state; - -import com.dfsek.terra.api.block.entity.Container; -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.forge.mixin.implementations.block.TileEntityMixin; -import net.minecraft.tileentity.LockableLootTileEntity; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(LockableLootTileEntity.class) -@Implements(@Interface(iface = Container.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class LockableLootTileEntityMixin extends TileEntityMixin { - public Inventory terra$getInventory() { - return (Inventory) this; - } - - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java deleted file mode 100644 index 13ed6a0ca..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/MobSpawnerTileEntityMixin.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.block.state; - -import com.dfsek.terra.api.block.entity.MobSpawner; -import com.dfsek.terra.api.block.entity.SerialState; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.forge.mixin.access.AbstractSpawnerAccessor; -import com.dfsek.terra.forge.mixin.implementations.block.TileEntityMixin; -import net.minecraft.tileentity.MobSpawnerTileEntity; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.spawner.AbstractSpawner; -import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(MobSpawnerTileEntity.class) -@Implements(@Interface(iface = MobSpawner.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class MobSpawnerTileEntityMixin extends TileEntityMixin { - @Shadow - public abstract AbstractSpawner getSpawner(); - - public EntityType terra$getSpawnedType() { - return (EntityType) Registry.ENTITY_TYPE.get(((AbstractSpawnerAccessor) getSpawner()).callGetEntityId()); - } - - public void terra$setSpawnedType(@NotNull EntityType creatureType) { - getSpawner().setEntityId((net.minecraft.entity.EntityType) creatureType); - } - - public int terra$getDelay() { - return 0; - } - - public void terra$setDelay(int delay) { - - } - - public int terra$getMinSpawnDelay() { - return 0; - } - - public void terra$setMinSpawnDelay(int delay) { - - } - - public int terra$getMaxSpawnDelay() { - return 0; - } - - public void terra$setMaxSpawnDelay(int delay) { - - } - - public int terra$getSpawnCount() { - return 0; - } - - public void terra$setSpawnCount(int spawnCount) { - - } - - public int terra$getMaxNearbyEntities() { - return 0; - } - - public void terra$setMaxNearbyEntities(int maxNearbyEntities) { - - } - - public int terra$getRequiredPlayerRange() { - return 0; - } - - public void terra$setRequiredPlayerRange(int requiredPlayerRange) { - - } - - public int terra$getSpawnRange() { - return 0; - } - - public void terra$setSpawnRange(int spawnRange) { - - } - - public void terra$applyState(String state) { - SerialState.parse(state).forEach((k, v) -> { - switch(k) { - case "type": - terra$setSpawnedType(TerraForgePlugin.getInstance().getWorldHandle().getEntity(v)); - return; - case "delay": - terra$setDelay(Integer.parseInt(v)); - return; - case "min_delay": - terra$setMinSpawnDelay(Integer.parseInt(v)); - return; - case "max_delay": - terra$setMaxSpawnDelay(Integer.parseInt(v)); - return; - case "spawn_count": - terra$setSpawnCount(Integer.parseInt(v)); - return; - case "spawn_range": - terra$setSpawnRange(Integer.parseInt(v)); - return; - case "max_nearby": - terra$setMaxNearbyEntities(Integer.parseInt(v)); - return; - case "required_player_range": - terra$setRequiredPlayerRange(Integer.parseInt(v)); - return; - default: - throw new IllegalArgumentException("Invalid property: " + k); - } - }); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java deleted file mode 100644 index e759ffe4b..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/block/state/SignTileEntityMixin.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.block.state; - -import com.dfsek.terra.api.block.entity.SerialState; -import com.dfsek.terra.api.block.entity.Sign; -import net.minecraft.tileentity.SignTileEntity; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(SignTileEntity.class) -@Implements(@Interface(iface = Sign.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class SignTileEntityMixin { - @Shadow - @Final - private ITextComponent[] messages; - - @Shadow - public abstract void setMessage(int p_212365_1_, ITextComponent p_212365_2_); - - public @NotNull - String[] terra$getLines() { - String[] lines = new String[messages.length]; - for(int i = 0; i < messages.length; i++) { - lines[i] = messages[i].getString(); - } - return lines; - } - - public @NotNull - String terra$getLine(int index) throws IndexOutOfBoundsException { - - return messages[index].getString(); - } - - public void terra$setLine(int index, @NotNull String line) throws IndexOutOfBoundsException { - setMessage(index, new StringTextComponent(line)); - } - - public void terra$applyState(String state) { - SerialState.parse(state).forEach((k, v) -> { - if(!k.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k); - terra$setLine(Integer.parseInt(k.substring(4)), v); - }); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java deleted file mode 100644 index 6ee4cd8b1..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/ChunkMixin.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.chunk; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.forge.block.ForgeBlock; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.chunk.IChunk; -import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(net.minecraft.world.chunk.Chunk.class) -@Implements(@Interface(iface = Chunk.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ChunkMixin { - - @Shadow - @Final - private net.minecraft.world.World level; - - public int terra$getX() { - return ((IChunk) this).getPos().x; - } - - public int terra$getZ() { - return ((IChunk) this).getPos().z; - } - - public World terra$getWorld() { - return (World) level; - } - - public Block terra$getBlock(int x, int y, int z) { - BlockPos pos = new BlockPos(x + (terra$getX() << 4), y, z + (terra$getZ() << 4)); - return new ForgeBlock(pos, level); - } - - public @NotNull - BlockData terra$getBlockData(int x, int y, int z) { - return terra$getBlock(x, y, z).getBlockData(); - } - - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { - ((IChunk) this).setBlockState(new BlockPos(x, y, z), ((ForgeBlockData) blockData).getHandle(), false); - } - - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java deleted file mode 100644 index e5b5a5c39..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/WorldGenRegionMixin.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.chunk; - -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.forge.block.ForgeBlock; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.gen.WorldGenRegion; -import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(WorldGenRegion.class) -@Implements(@Interface(iface = Chunk.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class WorldGenRegionMixin { - @Final - @Shadow - private int x; - - @Final - @Shadow - private int z; - - public int terra$getX() { - return x; - } - - public int terra$getZ() { - return z; - } - - public World terra$getWorld() { - return (World) this; - } - - public Block terra$getBlock(int x, int y, int z) { - BlockPos pos = new BlockPos(x + (this.x << 4), y, z + (this.z << 4)); - return new ForgeBlock(pos, (WorldGenRegion) (Object) this); - } - - public @NotNull - BlockData terra$getBlockData(int x, int y, int z) { - return terra$getBlock(x, y, z).getBlockData(); - } - - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { - ((WorldGenRegion) (Object) this).setBlock(new BlockPos(x + (this.x << 4), y, z + (this.z << 4)), ((ForgeBlockData) blockData).getHandle(), 0); - } - - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java deleted file mode 100644 index 118d76c34..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/chunk/data/ChunkPrimerMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.chunk.data; - -import com.dfsek.terra.api.block.BlockData; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.forge.block.ForgeBlockData; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.chunk.ChunkPrimer; -import net.minecraft.world.chunk.IChunk; -import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(ChunkPrimer.class) -@Implements(@Interface(iface = ChunkData.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ChunkPrimerMixin { - @Shadow - public abstract BlockState getBlockState(BlockPos pos); - - public @NotNull - BlockData terra$getBlockData(int x, int y, int z) { - return new ForgeBlockData(getBlockState(new BlockPos(x, y, z))); - } - - public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) { - ((IChunk) this).setBlockState(new BlockPos(x, y, z), ((ForgeBlockData) blockData).getHandle(), false); - } - - public Object terra$getHandle() { - return this; - } - - public int terra$getMaxHeight() { - return 255; // TODO: 1.17 - Implement dynamic height. - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/CommandSourceMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/CommandSourceMixin.java deleted file mode 100644 index 83df7b48c..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/CommandSourceMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.entity; - -import com.dfsek.terra.api.platform.CommandSender; -import net.minecraft.command.CommandSource; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(CommandSource.class) -@Implements(@Interface(iface = CommandSender.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class CommandSourceMixin { - @Shadow - public abstract void sendSuccess(ITextComponent p_197030_1_, boolean p_197030_2_); - - public void terra$sendMessage(String message) { - sendSuccess(new StringTextComponent(message), true); - } - - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java deleted file mode 100644 index a3ac19283..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityMixin.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.entity; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.forge.ForgeAdapter; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.UUID; - -@Mixin(Entity.class) -@Implements(@Interface(iface = com.dfsek.terra.api.entity.Entity.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class EntityMixin { - @Shadow - public net.minecraft.world.World level; - - @Shadow - private BlockPos blockPosition; - - @Shadow - public abstract void teleportTo(double destX, double destY, double destZ); - - - @Shadow - public abstract void sendMessage(ITextComponent p_145747_1_, UUID p_145747_2_); - - public Object terra$getHandle() { - return this; - } - - public Location terra$getLocation() { - return new Location((World) level, ForgeAdapter.adapt(blockPosition)); - } - - public void terra$setLocation(Location location) { - teleportTo(location.getX(), location.getY(), location.getZ()); - } - - public World terra$getWorld() { - return (World) level; - } - - public void terra$sendMessage(String message) { - sendMessage(new StringTextComponent(message), UUID.randomUUID()); // TODO: look into how this actually works and make it less jank - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java deleted file mode 100644 index 37836982f..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/EntityTypeMixin.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.entity; - -import net.minecraft.entity.EntityType; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(EntityType.class) -@Implements(@Interface(iface = com.dfsek.terra.api.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class EntityTypeMixin { - public Object terra$getHandle() { - return this; - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java deleted file mode 100644 index e0ba8972a..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/entity/PlayerEntityMixin.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.entity; - -import com.dfsek.terra.api.entity.Player; -import net.minecraft.entity.player.PlayerEntity; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(PlayerEntity.class) -@Implements(@Interface(iface = Player.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class PlayerEntityMixin extends EntityMixin { - -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java deleted file mode 100644 index 379c457f5..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/LockableTileEntityMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory; - -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.api.inventory.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.tileentity.LockableTileEntity; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(LockableTileEntity.class) -@Implements(@Interface(iface = Inventory.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public class LockableTileEntityMixin { - public Object terra$getHandle() { - return this; - } - - public int terra$getSize() { - return ((LockableTileEntity) (Object) this).getContainerSize(); - } - - @SuppressWarnings("ConstantConditions") - public ItemStack terra$getItem(int slot) { - net.minecraft.item.ItemStack itemStack = ((LockableTileEntity) (Object) this).getItem(slot); - return itemStack.getItem() == Items.AIR ? null : (ItemStack) (Object) itemStack; - } - - @SuppressWarnings("ConstantConditions") - public void terra$setItem(int slot, ItemStack newStack) { - ((LockableTileEntity) (Object) this).setItem(slot, (net.minecraft.item.ItemStack) (Object) newStack); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java deleted file mode 100644 index 624781bcd..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory.item; - -import com.dfsek.terra.api.inventory.ItemStack; -import net.minecraft.item.Item; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(Item.class) -@Implements(@Interface(iface = com.dfsek.terra.api.inventory.Item.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ItemMixin { - @Shadow - public abstract int getMaxDamage(); - - public Object terra$getHandle() { - return this; - } - - @SuppressWarnings("ConstantConditions") - public ItemStack terra$newItemStack(int amount) { - return (ItemStack) (Object) new net.minecraft.item.ItemStack((Item) (Object) this, amount); - } - - public double terra$getMaxDurability() { - return getMaxDamage(); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java deleted file mode 100644 index 109edbaf7..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/item/ItemStackMixin.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory.item; - -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.item.ItemMeta; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(ItemStack.class) -@Implements(@Interface(iface = com.dfsek.terra.api.inventory.ItemStack.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ItemStackMixin { - @Shadow - public abstract int getCount(); - - @Shadow - public abstract void setCount(int count); - - @Shadow - public abstract net.minecraft.item.Item getItem(); - - - @Shadow - public abstract boolean isDamageableItem(); - - @Shadow - public abstract void setTag(@Nullable CompoundNBT p_77982_1_); - - public int terra$getAmount() { - return getCount(); - } - - public void terra$setAmount(int i) { - setCount(i); - } - - public Item terra$getType() { - return (Item) getItem(); - } - - public ItemMeta terra$getItemMeta() { - return (ItemMeta) this; - } - - @SuppressWarnings("ConstantConditions") - public void terra$setItemMeta(ItemMeta meta) { - setTag(((ItemStack) (Object) meta).getTag()); - } - - public Object terra$getHandle() { - return this; - } - - @Intrinsic - public boolean terra$isDamageable() { - return isDamageableItem(); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java deleted file mode 100644 index b6c7cb06b..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/EnchantmentMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory.meta; - -import com.dfsek.terra.api.inventory.ItemStack; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.util.registry.Registry; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.Objects; - -@Mixin(Enchantment.class) -@Implements(@Interface(iface = com.dfsek.terra.api.inventory.item.Enchantment.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class EnchantmentMixin { - - @Shadow - public abstract boolean isCompatibleWith(Enchantment p_191560_1_); - - @Shadow - public abstract boolean canEnchant(net.minecraft.item.ItemStack p_92089_1_); - - public Object terra$getHandle() { - return this; - } - - @SuppressWarnings("ConstantConditions") - public boolean terra$canEnchantItem(ItemStack itemStack) { - return canEnchant((net.minecraft.item.ItemStack) (Object) itemStack); - } - - public String terra$getID() { - return Objects.requireNonNull(Registry.ENCHANTMENT.getId((Enchantment) (Object) this)).toString(); - } - - public boolean terra$conflictsWith(com.dfsek.terra.api.inventory.item.Enchantment other) { - return !isCompatibleWith((Enchantment) other); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java deleted file mode 100644 index 38f147475..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory.meta; - -import com.dfsek.terra.api.inventory.item.Damageable; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(ItemStack.class) -@Implements(@Interface(iface = Damageable.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ItemStackDamageableMixin { - @Shadow - public abstract boolean isDamaged(); - - @Shadow - public abstract int getDamageValue(); - - @Shadow - public abstract void setDamageValue(int p_196085_1_); - - public boolean terra$hasDamage() { - return isDamaged(); - } - - @Intrinsic - public void terra$setDamage(int damage) { - setDamageValue(damage); - } - - @Intrinsic - public int terra$getDamage() { - return getDamageValue(); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java deleted file mode 100644 index b7215982f..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/inventory/meta/ItemStackMetaMixin.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.inventory.meta; - -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.registry.Registry; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -@Mixin(ItemStack.class) -@Implements(@Interface(iface = ItemMeta.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ItemStackMetaMixin { - @Shadow - public abstract ListNBT getEnchantmentTags(); - - @Shadow - public abstract boolean isEnchanted(); - - @Shadow - public abstract void enchant(net.minecraft.enchantment.Enchantment p_77966_1_, int p_77966_2_); - - public Object terra$getHandle() { - return this; - } - - @Intrinsic(displace = true) - public Map terra$getEnchantments() { - if(!isEnchanted()) return Collections.emptyMap(); - Map map = new HashMap<>(); - - getEnchantmentTags().forEach(enchantment -> { - CompoundNBT eTag = (CompoundNBT) enchantment; - map.put((Enchantment) Registry.ENCHANTMENT.byId(eTag.getInt("id")), eTag.getInt("lvl")); - }); - return map; - } - - public void terra$addEnchantment(Enchantment enchantment, int level) { - enchant((net.minecraft.enchantment.Enchantment) enchantment, level); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/package-info.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/package-info.java deleted file mode 100644 index 0fae9920e..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Mixins in this package implement Terra - * interfaces in Minecraft classes. - */ -package com.dfsek.terra.forge.mixin.implementations; \ No newline at end of file diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java deleted file mode 100644 index 984a134e0..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/ServerWorldMixin.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.world; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; -import com.dfsek.terra.forge.block.ForgeBlock; -import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IServerWorld; -import net.minecraft.world.server.ServerWorld; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(ServerWorld.class) -@Implements(@Interface(iface = World.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class ServerWorldMixin { - @Shadow - public abstract long getSeed(); - - public int terra$getMaxHeight() { - return ((ServerWorld) (Object) this).getMaxBuildHeight(); - } - - public ChunkGenerator terra$getGenerator() { - return (ChunkGenerator) ((ServerWorld) (Object) this).getChunkSource().getGenerator(); - } - - public Chunk terra$getChunkAt(int x, int z) { - return (Chunk) ((ServerWorld) (Object) this).getChunk(x, z); - } - - public Block terra$getBlockAt(int x, int y, int z) { - return new ForgeBlock(new BlockPos(x, y, z), ((ServerWorld) (Object) this)); - } - - public Entity terra$spawnEntity(Location location, EntityType entityType) { - net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ServerWorld) (Object) this)); - entity.setPos(location.getX(), location.getY(), location.getZ()); - ((ServerWorld) (Object) this).addFreshEntity(entity); - return (Entity) entity; - } - - @Intrinsic - public long terra$getSeed() { - return getSeed(); - } - - public int terra$getMinHeight() { - return 0; - } - - public Object terra$getHandle() { - return this; - } - - public boolean terra$isTerraWorld() { - return terra$getGenerator() instanceof GeneratorWrapper; - } - - public TerraChunkGenerator terra$getTerraGenerator() { - return ((ForgeChunkGeneratorWrapper) terra$getGenerator()).getHandle(); - } - - /** - * Overridden in the same manner as {@link WorldGenRegionMixin#hashCode()} - * - * @param other Another object - * @return Whether this world is the same as other. - * @see WorldGenRegionMixin#hashCode() - */ - @SuppressWarnings("ConstantConditions") - @Override - public boolean equals(Object other) { - if(!(other instanceof IServerWorld)) return false; - return (IServerWorld) this == (((IServerWorld) other).getLevel()); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java deleted file mode 100644 index aa184c147..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/implementations/world/WorldGenRegionMixin.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.dfsek.terra.forge.mixin.implementations.world; - -import com.dfsek.terra.api.math.vector.Location; -import com.dfsek.terra.api.block.Block; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.api.world.generation.TerraChunkGenerator; -import com.dfsek.terra.forge.block.ForgeBlock; -import com.dfsek.terra.forge.generation.ForgeChunkGeneratorWrapper; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.gen.WorldGenRegion; -import net.minecraft.world.server.ServerWorld; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Implements; -import org.spongepowered.asm.mixin.Interface; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(WorldGenRegion.class) -@Implements(@Interface(iface = World.class, prefix = "terra$", remap = Interface.Remap.NONE)) -public abstract class WorldGenRegionMixin { - @Shadow - @Final - private ServerWorld level; - - @Shadow - @Final - private long seed; - - public int terra$getMaxHeight() { - return ((WorldGenRegion) (Object) this).getMaxBuildHeight(); - } - - @SuppressWarnings("deprecation") - public ChunkGenerator terra$getGenerator() { - return (ChunkGenerator) ((WorldGenRegion) (Object) this).getLevel().getChunkSource().getGenerator(); - } - - public Chunk terra$getChunkAt(int x, int z) { - return (Chunk) ((WorldGenRegion) (Object) this).getChunk(x, z); - } - - public Block terra$getBlockAt(int x, int y, int z) { - return new ForgeBlock(new BlockPos(x, y, z), ((WorldGenRegion) (Object) this)); - } - - @SuppressWarnings("deprecation") - public Entity terra$spawnEntity(Location location, EntityType entityType) { - net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((WorldGenRegion) (Object) this).getLevel()); - entity.setPos(location.getX(), location.getY(), location.getZ()); - ((WorldGenRegion) (Object) this).addFreshEntity(entity); - return (Entity) entity; - } - - @Intrinsic - public long terra$getSeed() { - return seed; - } - - public int terra$getMinHeight() { - return 0; - } - - public Object terra$getHandle() { - return this; - } - - public boolean terra$isTerraWorld() { - return terra$getGenerator() instanceof GeneratorWrapper; - } - - public TerraChunkGenerator terra$getTerraGenerator() { - return ((ForgeChunkGeneratorWrapper) terra$getGenerator()).getHandle(); - } - - /** - * We need regions delegating to the same world - * to have the same hashcode. This - * minimizes cache misses. - *

- * This is sort of jank, but shouldn't(tm) - * break any other mods, unless they're doing - * something they really shouldn't, since - * ChunkRegions are not supposed to persist. - */ - @Override - public int hashCode() { - return level.hashCode(); - } - - /** - * Overridden in the same manner as {@link #hashCode()} - * - * @param other Another object - * @return Whether this world is the same as other. - * @see #hashCode() - */ - @Override - public boolean equals(Object other) { - if(!(other instanceof WorldGenRegion)) return false; - return level.equals(((WorldGenRegion) other).getLevel()); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftClientMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftClientMixin.java deleted file mode 100644 index 84245b37e..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftClientMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.forge.mixin.init; - -import com.dfsek.terra.forge.TerraForgePlugin; -import com.dfsek.terra.forge.generation.TerraGeneratorType; -import com.dfsek.terra.forge.mixin.access.BiomeGeneratorTypeScreensAccessor; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens; -import net.minecraft.resources.ResourcePackList; -import net.minecraft.util.text.StringTextComponent; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(Minecraft.class) -public abstract class MinecraftClientMixin { - @Redirect(method = "", at = @At(value = "INVOKE", - target = "Lnet/minecraft/resources/ResourcePackList;reload()V" // sorta arbitrary position, after mod init, before window opens - )) - public void injectConstructor(ResourcePackList resourcePackList) { - TerraForgePlugin.getInstance().init(); // Load during MinecraftClient construction, after other mods have registered blocks and stuff - TerraForgePlugin.getInstance().getConfigRegistry().forEach(pack -> { - final BiomeGeneratorTypeScreens generatorType = new TerraGeneratorType(pack); - //noinspection ConstantConditions - ((BiomeGeneratorTypeScreensAccessor) generatorType).setDescription(new StringTextComponent("Terra:" + pack.getTemplate().getID())); - BiomeGeneratorTypeScreensAccessor.getPresets().add(1, generatorType); - }); - resourcePackList.reload(); - } -} diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftServerMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftServerMixin.java deleted file mode 100644 index d8fed32cf..000000000 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/init/MinecraftServerMixin.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.forge.mixin.init; - -import com.dfsek.terra.forge.TerraForgePlugin; -import net.minecraft.server.Main; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(Main.class) -public class MinecraftServerMixin { - @Inject(method = "main([Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/registry/DynamicRegistries;builtin()Lnet/minecraft/util/registry/DynamicRegistries$Impl;")) - private static void injectConstructor(String[] args, CallbackInfo ci) { - TerraForgePlugin.getInstance().init(); // Load during MinecraftServer construction, after other mods have registered blocks and stuff - } -} diff --git a/platforms/forge/src/main/resources/META-INF/mods.toml b/platforms/forge/src/main/resources/META-INF/mods.toml deleted file mode 100644 index a306898d9..000000000 --- a/platforms/forge/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader = "javafml" -loaderVersion = "[36,)" -license = "@LICENSE@" -issueTrackerURL = "@ISSUES@" -[[mods]] -modId = "terra" -version = "@VERSION@" -displayName = "Terra" -displayURL = "@WIKI@" -authors = "dfsek & Terra contributors" -description = "@DESCRIPTION@" -[[dependencies.terra]] -modId = "forge" -mandatory = true -versionRange = "[36,)" -ordering = "NONE" -side = "BOTH" \ No newline at end of file diff --git a/platforms/forge/src/main/resources/pack.mcmeta b/platforms/forge/src/main/resources/pack.mcmeta deleted file mode 100644 index e33bc0eb4..000000000 --- a/platforms/forge/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "Terra Resources", - "pack_format": 6 - } -} \ No newline at end of file diff --git a/platforms/forge/src/main/resources/terra.mixins.json b/platforms/forge/src/main/resources/terra.mixins.json deleted file mode 100644 index 5aefcf5f0..000000000 --- a/platforms/forge/src/main/resources/terra.mixins.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "required": true, - "package": "com.dfsek.terra.forge.mixin", - "compatibilityLevel": "JAVA_8", - "refmap": "terra-refmap.json", - "mixins": [ - "DimensionGeneratorSettingsMixin", - "ServerWorldMixin", - "access.AbstractSpawnerAccessor", - "access.BiomeGeneratorTypeScreensAccessor", - "implementations.BiomeMixin", - "implementations.ChunkGeneratorMixin", - "implementations.ConfiguredFeatureMixin", - "implementations.block.BlockMixin", - "implementations.block.TileEntityMixin", - "implementations.block.state.LockableLootTileEntityMixin", - "implementations.block.state.MobSpawnerTileEntityMixin", - "implementations.block.state.SignTileEntityMixin", - "implementations.chunk.ChunkMixin", - "implementations.chunk.WorldGenRegionMixin", - "implementations.chunk.data.ChunkPrimerMixin", - "implementations.entity.CommandSourceMixin", - "implementations.entity.EntityMixin", - "implementations.entity.EntityTypeMixin", - "implementations.entity.PlayerEntityMixin", - "implementations.inventory.LockableTileEntityMixin", - "implementations.inventory.item.ItemMixin", - "implementations.inventory.item.ItemStackMixin", - "implementations.inventory.meta.EnchantmentMixin", - "implementations.inventory.meta.ItemStackDamageableMixin", - "implementations.inventory.meta.ItemStackMetaMixin", - "implementations.world.ServerWorldMixin", - "implementations.world.WorldGenRegionMixin" - ], - "client": [ - "init.MinecraftClientMixin" - ], - "server": [ - "init.MinecraftServerMixin" - ], - "injectors": { - "defaultRequire": 1 - }, - "minVersion": "0.8" -} \ No newline at end of file diff --git a/platforms/forge/src/test/resources/META-INF/mods.toml b/platforms/forge/src/test/resources/META-INF/mods.toml deleted file mode 100644 index bb8120be8..000000000 --- a/platforms/forge/src/test/resources/META-INF/mods.toml +++ /dev/null @@ -1,20 +0,0 @@ -modLoader = "javafml" -loaderVersion = "[33,)" -license = "GNU General Public License, version 3.0" -issueTrackerURL = "https://github.com/PolyhedralDev/Terra/issues" -[[mods]] -modId = "terra" -version = "@VERSION@" -displayName = "Terra" -displayURL = "https://github.com/PolyhedralDev/Terra" -logoFile = "logo_text.png" -authors = "dfsek & Terra contributors" -description = ''' -Powerful data-driven world generator -''' -[[dependencies.terra]] -modId = "forge" -mandatory = true -versionRange = "[36.0.4,)" -ordering = "NONE" -side = "BOTH" \ No newline at end of file diff --git a/platforms/forge/src/test/resources/pack.mcmeta b/platforms/forge/src/test/resources/pack.mcmeta deleted file mode 100644 index 5ed246b25..000000000 --- a/platforms/forge/src/test/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "Terra resources", - "pack_format": 6 - } -} \ No newline at end of file From 351bdb26f26ca2ed204bf377c4d6af6261de6ef9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 29 Aug 2021 17:21:32 -0700 Subject: [PATCH 0509/1529] remove forge from README.md --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a33baa859..b6a487988 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,7 @@ to your specifications, with no knowledge of Java required. * Paper+ servers (Paper, Tuinity, Purpur, etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) * Fabric: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) -* Forge **(ALPHA - NOT PRODUCTION-READY)**: [Modrinth](https://modrinth.com/mod/terra) - / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) + ## Building and Running Terra @@ -19,7 +18,6 @@ in `platforms//build/libs` * Bukkit: `Terra--shaded.jar` * Fabric: `Terra--shaded-mapped.jar` -* Forge: `Terra--shaded.jar` ### Building a Specific Platform @@ -39,9 +37,7 @@ To run Minecraft with Terra in the IDE (for testing) use the following tasks: * Fabric * `runClient` - Run a Minecraft Fabric client with Terra installed. * `runServer` - Run a Minecraft Fabric server with Terra installed. -* Forge - * `runClient` - Run a Minecraft Forge client with Terra installed. - * `runServer` - Run a Minecraft Forge server with Terra installed. + ## Contributing From 165538141370c3c149d8c854e8996a014a1a4b7d Mon Sep 17 00:00:00 2001 From: solonovamax Date: Mon, 30 Aug 2021 16:29:18 -0400 Subject: [PATCH 0510/1529] Style: update editor config Signed-off-by: solonovamax --- .editorconfig | 451 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 349 insertions(+), 102 deletions(-) diff --git a/.editorconfig b/.editorconfig index fcb82af5d..30cfb5ef7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,137 +13,151 @@ ij_formatter_off_tag = @formatter:off ij_formatter_on_tag = @formatter:on ij_formatter_tags_enabled = false ij_smart_tabs = false +ij_visual_guides = 140 ij_wrap_on_typing = false [*.java] +ij_visual_guides = none ij_java_align_consecutive_assignments = false ij_java_align_consecutive_variable_declarations = false ij_java_align_group_field_declarations = false -ij_java_align_multiline_annotation_parameters = false -ij_java_align_multiline_array_initializer_expression = false -ij_java_align_multiline_assignment = false -ij_java_align_multiline_binary_operation = false -ij_java_align_multiline_chained_methods = false -ij_java_align_multiline_extends_list = false +ij_java_align_multiline_annotation_parameters = true +ij_java_align_multiline_array_initializer_expression = true +ij_java_align_multiline_assignment = true +ij_java_align_multiline_binary_operation = true +ij_java_align_multiline_chained_methods = true +ij_java_align_multiline_extends_list = true ij_java_align_multiline_for = true -ij_java_align_multiline_method_parentheses = false +ij_java_align_multiline_method_parentheses = true ij_java_align_multiline_parameters = true -ij_java_align_multiline_parameters_in_calls = false -ij_java_align_multiline_parenthesized_expression = false +ij_java_align_multiline_parameters_in_calls = true +ij_java_align_multiline_parenthesized_expression = true ij_java_align_multiline_records = true ij_java_align_multiline_resources = true -ij_java_align_multiline_ternary_operation = false -ij_java_align_multiline_text_blocks = false -ij_java_align_multiline_throws_list = false -ij_java_align_subsequent_simple_methods = false -ij_java_align_throws_keyword = false -ij_java_annotation_parameter_wrap = off -ij_java_array_initializer_new_line_after_left_brace = false -ij_java_array_initializer_right_brace_on_new_line = false -ij_java_array_initializer_wrap = off -ij_java_assert_statement_colon_on_next_line = false -ij_java_assert_statement_wrap = off -ij_java_assignment_wrap = off +ij_java_align_multiline_ternary_operation = true +ij_java_align_multiline_text_blocks = true +ij_java_align_multiline_throws_list = true +ij_java_align_subsequent_simple_methods = true +ij_java_align_throws_keyword = true +ij_java_annotation_parameter_wrap = on_every_item +ij_java_array_initializer_new_line_after_left_brace = true +ij_java_array_initializer_right_brace_on_new_line = true +ij_java_array_initializer_wrap = normal +ij_java_assert_statement_colon_on_next_line = true +ij_java_assert_statement_wrap = on_every_item +ij_java_assignment_wrap = normal ij_java_binary_operation_sign_on_next_line = false -ij_java_binary_operation_wrap = off +ij_java_binary_operation_wrap = normal ij_java_blank_lines_after_anonymous_class_header = 0 ij_java_blank_lines_after_class_header = 0 -ij_java_blank_lines_after_imports = 1 +ij_java_blank_lines_after_imports = 2 ij_java_blank_lines_after_package = 1 -ij_java_blank_lines_around_class = 1 +ij_java_blank_lines_around_class = 2 ij_java_blank_lines_around_field = 0 ij_java_blank_lines_around_field_in_interface = 0 -ij_java_blank_lines_around_initializer = 1 +ij_java_blank_lines_around_initializer = 0 ij_java_blank_lines_around_method = 1 ij_java_blank_lines_around_method_in_interface = 1 ij_java_blank_lines_before_class_end = 0 ij_java_blank_lines_before_imports = 1 ij_java_blank_lines_before_method_body = 0 -ij_java_blank_lines_before_package = 0 +ij_java_blank_lines_before_package = 1 ij_java_block_brace_style = end_of_line ij_java_block_comment_at_first_column = true +ij_java_builder_methods = none ij_java_call_parameters_new_line_after_left_paren = false ij_java_call_parameters_right_paren_on_new_line = false -ij_java_call_parameters_wrap = off +ij_java_call_parameters_wrap = normal ij_java_case_statement_on_separate_line = true ij_java_catch_on_new_line = false ij_java_class_annotation_wrap = split_into_lines ij_java_class_brace_style = end_of_line -ij_java_class_count_to_use_import_on_demand = 30 -ij_java_class_names_in_javadoc = 1 +ij_java_class_count_to_use_import_on_demand = 200 +ij_java_class_names_in_javadoc = 3 ij_java_do_not_indent_top_level_class_members = false ij_java_do_not_wrap_after_single_annotation = false ij_java_do_while_brace_force = never ij_java_doc_add_blank_line_after_description = true -ij_java_doc_add_blank_line_after_param_comments = false -ij_java_doc_add_blank_line_after_return = false +ij_java_doc_add_blank_line_after_param_comments = true +ij_java_doc_add_blank_line_after_return = true ij_java_doc_add_p_tag_on_empty_lines = true ij_java_doc_align_exception_comments = true ij_java_doc_align_param_comments = true ij_java_doc_do_not_wrap_if_one_line = false ij_java_doc_enable_formatting = true ij_java_doc_enable_leading_asterisks = true -ij_java_doc_indent_on_continuation = false +ij_java_doc_indent_on_continuation = true ij_java_doc_keep_empty_lines = true ij_java_doc_keep_empty_parameter_tag = true ij_java_doc_keep_empty_return_tag = true ij_java_doc_keep_empty_throws_tag = true ij_java_doc_keep_invalid_tags = true ij_java_doc_param_description_on_new_line = false -ij_java_doc_preserve_line_breaks = false +ij_java_doc_preserve_line_breaks = true ij_java_doc_use_throws_not_exception_tag = true ij_java_else_on_new_line = false -ij_java_enum_constants_wrap = off -ij_java_extends_keyword_wrap = off -ij_java_extends_list_wrap = off +ij_java_entity_dd_suffix = EJB +ij_java_entity_eb_suffix = Bean +ij_java_entity_hi_suffix = Home +ij_java_entity_lhi_prefix = Local +ij_java_entity_lhi_suffix = Home +ij_java_entity_li_prefix = Local +ij_java_entity_pk_class = java.lang.String +ij_java_entity_vo_suffix = VO +ij_java_enum_constants_wrap = split_into_lines +ij_java_extends_keyword_wrap = normal +ij_java_extends_list_wrap = on_every_item ij_java_field_annotation_wrap = split_into_lines ij_java_finally_on_new_line = false ij_java_for_brace_force = never ij_java_for_statement_new_line_after_left_paren = false ij_java_for_statement_right_paren_on_new_line = false -ij_java_for_statement_wrap = off +ij_java_for_statement_wrap = on_every_item ij_java_generate_final_locals = false ij_java_generate_final_parameters = false ij_java_if_brace_force = never -ij_java_imports_layout = *, |, javax.**, java.**, |, $* +ij_java_imports_layout = *, |, javax.**, java.**, |, com.dfsek.terra.**, |, $org.junit.jupiter.api.Assertions.**, |, $* ij_java_indent_case_from_switch = true -ij_java_insert_inner_class_imports = false +ij_java_insert_inner_class_imports = true ij_java_insert_override_annotation = true ij_java_keep_blank_lines_before_right_brace = 2 -ij_java_keep_blank_lines_between_package_declaration_and_header = 2 +ij_java_keep_blank_lines_between_package_declaration_and_header = 1 ij_java_keep_blank_lines_in_code = 2 ij_java_keep_blank_lines_in_declarations = 2 +ij_java_keep_builder_methods_indents = true ij_java_keep_control_statement_in_one_line = true -ij_java_keep_first_column_comment = true -ij_java_keep_indents_on_empty_lines = false +ij_java_keep_first_column_comment = false +ij_java_keep_indents_on_empty_lines = true ij_java_keep_line_breaks = true ij_java_keep_multiple_expressions_in_one_line = false -ij_java_keep_simple_blocks_in_one_line = false +ij_java_keep_simple_blocks_in_one_line = true ij_java_keep_simple_classes_in_one_line = false -ij_java_keep_simple_lambdas_in_one_line = false -ij_java_keep_simple_methods_in_one_line = false +ij_java_keep_simple_lambdas_in_one_line = true +ij_java_keep_simple_methods_in_one_line = true ij_java_label_indent_absolute = false ij_java_label_indent_size = 0 ij_java_lambda_brace_style = end_of_line ij_java_layout_static_imports_separately = true ij_java_line_comment_add_space = false ij_java_line_comment_at_first_column = true +ij_java_message_dd_suffix = EJB +ij_java_message_eb_suffix = Bean ij_java_method_annotation_wrap = split_into_lines ij_java_method_brace_style = end_of_line -ij_java_method_call_chain_wrap = off +ij_java_method_call_chain_wrap = on_every_item ij_java_method_parameters_new_line_after_left_paren = false ij_java_method_parameters_right_paren_on_new_line = false -ij_java_method_parameters_wrap = off +ij_java_method_parameters_wrap = normal ij_java_modifier_list_wrap = false -ij_java_names_count_to_use_import_on_demand = 3 +ij_java_names_count_to_use_import_on_demand = 50 ij_java_new_line_after_lparen_in_record_header = false -ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.* -ij_java_parameter_annotation_wrap = off +ij_java_packages_to_use_import_on_demand = $org.junit.jupiter.api.Assertions.* +ij_java_parameter_annotation_wrap = on_every_item ij_java_parentheses_expression_new_line_after_left_paren = false ij_java_parentheses_expression_right_paren_on_new_line = false ij_java_place_assignment_sign_on_next_line = false ij_java_prefer_longer_names = true -ij_java_prefer_parameters_wrap = false +ij_java_prefer_parameters_wrap = true ij_java_record_components_wrap = normal ij_java_repeat_synchronized = true ij_java_replace_instanceof_and_cast = false @@ -151,8 +165,15 @@ ij_java_replace_null_check = true ij_java_replace_sum_lambda_with_method_ref = true ij_java_resource_list_new_line_after_left_paren = false ij_java_resource_list_right_paren_on_new_line = false -ij_java_resource_list_wrap = off +ij_java_resource_list_wrap = on_every_item ij_java_rparen_on_new_line_in_record_header = false +ij_java_session_dd_suffix = EJB +ij_java_session_eb_suffix = Bean +ij_java_session_hi_suffix = Home +ij_java_session_lhi_prefix = Local +ij_java_session_lhi_suffix = Home +ij_java_session_li_prefix = Local +ij_java_session_si_suffix = Service ij_java_space_after_closing_angle_bracket_in_type_argument = false ij_java_space_after_colon = true ij_java_space_after_comma = true @@ -162,7 +183,7 @@ ij_java_space_after_quest = true ij_java_space_after_type_cast = true ij_java_space_before_annotation_array_initializer_left_brace = false ij_java_space_before_annotation_parameter_list = false -ij_java_space_before_array_initializer_left_brace = true +ij_java_space_before_array_initializer_left_brace = false ij_java_space_before_catch_keyword = true ij_java_space_before_catch_left_brace = true ij_java_space_before_catch_parentheses = false @@ -196,7 +217,7 @@ ij_java_space_before_while_keyword = true ij_java_space_before_while_left_brace = true ij_java_space_before_while_parentheses = false ij_java_space_inside_one_line_enum_braces = false -ij_java_space_within_empty_array_initializer_braces = false +ij_java_space_within_empty_array_initializer_braces = true ij_java_space_within_empty_method_call_parentheses = false ij_java_space_within_empty_method_parentheses = false ij_java_spaces_around_additive_operators = true @@ -213,8 +234,8 @@ ij_java_spaces_around_type_bounds_in_type_parameters = true ij_java_spaces_around_unary_operator = false ij_java_spaces_within_angle_brackets = false ij_java_spaces_within_annotation_parentheses = false -ij_java_spaces_within_array_initializer_braces = false -ij_java_spaces_within_braces = false +ij_java_spaces_within_array_initializer_braces = true +ij_java_spaces_within_braces = true ij_java_spaces_within_brackets = false ij_java_spaces_within_cast_parentheses = false ij_java_spaces_within_catch_parentheses = false @@ -223,80 +244,276 @@ ij_java_spaces_within_if_parentheses = false ij_java_spaces_within_method_call_parentheses = false ij_java_spaces_within_method_parentheses = false ij_java_spaces_within_parentheses = false +ij_java_spaces_within_record_header = false ij_java_spaces_within_switch_parentheses = false ij_java_spaces_within_synchronized_parentheses = false ij_java_spaces_within_try_parentheses = false ij_java_spaces_within_while_parentheses = false ij_java_special_else_if_treatment = true ij_java_subclass_name_suffix = Impl -ij_java_ternary_operation_signs_on_next_line = false -ij_java_ternary_operation_wrap = off +ij_java_ternary_operation_signs_on_next_line = true +ij_java_ternary_operation_wrap = on_every_item ij_java_test_name_suffix = Test -ij_java_throws_keyword_wrap = off -ij_java_throws_list_wrap = off +ij_java_throws_keyword_wrap = normal +ij_java_throws_list_wrap = normal ij_java_use_external_annotations = false ij_java_use_fq_class_names = false ij_java_use_relative_indents = false ij_java_use_single_class_imports = true -ij_java_variable_annotation_wrap = off +ij_java_variable_annotation_wrap = on_every_item ij_java_visibility = public ij_java_while_brace_force = never ij_java_while_on_new_line = false -ij_java_wrap_comments = false +ij_java_wrap_comments = true ij_java_wrap_first_method_in_call_chain = false -ij_java_wrap_long_lines = false +ij_java_wrap_long_lines = true -[{*.gradle.kts, *.kt, *.kts, *.main.kts}] -ij_kotlin_align_in_columns_case_branch = false +[.editorconfig] +ij_visual_guides = none +ij_editorconfig_align_group_field_declarations = false +ij_editorconfig_space_after_colon = false +ij_editorconfig_space_after_comma = true +ij_editorconfig_space_before_colon = false +ij_editorconfig_space_before_comma = false +ij_editorconfig_spaces_around_assignment_operators = true + +[{*.gant, *.gradle, *.groovy, *.gson, *.gy}] +ij_visual_guides = none +ij_groovy_align_group_field_declarations = false +ij_groovy_align_multiline_array_initializer_expression = false +ij_groovy_align_multiline_assignment = false +ij_groovy_align_multiline_binary_operation = false +ij_groovy_align_multiline_chained_methods = false +ij_groovy_align_multiline_extends_list = false +ij_groovy_align_multiline_for = true +ij_groovy_align_multiline_list_or_map = true +ij_groovy_align_multiline_method_parentheses = false +ij_groovy_align_multiline_parameters = true +ij_groovy_align_multiline_parameters_in_calls = false +ij_groovy_align_multiline_resources = true +ij_groovy_align_multiline_ternary_operation = false +ij_groovy_align_multiline_throws_list = false +ij_groovy_align_named_args_in_map = true +ij_groovy_align_throws_keyword = false +ij_groovy_array_initializer_new_line_after_left_brace = false +ij_groovy_array_initializer_right_brace_on_new_line = false +ij_groovy_array_initializer_wrap = off +ij_groovy_assert_statement_wrap = off +ij_groovy_assignment_wrap = off +ij_groovy_binary_operation_wrap = off +ij_groovy_blank_lines_after_class_header = 0 +ij_groovy_blank_lines_after_imports = 1 +ij_groovy_blank_lines_after_package = 1 +ij_groovy_blank_lines_around_class = 1 +ij_groovy_blank_lines_around_field = 0 +ij_groovy_blank_lines_around_field_in_interface = 0 +ij_groovy_blank_lines_around_method = 1 +ij_groovy_blank_lines_around_method_in_interface = 1 +ij_groovy_blank_lines_before_imports = 1 +ij_groovy_blank_lines_before_method_body = 0 +ij_groovy_blank_lines_before_package = 0 +ij_groovy_block_brace_style = end_of_line +ij_groovy_block_comment_at_first_column = true +ij_groovy_call_parameters_new_line_after_left_paren = false +ij_groovy_call_parameters_right_paren_on_new_line = false +ij_groovy_call_parameters_wrap = off +ij_groovy_catch_on_new_line = false +ij_groovy_class_annotation_wrap = split_into_lines +ij_groovy_class_brace_style = end_of_line +ij_groovy_class_count_to_use_import_on_demand = 5 +ij_groovy_do_while_brace_force = never +ij_groovy_else_on_new_line = false +ij_groovy_enum_constants_wrap = off +ij_groovy_extends_keyword_wrap = off +ij_groovy_extends_list_wrap = off +ij_groovy_field_annotation_wrap = split_into_lines +ij_groovy_finally_on_new_line = false +ij_groovy_for_brace_force = never +ij_groovy_for_statement_new_line_after_left_paren = false +ij_groovy_for_statement_right_paren_on_new_line = false +ij_groovy_for_statement_wrap = off +ij_groovy_if_brace_force = never +ij_groovy_import_annotation_wrap = 2 +ij_groovy_imports_layout = *, |, javax.**, java.**, |, $* +ij_groovy_indent_case_from_switch = true +ij_groovy_indent_label_blocks = true +ij_groovy_insert_inner_class_imports = false +ij_groovy_keep_blank_lines_before_right_brace = 2 +ij_groovy_keep_blank_lines_in_code = 2 +ij_groovy_keep_blank_lines_in_declarations = 2 +ij_groovy_keep_control_statement_in_one_line = true +ij_groovy_keep_first_column_comment = true +ij_groovy_keep_indents_on_empty_lines = false +ij_groovy_keep_line_breaks = true +ij_groovy_keep_multiple_expressions_in_one_line = false +ij_groovy_keep_simple_blocks_in_one_line = false +ij_groovy_keep_simple_classes_in_one_line = true +ij_groovy_keep_simple_lambdas_in_one_line = true +ij_groovy_keep_simple_methods_in_one_line = true +ij_groovy_label_indent_absolute = false +ij_groovy_label_indent_size = 0 +ij_groovy_lambda_brace_style = end_of_line +ij_groovy_layout_static_imports_separately = true +ij_groovy_line_comment_add_space = false +ij_groovy_line_comment_at_first_column = true +ij_groovy_method_annotation_wrap = split_into_lines +ij_groovy_method_brace_style = end_of_line +ij_groovy_method_call_chain_wrap = off +ij_groovy_method_parameters_new_line_after_left_paren = false +ij_groovy_method_parameters_right_paren_on_new_line = false +ij_groovy_method_parameters_wrap = off +ij_groovy_modifier_list_wrap = false +ij_groovy_names_count_to_use_import_on_demand = 3 +ij_groovy_parameter_annotation_wrap = off +ij_groovy_parentheses_expression_new_line_after_left_paren = false +ij_groovy_parentheses_expression_right_paren_on_new_line = false +ij_groovy_prefer_parameters_wrap = false +ij_groovy_resource_list_new_line_after_left_paren = false +ij_groovy_resource_list_right_paren_on_new_line = false +ij_groovy_resource_list_wrap = off +ij_groovy_space_after_assert_separator = true +ij_groovy_space_after_colon = true +ij_groovy_space_after_comma = true +ij_groovy_space_after_comma_in_type_arguments = true +ij_groovy_space_after_for_semicolon = true +ij_groovy_space_after_quest = true +ij_groovy_space_after_type_cast = true +ij_groovy_space_before_annotation_parameter_list = false +ij_groovy_space_before_array_initializer_left_brace = false +ij_groovy_space_before_assert_separator = false +ij_groovy_space_before_catch_keyword = true +ij_groovy_space_before_catch_left_brace = true +ij_groovy_space_before_catch_parentheses = true +ij_groovy_space_before_class_left_brace = true +ij_groovy_space_before_closure_left_brace = true +ij_groovy_space_before_colon = true +ij_groovy_space_before_comma = false +ij_groovy_space_before_do_left_brace = true +ij_groovy_space_before_else_keyword = true +ij_groovy_space_before_else_left_brace = true +ij_groovy_space_before_finally_keyword = true +ij_groovy_space_before_finally_left_brace = true +ij_groovy_space_before_for_left_brace = true +ij_groovy_space_before_for_parentheses = true +ij_groovy_space_before_for_semicolon = false +ij_groovy_space_before_if_left_brace = true +ij_groovy_space_before_if_parentheses = true +ij_groovy_space_before_method_call_parentheses = false +ij_groovy_space_before_method_left_brace = true +ij_groovy_space_before_method_parentheses = false +ij_groovy_space_before_quest = true +ij_groovy_space_before_switch_left_brace = true +ij_groovy_space_before_switch_parentheses = true +ij_groovy_space_before_synchronized_left_brace = true +ij_groovy_space_before_synchronized_parentheses = true +ij_groovy_space_before_try_left_brace = true +ij_groovy_space_before_try_parentheses = true +ij_groovy_space_before_while_keyword = true +ij_groovy_space_before_while_left_brace = true +ij_groovy_space_before_while_parentheses = true +ij_groovy_space_in_named_argument = true +ij_groovy_space_in_named_argument_before_colon = false +ij_groovy_space_within_empty_array_initializer_braces = false +ij_groovy_space_within_empty_method_call_parentheses = false +ij_groovy_spaces_around_additive_operators = true +ij_groovy_spaces_around_assignment_operators = true +ij_groovy_spaces_around_bitwise_operators = true +ij_groovy_spaces_around_equality_operators = true +ij_groovy_spaces_around_lambda_arrow = true +ij_groovy_spaces_around_logical_operators = true +ij_groovy_spaces_around_multiplicative_operators = true +ij_groovy_spaces_around_regex_operators = true +ij_groovy_spaces_around_relational_operators = true +ij_groovy_spaces_around_shift_operators = true +ij_groovy_spaces_within_annotation_parentheses = false +ij_groovy_spaces_within_array_initializer_braces = false +ij_groovy_spaces_within_braces = true +ij_groovy_spaces_within_brackets = false +ij_groovy_spaces_within_cast_parentheses = false +ij_groovy_spaces_within_catch_parentheses = false +ij_groovy_spaces_within_for_parentheses = false +ij_groovy_spaces_within_gstring_injection_braces = false +ij_groovy_spaces_within_if_parentheses = false +ij_groovy_spaces_within_list_or_map = false +ij_groovy_spaces_within_method_call_parentheses = false +ij_groovy_spaces_within_method_parentheses = false +ij_groovy_spaces_within_parentheses = false +ij_groovy_spaces_within_switch_parentheses = false +ij_groovy_spaces_within_synchronized_parentheses = false +ij_groovy_spaces_within_try_parentheses = false +ij_groovy_spaces_within_tuple_expression = false +ij_groovy_spaces_within_while_parentheses = false +ij_groovy_special_else_if_treatment = true +ij_groovy_ternary_operation_wrap = off +ij_groovy_throws_keyword_wrap = off +ij_groovy_throws_list_wrap = off +ij_groovy_use_flying_geese_braces = false +ij_groovy_use_fq_class_names = false +ij_groovy_use_fq_class_names_in_javadoc = true +ij_groovy_use_relative_indents = false +ij_groovy_use_single_class_imports = true +ij_groovy_variable_annotation_wrap = off +ij_groovy_while_brace_force = never +ij_groovy_while_on_new_line = false +ij_groovy_wrap_long_lines = false + +[{*.gql, *.graphql, *.graphqls}] +ij_visual_guides = none + +[{*.kt, *.kts}] +ij_visual_guides = none +ij_kotlin_align_in_columns_case_branch = true ij_kotlin_align_multiline_binary_operation = false -ij_kotlin_align_multiline_extends_list = false -ij_kotlin_align_multiline_method_parentheses = false +ij_kotlin_align_multiline_extends_list = true +ij_kotlin_align_multiline_method_parentheses = true ij_kotlin_align_multiline_parameters = true -ij_kotlin_align_multiline_parameters_in_calls = false +ij_kotlin_align_multiline_parameters_in_calls = true ij_kotlin_allow_trailing_comma = false ij_kotlin_allow_trailing_comma_on_call_site = false -ij_kotlin_assignment_wrap = off +ij_kotlin_assignment_wrap = normal ij_kotlin_blank_lines_after_class_header = 0 -ij_kotlin_blank_lines_around_block_when_branches = 0 +ij_kotlin_blank_lines_around_block_when_branches = 1 ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1 ij_kotlin_block_comment_at_first_column = true -ij_kotlin_call_parameters_new_line_after_left_paren = false -ij_kotlin_call_parameters_right_paren_on_new_line = false -ij_kotlin_call_parameters_wrap = off +ij_kotlin_call_parameters_new_line_after_left_paren = true +ij_kotlin_call_parameters_right_paren_on_new_line = true +ij_kotlin_call_parameters_wrap = on_every_item ij_kotlin_catch_on_new_line = false ij_kotlin_class_annotation_wrap = split_into_lines -ij_kotlin_continuation_indent_for_chained_calls = true -ij_kotlin_continuation_indent_for_expression_bodies = true -ij_kotlin_continuation_indent_in_argument_lists = true -ij_kotlin_continuation_indent_in_elvis = true -ij_kotlin_continuation_indent_in_if_conditions = true -ij_kotlin_continuation_indent_in_parameter_lists = true -ij_kotlin_continuation_indent_in_supertype_lists = true +ij_kotlin_continuation_indent_for_chained_calls = false +ij_kotlin_continuation_indent_for_expression_bodies = false +ij_kotlin_continuation_indent_in_argument_lists = false +ij_kotlin_continuation_indent_in_elvis = false +ij_kotlin_continuation_indent_in_if_conditions = false +ij_kotlin_continuation_indent_in_parameter_lists = false +ij_kotlin_continuation_indent_in_supertype_lists = false ij_kotlin_else_on_new_line = false -ij_kotlin_enum_constants_wrap = off -ij_kotlin_extends_list_wrap = off -ij_kotlin_field_annotation_wrap = split_into_lines +ij_kotlin_enum_constants_wrap = on_every_item +ij_kotlin_extends_list_wrap = normal +ij_kotlin_field_annotation_wrap = on_every_item ij_kotlin_finally_on_new_line = false -ij_kotlin_if_rparen_on_new_line = false +ij_kotlin_if_rparen_on_new_line = true ij_kotlin_import_nested_classes = false +ij_kotlin_imports_layout = *, java.*, javax.*, kotlin.** ij_kotlin_insert_whitespaces_in_simple_one_line_method = true -ij_kotlin_keep_blank_lines_before_right_brace = 2 +ij_kotlin_keep_blank_lines_before_right_brace = 1 ij_kotlin_keep_blank_lines_in_code = 2 ij_kotlin_keep_blank_lines_in_declarations = 2 ij_kotlin_keep_first_column_comment = true -ij_kotlin_keep_indents_on_empty_lines = false +ij_kotlin_keep_indents_on_empty_lines = true ij_kotlin_keep_line_breaks = true ij_kotlin_lbrace_on_next_line = false ij_kotlin_line_comment_add_space = false ij_kotlin_line_comment_at_first_column = true -ij_kotlin_method_annotation_wrap = split_into_lines -ij_kotlin_method_call_chain_wrap = off -ij_kotlin_method_parameters_new_line_after_left_paren = false -ij_kotlin_method_parameters_right_paren_on_new_line = false -ij_kotlin_method_parameters_wrap = off -ij_kotlin_name_count_to_use_star_import = 5 -ij_kotlin_name_count_to_use_star_import_for_members = 3 -ij_kotlin_parameter_annotation_wrap = off +ij_kotlin_method_annotation_wrap = on_every_item +ij_kotlin_method_call_chain_wrap = normal +ij_kotlin_method_parameters_new_line_after_left_paren = true +ij_kotlin_method_parameters_right_paren_on_new_line = true +ij_kotlin_method_parameters_wrap = on_every_item +ij_kotlin_name_count_to_use_star_import = 2147483647 +ij_kotlin_name_count_to_use_star_import_for_members = 2147483647 +ij_kotlin_packages_to_use_import_on_demand = java.util.*, kotlinx.android.synthetic.*, io.ktor.* +ij_kotlin_parameter_annotation_wrap = on_every_item ij_kotlin_space_after_comma = true ij_kotlin_space_after_extend_colon = true ij_kotlin_space_after_type_colon = true @@ -315,33 +532,63 @@ ij_kotlin_spaces_around_equality_operators = true ij_kotlin_spaces_around_function_type_arrow = true ij_kotlin_spaces_around_logical_operators = true ij_kotlin_spaces_around_multiplicative_operators = true -ij_kotlin_spaces_around_range = false +ij_kotlin_spaces_around_range = true ij_kotlin_spaces_around_relational_operators = true ij_kotlin_spaces_around_unary_operator = false ij_kotlin_spaces_around_when_arrow = true -ij_kotlin_variable_annotation_wrap = off +ij_kotlin_variable_annotation_wrap = on_every_item ij_kotlin_while_on_new_line = false ij_kotlin_wrap_elvis_expressions = 1 -ij_kotlin_wrap_expression_body_functions = 0 +ij_kotlin_wrap_expression_body_functions = 1 ij_kotlin_wrap_first_method_in_call_chain = false -[{*.har, *.jsb2, *.jsb3, *.json, .babelrc, .eslintrc, .stylelintrc, bowerrc, jest.config}] -indent_size = 2 -ij_json_keep_blank_lines_in_code = 0 +[{*.graphqlconfig, *.har, *.jsb2, *.jsb3, *.json, .babelrc, .eslintrc, .stylelintrc, bowerrc, jest.config, mcmod.info, pack.mcmeta}] +ij_visual_guides = none +ij_json_keep_blank_lines_in_code = 1 ij_json_keep_indents_on_empty_lines = false ij_json_keep_line_breaks = true ij_json_space_after_colon = true ij_json_space_after_comma = true ij_json_space_before_colon = true ij_json_space_before_comma = false -ij_json_spaces_within_braces = false -ij_json_spaces_within_brackets = false +ij_json_spaces_within_braces = true +ij_json_spaces_within_brackets = true ij_json_wrap_long_lines = false +[{*.markdown, *.md}] +max_line_length = 80 +ij_visual_guides = 80 +ij_markdown_force_one_space_after_blockquote_symbol = true +ij_markdown_force_one_space_after_header_symbol = true +ij_markdown_force_one_space_after_list_bullet = true +ij_markdown_force_one_space_between_words = true +ij_markdown_keep_indents_on_empty_lines = false +ij_markdown_max_lines_around_block_elements = 1 +ij_markdown_max_lines_around_header = 1 +ij_markdown_max_lines_between_paragraphs = 1 +ij_markdown_min_lines_around_block_elements = 1 +ij_markdown_min_lines_around_header = 1 +ij_markdown_min_lines_between_paragraphs = 1 + +[{*.properties, spring.handlers, spring.schemas}] +ij_visual_guides = none +ij_properties_align_group_field_declarations = false +ij_properties_keep_blank_lines = false +ij_properties_key_value_delimiter = equals +ij_properties_spaces_around_key_value_delimiter = false + [{*.yaml, *.yml}] indent_size = 2 +ij_visual_guides = none +ij_yaml_align_values_properties = do_not_align +ij_yaml_autoinsert_sequence_marker = true +ij_yaml_block_mapping_on_new_line = false +ij_yaml_indent_sequence_value = true ij_yaml_keep_indents_on_empty_lines = true ij_yaml_keep_line_breaks = true +ij_yaml_sequence_on_new_line = false ij_yaml_space_before_colon = false ij_yaml_spaces_within_braces = true ij_yaml_spaces_within_brackets = true + + From c445a0434d726989e9f1b3426e602c5a383f4374 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Mon, 30 Aug 2021 17:34:44 -0400 Subject: [PATCH 0511/1529] Reformat all code Signed-off-by: solonovamax --- CODE_OF_CONDUCT.md | 442 ++++++++++------ CONTRIBUTING.md | 303 +++++++---- README.md | 39 +- build.gradle.kts | 18 +- .../kotlin/com/dfsek/terra/AddonConfig.kt | 12 +- .../kotlin/com/dfsek/terra/CommonConfig.kt | 2 +- .../com/dfsek/terra/CompilationConfig.kt | 39 +- .../com/dfsek/terra/DependencyConfig.kt | 16 +- .../com/dfsek/terra/DistributionConfig.kt | 58 +- .../com/dfsek/terra/PublishingConfig.kt | 10 +- common/addons/README.md | 3 +- common/addons/api-features/README.md | 10 +- common/addons/biome-provider-image/README.md | 4 +- .../biome/image/ImageBiomeProvider.java | 37 +- .../biome/image/ImageBiomeProviderAddon.java | 26 +- .../biome/image/ImageProviderTemplate.java | 24 +- .../addons/biome-provider-pipeline/README.md | 4 +- .../biome/pipeline/BiomeHolderImpl.java | 30 +- .../addons/biome/pipeline/BiomePipeline.java | 28 +- .../biome/pipeline/BiomePipelineAddon.java | 64 ++- .../biome/pipeline/BiomePipelineProvider.java | 55 +- .../biome/pipeline/api/BiomeExpander.java | 1 + .../biome/pipeline/api/BiomeHolder.java | 11 +- .../biome/pipeline/api/BiomeMutator.java | 9 +- .../addons/biome/pipeline/api/Stage.java | 6 +- .../config/BiomePipelineTemplate.java | 26 +- .../pipeline/config/BiomeProviderLoader.java | 4 +- .../config/BiomeProviderTemplate.java | 2 + .../pipeline/config/NoiseSourceTemplate.java | 8 +- .../biome/pipeline/config/SourceTemplate.java | 4 +- .../pipeline/config/stage/StageTemplate.java | 4 +- .../stage/expander/ExpanderStageTemplate.java | 1 + .../mutator/BorderListMutatorTemplate.java | 14 +- .../stage/mutator/BorderMutatorTemplate.java | 9 +- .../mutator/ReplaceListMutatorTemplate.java | 11 +- .../stage/mutator/ReplaceMutatorTemplate.java | 7 +- .../stage/mutator/SmoothMutatorTemplate.java | 2 +- .../pipeline/expand/FractalExpander.java | 5 +- .../pipeline/mutator/BorderListMutator.java | 10 +- .../biome/pipeline/mutator/BorderMutator.java | 5 +- .../pipeline/mutator/ReplaceListMutator.java | 10 +- .../pipeline/mutator/ReplaceMutator.java | 5 +- .../biome/pipeline/mutator/SmoothMutator.java | 19 +- .../biome/pipeline/source/BiomeSource.java | 1 + .../biome/pipeline/source/NoiseSource.java | 5 +- .../biome/pipeline/stages/ExpanderStage.java | 17 +- .../biome/pipeline/stages/MutatorStage.java | 23 +- .../biome/single/SingleBiomeProvider.java | 5 +- .../single/SingleBiomeProviderAddon.java | 26 +- .../single/SingleBiomeProviderTemplate.java | 4 +- .../chunkgenerator/BiomePaletteTemplate.java | 14 +- .../NoiseChunkGenerator3DAddon.java | 40 +- .../addons/chunkgenerator/PaletteUtil.java | 3 +- .../generators/NoiseChunkGenerator3D.java | 133 ++--- .../interpolation/ChunkInterpolator2D.java | 42 +- .../interpolation/ChunkInterpolator3D.java | 54 +- .../interpolation/ElevationInterpolator.java | 13 +- .../math/interpolation/Interpolator.java | 8 +- .../math/interpolation/Interpolator3.java | 4 +- .../generation/math/samplers/Sampler3D.java | 14 +- .../chunkgenerator/palette/PaletteHolder.java | 13 +- .../palette/PaletteHolderBuilder.java | 12 +- .../palette/PaletteHolderLoader.java | 4 +- .../chunkgenerator/palette/PaletteInfo.java | 13 +- .../chunkgenerator/palette/SlantHolder.java | 7 +- .../palette/SlantHolderLoader.java | 5 +- .../dfsek/terra/addons/biome/BiomeAddon.java | 17 +- .../terra/addons/biome/BiomeConfigType.java | 42 +- .../terra/addons/biome/BiomeFactory.java | 13 +- .../terra/addons/biome/BiomeTemplate.java | 229 ++++---- .../terra/addons/biome/BlankFunction.java | 17 +- .../addons/biome/PaletteSettingsImpl.java | 5 +- .../terra/addons/biome/UserDefinedBiome.java | 41 +- .../biome/UserDefinedGenerationSettings.java | 28 +- .../biome/command/biome/AsyncBiomeFinder.java | 58 +- .../biome/command/biome/BiomeCommand.java | 17 +- .../biome/command/biome/BiomeInfoCommand.java | 21 +- .../command/biome/BiomeLocateCommand.java | 68 +-- .../biome/arg/BiomeArgumentParser.java | 3 +- .../command/biome/tab/BiomeTabCompleter.java | 10 +- .../addons/biome/holder/PaletteHolder.java | 13 +- .../biome/holder/PaletteHolderBuilder.java | 12 +- .../biome/holder/PaletteHolderLoader.java | 5 +- .../terra/addons/carver/CarverCache.java | 75 +-- .../terra/addons/carver/CarverFactory.java | 17 +- .../terra/addons/carver/CarverPalette.java | 32 +- .../terra/addons/carver/CarverTemplate.java | 98 ++-- .../terra/addons/carver/CavePopulator.java | 42 +- .../addons/carver/UserDefinedCarver.java | 118 +++-- .../terra/addons/carver/carving/Carver.java | 25 +- .../terra/addons/carver/carving/Worm.java | 71 +-- .../feature/distributor/DistributorAddon.java | 36 +- .../config/AndDistributorTemplate.java | 10 +- .../config/NoiseDistributorTemplate.java | 11 +- .../config/OrDistributorTemplate.java | 10 +- .../config/PointSetDistributorTemplate.java | 6 +- .../distributors/NoiseDistributor.java | 6 +- .../distributors/PointSetDistributor.java | 7 +- .../feature/distributor/util/Point.java | 12 +- .../distributor/util/PointTemplate.java | 6 +- .../addons/feature/ConfiguredFeature.java | 14 +- .../terra/addons/feature/FeatureAddon.java | 11 +- .../addons/feature/FeatureConfigType.java | 40 +- .../terra/addons/feature/FeatureFactory.java | 2 + .../terra/addons/feature/FeatureTemplate.java | 21 +- .../dfsek/terra/addons/flora/FloraAddon.java | 17 +- .../terra/addons/flora/FloraConfigType.java | 39 +- .../terra/addons/flora/FloraFactory.java | 5 +- .../terra/addons/flora/FloraTemplate.java | 114 ++-- .../flora/config/BlockLayerTemplate.java | 6 +- .../addons/flora/flora/gen/BlockLayer.java | 7 +- .../addons/flora/flora/gen/TerraFlora.java | 129 ++--- .../addons/feature/locator/LocatorAddon.java | 62 ++- .../locator/config/AndLocatorTemplate.java | 9 +- .../locator/config/NoiseLocatorTemplate.java | 6 +- .../locator/config/OrLocatorTemplate.java | 8 +- .../config/PatternLocatorTemplate.java | 6 +- .../locator/config/RandomLocatorTemplate.java | 7 +- .../config/SurfaceLocatorTemplate.java | 8 +- .../pattern/AirMatchPatternTemplate.java | 8 +- .../config/pattern/AndPatternTemplate.java | 8 +- .../pattern/BlockSetMatchPatternTemplate.java | 8 +- .../config/pattern/NotPatternTemplate.java | 4 +- .../config/pattern/OrPatternTemplate.java | 8 +- .../SingleBlockMatchPatternTemplate.java | 10 +- .../pattern/SolidMatchPatternTemplate.java | 6 +- .../locator/locators/NoiseLocator.java | 14 +- .../locator/locators/PatternLocator.java | 10 +- .../locator/locators/RandomLocator.java | 19 +- .../locator/locators/SurfaceLocator.java | 9 +- .../locator/patterns/MatchPattern.java | 8 +- .../feature/locator/patterns/Pattern.java | 7 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 114 ++-- .../addons/noise/NoiseConfigPackTemplate.java | 6 +- .../DimensionApplicableNoiseSampler.java | 22 +- .../config/templates/DomainWarpTemplate.java | 10 +- .../config/templates/FunctionTemplate.java | 24 +- .../templates/ImageSamplerTemplate.java | 14 +- .../config/templates/KernelTemplate.java | 35 +- .../config/templates/SamplerTemplate.java | 12 +- .../noise/CellularNoiseTemplate.java | 12 +- .../noise/ConstantNoiseTemplate.java | 4 +- .../noise/ExpressionFunctionTemplate.java | 36 +- .../templates/noise/GaborNoiseTemplate.java | 22 +- .../config/templates/noise/NoiseTemplate.java | 7 +- .../templates/noise/SimpleNoiseTemplate.java | 8 +- .../noise/fractal/BrownianMotionTemplate.java | 1 + .../noise/fractal/FractalTemplate.java | 10 +- .../noise/fractal/PingPongTemplate.java | 6 +- .../noise/fractal/RidgedFractalTemplate.java | 1 + .../normalizer/ClampNormalizerTemplate.java | 8 +- .../normalizer/LinearNormalizerTemplate.java | 8 +- .../normalizer/NormalNormalizerTemplate.java | 10 +- .../normalizer/NormalizerTemplate.java | 2 + .../noise/normalizer/ClampNormalizer.java | 8 +- .../noise/normalizer/LinearNormalizer.java | 5 +- .../noise/normalizer/NormalNormalizer.java | 16 +- .../addons/noise/normalizer/Normalizer.java | 9 +- .../defined/UserDefinedFunction.java | 27 +- .../paralithic/noise/NoiseFunction2.java | 20 +- .../paralithic/noise/NoiseFunction3.java | 20 +- .../noise/paralithic/noise/SeedContext.java | 5 +- .../noise/samplers/DomainWarpedSampler.java | 21 +- .../addons/noise/samplers/ImageSampler.java | 32 +- .../addons/noise/samplers/KernelSampler.java | 23 +- .../noise/samplers/noise/CellularSampler.java | 117 +++-- .../noise/samplers/noise/ConstantSampler.java | 6 +- .../samplers/noise/ExpressionFunction.java | 18 +- .../samplers/noise/GaborNoiseSampler.java | 99 ++-- .../noise/samplers/noise/NoiseFunction.java | 74 +-- .../noise/fractal/BrownianMotionSampler.java | 17 +- .../noise/fractal/FractalNoiseFunction.java | 27 +- .../noise/fractal/PingPongSampler.java | 25 +- .../noise/fractal/RidgedFractalSampler.java | 19 +- .../noise/random/GaussianNoiseSampler.java | 7 +- .../noise/random/WhiteNoiseSampler.java | 58 +- .../noise/simplex/OpenSimplex2SSampler.java | 104 ++-- .../noise/simplex/OpenSimplex2Sampler.java | 56 +- .../samplers/noise/simplex/PerlinSampler.java | 24 +- .../noise/simplex/SimplexSampler.java | 77 +-- .../noise/simplex/SimplexStyleSampler.java | 17 +- .../noise/value/ValueCubicSampler.java | 56 +- .../samplers/noise/value/ValueSampler.java | 20 +- .../samplers/noise/value/ValueStyleNoise.java | 9 +- .../addons/noise/util/HashIntrinsic.java | 51 +- .../noise/util/HashMapDoubleDouble.java | 201 +++---- .../com/dfsek/terra/addons/ore/OreAddon.java | 16 +- .../dfsek/terra/addons/ore/OreConfigType.java | 38 +- .../dfsek/terra/addons/ore/OreFactory.java | 1 + .../dfsek/terra/addons/ore/OrePopulator.java | 15 +- .../dfsek/terra/addons/ore/OreTemplate.java | 68 +-- .../com/dfsek/terra/addons/ore/ores/Ore.java | 17 +- .../terra/addons/ore/ores/OreConfig.java | 7 +- .../terra/addons/ore/ores/OreHolder.java | 19 +- .../terra/addons/ore/ores/VanillaOre.java | 42 +- .../terra/addons/palette/PaletteAddon.java | 17 +- .../addons/palette/PaletteConfigType.java | 45 +- .../terra/addons/palette/PaletteFactory.java | 1 + .../terra/addons/palette/PaletteTemplate.java | 16 +- .../addons/palette/palette/NoisePalette.java | 9 +- .../addons/palette/palette/PaletteImpl.java | 46 +- .../palette/palette/PaletteLayerHolder.java | 12 +- .../palette/palette/PaletteLayerLoader.java | 22 +- .../addons/structure/BiomeStructures.java | 7 +- .../structure/BiomeStructuresTemplate.java | 10 +- .../addons/structure/StructureAddon.java | 11 +- .../addons/structure/StructureFactory.java | 1 + .../addons/structure/StructurePopulator.java | 22 +- .../addons/structure/StructureTemplate.java | 21 +- .../addons/structure/TerraStructure.java | 13 +- .../command/AsyncStructureFinder.java | 49 +- .../command/structure/StructureCommand.java | 1 + .../structure/StructureExportCommand.java | 45 +- .../structure/StructureLoadCommand.java | 57 +- .../structure/StructureLocateCommand.java | 62 +-- .../argument/ScriptArgumentParser.java | 3 +- .../argument/StructureArgumentParser.java | 3 +- .../completer/RotationCompleter.java | 5 +- .../structure/completer/ScriptCompleter.java | 10 +- .../completer/StructureCompleter.java | 7 +- .../structure/structures/loot/Entry.java | 30 +- .../structures/loot/LootTableImpl.java | 31 +- .../structure/structures/loot/Pool.java | 17 +- .../loot/functions/AmountFunction.java | 8 +- .../loot/functions/DamageFunction.java | 8 +- .../loot/functions/EnchantFunction.java | 23 +- .../loot/functions/LootFunction.java | 4 +- .../addons/generation/feature/ColumnImpl.java | 15 +- .../feature/FeatureGenerationAddon.java | 31 +- .../feature/FeatureGenerationStage.java | 16 +- .../feature/config/BiomeFeatures.java | 7 +- .../feature/config/BiomeFeaturesTemplate.java | 10 +- .../addons/generation/flora/BiomeFlora.java | 9 +- .../generation/flora/BiomeFloraTemplate.java | 8 +- .../flora/FloraGenerationAddon.java | 38 +- .../flora/FloraGenerationStage.java | 27 +- .../addons/generation/flora/FloraLayer.java | 40 +- .../generation/flora/FloraLayerLoader.java | 12 +- .../dfsek/terra/addons/yaml/YamlAddon.java | 18 +- .../structure-terrascript-loader/README.md | 4 +- .../addons/terrascript/TerraScriptAddon.java | 41 +- .../terra/addons/terrascript/buffer/Cell.java | 15 +- .../terrascript/buffer/DirectBuffer.java | 35 +- .../buffer/IntermediateBuffer.java | 31 +- .../terrascript/buffer/StructureBuffer.java | 54 +- .../buffer/items/BufferedBlock.java | 5 +- .../buffer/items/BufferedEntity.java | 7 +- .../buffer/items/BufferedLootApplication.java | 11 +- .../buffer/items/BufferedPulledBlock.java | 5 +- .../items/BufferedStateManipulator.java | 5 +- .../addons/terrascript/parser/Parser.java | 209 ++++---- .../addons/terrascript/parser/ParserUtil.java | 64 ++- .../parser/exceptions/ParseException.java | 9 +- .../addons/terrascript/parser/lang/Block.java | 46 +- .../addons/terrascript/parser/lang/Item.java | 5 +- .../terrascript/parser/lang/Returnable.java | 14 +- .../lang/constants/BooleanConstant.java | 3 +- .../lang/constants/ConstantExpression.java | 11 +- .../lang/constants/NumericConstant.java | 3 +- .../parser/lang/constants/StringConstant.java | 3 +- .../parser/lang/functions/Function.java | 7 +- .../lang/functions/FunctionBuilder.java | 7 +- .../lang/functions/def/FunctionBlock.java | 21 +- .../lang/keywords/flow/BreakKeyword.java | 11 +- .../lang/keywords/flow/ContinueKeyword.java | 11 +- .../lang/keywords/flow/FailKeyword.java | 11 +- .../lang/keywords/flow/ReturnKeyword.java | 11 +- .../lang/keywords/looplike/ForKeyword.java | 15 +- .../lang/keywords/looplike/IfKeyword.java | 29 +- .../lang/keywords/looplike/WhileKeyword.java | 11 +- .../lang/operations/BinaryOperation.java | 19 +- .../lang/operations/BooleanAndOperation.java | 5 +- .../lang/operations/BooleanNotOperation.java | 5 +- .../lang/operations/BooleanOrOperation.java | 5 +- .../operations/ConcatenationOperation.java | 5 +- .../lang/operations/DivisionOperation.java | 5 +- .../lang/operations/ModuloOperation.java | 5 +- .../operations/MultiplicationOperation.java | 5 +- .../lang/operations/NegationOperation.java | 5 +- .../operations/NumberAdditionOperation.java | 5 +- .../lang/operations/SubtractionOperation.java | 5 +- .../lang/operations/UnaryOperation.java | 11 +- .../statements/EqualsStatement.java | 14 +- .../GreaterOrEqualsThanStatement.java | 7 +- .../statements/GreaterThanStatement.java | 7 +- .../statements/LessThanOrEqualsStatement.java | 7 +- .../statements/LessThanStatement.java | 7 +- .../statements/NotEqualsStatement.java | 7 +- .../parser/lang/variables/Assignment.java | 9 +- .../lang/variables/BooleanVariable.java | 11 +- .../parser/lang/variables/Declaration.java | 13 +- .../parser/lang/variables/Getter.java | 11 +- .../parser/lang/variables/NumberVariable.java | 11 +- .../parser/lang/variables/StringVariable.java | 11 +- .../parser/lang/variables/Variable.java | 7 +- .../terrascript/script/StructureScript.java | 112 ++-- .../script/TerraImplementationArguments.java | 19 +- .../builders/BinaryNumberFunctionBuilder.java | 24 +- .../script/builders/BiomeFunctionBuilder.java | 14 +- .../script/builders/BlockFunctionBuilder.java | 19 +- .../builders/CheckBlockFunctionBuilder.java | 10 +- .../script/builders/CheckFunctionBuilder.java | 14 +- .../builders/EntityFunctionBuilder.java | 14 +- .../builders/GetMarkFunctionBuilder.java | 14 +- .../script/builders/LootFunctionBuilder.java | 14 +- .../script/builders/PullFunctionBuilder.java | 14 +- .../builders/RandomFunctionBuilder.java | 7 +- .../builders/RecursionsFunctionBuilder.java | 7 +- .../builders/SetMarkFunctionBuilder.java | 14 +- .../script/builders/StateFunctionBuilder.java | 14 +- .../builders/StructureFunctionBuilder.java | 21 +- .../builders/UnaryBooleanFunctionBuilder.java | 24 +- .../builders/UnaryNumberFunctionBuilder.java | 19 +- .../builders/UnaryStringFunctionBuilder.java | 19 +- .../builders/ZeroArgFunctionBuilder.java | 17 +- .../script/functions/BiomeFunction.java | 37 +- .../script/functions/BlockFunction.java | 62 ++- .../script/functions/CheckBlockFunction.java | 35 +- .../script/functions/CheckFunction.java | 66 +-- .../script/functions/EntityFunction.java | 26 +- .../script/functions/GetMarkFunction.java | 22 +- .../script/functions/LootFunction.java | 32 +- .../script/functions/PullFunction.java | 28 +- .../script/functions/RandomFunction.java | 16 +- .../script/functions/RecursionsFunction.java | 11 +- .../script/functions/SetMarkFunction.java | 28 +- .../script/functions/StateFunction.java | 26 +- .../script/functions/StructureFunction.java | 42 +- .../addons/terrascript/tokenizer/Char.java | 64 +-- .../terrascript/tokenizer/Lookahead.java | 114 ++-- .../terrascript/tokenizer/Position.java | 4 +- .../addons/terrascript/tokenizer/Token.java | 94 ++-- .../terrascript/tokenizer/Tokenizer.java | 117 +++-- .../tokenizer/exceptions/EOFException.java | 7 +- .../tokenizer/exceptions/FormatException.java | 7 +- .../exceptions/TokenizerException.java | 7 +- .../test/java/structure/LookaheadTest.java | 6 +- .../src/test/java/structure/ParserTest.java | 43 +- common/api/build.gradle.kts | 4 +- .../main/java/com/dfsek/terra/api/Logger.java | 6 +- .../java/com/dfsek/terra/api/TerraPlugin.java | 55 +- .../com/dfsek/terra/api/addon/TerraAddon.java | 22 +- .../terra/api/addon/annotations/Addon.java | 1 + .../terra/api/addon/annotations/Author.java | 1 + .../terra/api/addon/annotations/Depends.java | 1 + .../terra/api/addon/annotations/Version.java | 1 + .../com/dfsek/terra/api/block/BlockType.java | 5 +- .../terra/api/block/entity/BlockEntity.java | 23 +- .../terra/api/block/entity/Container.java | 1 + .../terra/api/block/entity/MobSpawner.java | 34 +- .../terra/api/block/entity/SerialState.java | 106 ++-- .../dfsek/terra/api/block/entity/Sign.java | 9 +- .../terra/api/block/state/BlockState.java | 41 +- .../api/block/state/properties/Property.java | 9 +- .../properties/base/BooleanProperty.java | 19 +- .../state/properties/base/EnumProperty.java | 27 +- .../state/properties/base/IntProperty.java | 21 +- .../state/properties/base/Properties.java | 15 +- .../block/state/properties/enums/Axis.java | 4 +- .../state/properties/enums/Direction.java | 41 +- .../block/state/properties/enums/Half.java | 2 +- .../properties/enums/RedstoneConnection.java | 4 +- .../state/properties/enums/WallHeight.java | 4 +- .../terra/api/command/CommandManager.java | 9 +- .../terra/api/command/CommandTemplate.java | 1 + .../api/command/annotation/Argument.java | 19 +- .../terra/api/command/annotation/Command.java | 13 +- .../api/command/annotation/Subcommand.java | 11 +- .../terra/api/command/annotation/Switch.java | 5 +- .../annotation/inject/ArgumentTarget.java | 1 + .../annotation/inject/SwitchTarget.java | 1 + .../command/annotation/type/DebugCommand.java | 1 + .../annotation/type/PlayerCommand.java | 1 + .../command/annotation/type/WorldCommand.java | 1 + .../terra/api/command/arg/ArgumentParser.java | 1 + .../api/command/arg/DoubleArgumentParser.java | 1 + .../command/arg/IntegerArgumentParser.java | 1 + .../api/command/arg/StringArgumentParser.java | 1 + .../command/exception/CommandException.java | 4 +- .../command/exception/ExecutionException.java | 4 +- .../exception/InvalidArgumentsException.java | 4 +- .../exception/MalformedCommandException.java | 4 +- .../exception/SwitchFormatException.java | 4 +- .../api/command/tab/NothingCompleter.java | 5 +- .../terra/api/command/tab/TabCompleter.java | 3 +- .../api/config/AbstractableTemplate.java | 2 + .../dfsek/terra/api/config/ConfigFactory.java | 2 + .../dfsek/terra/api/config/ConfigPack.java | 64 +-- .../dfsek/terra/api/config/ConfigType.java | 15 +- .../com/dfsek/terra/api/config/Loader.java | 12 +- .../dfsek/terra/api/config/PluginConfig.java | 55 +- .../dfsek/terra/api/config/WorldConfig.java | 41 +- .../com/dfsek/terra/api/config/meta/Meta.java | 1 + .../dfsek/terra/api/entity/CommandSender.java | 1 + .../com/dfsek/terra/api/entity/Entity.java | 10 +- .../dfsek/terra/api/entity/EntityType.java | 1 + .../dfsek/terra/api/event/EventHandler.java | 1 + .../dfsek/terra/api/event/EventManager.java | 7 +- .../api/event/events/AbstractCancellable.java | 5 +- .../terra/api/event/events/Cancellable.java | 2 +- .../terra/api/event/events/PackEvent.java | 1 + .../config/ConfigurationDiscoveryEvent.java | 21 +- .../events/config/ConfigurationLoadEvent.java | 49 +- .../config/pack/ConfigPackLoadEvent.java | 18 +- .../config/pack/ConfigPackPostLoadEvent.java | 2 + .../config/pack/ConfigPackPreLoadEvent.java | 2 + .../config/type/ConfigTypeLoadEvent.java | 21 +- .../config/type/ConfigTypePostLoadEvent.java | 1 + .../config/type/ConfigTypePreLoadEvent.java | 1 + .../platform/PlatformInitializationEvent.java | 1 + .../world/generation/EntitySpawnEvent.java | 7 +- .../world/generation/LootPopulateEvent.java | 21 +- .../api/event/functional/EventContext.java | 12 +- .../functional/FunctionalEventHandler.java | 3 +- .../dfsek/terra/api/handle/ItemHandle.java | 9 +- .../dfsek/terra/api/handle/WorldHandle.java | 12 +- .../dfsek/terra/api/injection/Injector.java | 4 +- .../api/injection/annotations/Inject.java | 1 + .../exception/InjectionException.java | 5 +- .../api/inventory/BlockInventoryHolder.java | 1 + .../dfsek/terra/api/inventory/Inventory.java | 9 +- .../terra/api/inventory/InventoryHolder.java | 1 + .../com/dfsek/terra/api/inventory/Item.java | 3 +- .../dfsek/terra/api/inventory/ItemStack.java | 11 +- .../terra/api/inventory/item/Damageable.java | 5 +- .../terra/api/inventory/item/Enchantment.java | 9 +- .../terra/api/inventory/item/ItemMeta.java | 9 +- .../com/dfsek/terra/api/lang/Language.java | 13 +- .../com/dfsek/terra/api/lang/Message.java | 9 +- .../dfsek/terra/api/noise/NoiseSampler.java | 11 +- .../terra/api/profiler/ProfileFrame.java | 4 +- .../dfsek/terra/api/profiler/Profiler.java | 28 +- .../com/dfsek/terra/api/profiler/Timings.java | 47 +- .../dfsek/terra/api/properties/Context.java | 8 +- .../api/properties/annotations/Linked.java | 5 +- .../terra/api/registry/CheckedRegistry.java | 5 +- .../terra/api/registry/OpenRegistry.java | 6 +- .../dfsek/terra/api/registry/Registry.java | 13 +- .../exception/DuplicateEntryException.java | 4 +- .../api/registry/meta/RegistryFactory.java | 8 +- .../api/registry/meta/RegistryHolder.java | 13 +- .../dfsek/terra/api/structure/LootTable.java | 24 +- .../dfsek/terra/api/structure/Structure.java | 7 +- .../terra/api/structure/StructureSpawn.java | 2 + .../terra/api/structure/buffer/Buffer.java | 15 +- .../api/structure/buffer/BufferedItem.java | 1 + .../configured/ConfiguredStructure.java | 5 +- .../api/structure/feature/BinaryColumn.java | 23 +- .../api/structure/feature/Distributor.java | 4 +- .../terra/api/structure/feature/Feature.java | 5 +- .../terra/api/structure/feature/Locator.java | 7 +- .../api/structure/rotation/Rotation.java | 30 +- .../terra/api/tectonic/LoaderHolder.java | 7 +- .../terra/api/tectonic/LoaderRegistrar.java | 1 + .../dfsek/terra/api/transform/Transform.java | 1 + .../terra/api/transform/Transformer.java | 1 + .../dfsek/terra/api/transform/Validator.java | 5 +- .../exception/AttemptsFailedException.java | 5 +- .../exception/TransformException.java | 8 +- .../dfsek/terra/api/util/ConstantRange.java | 106 ++-- .../com/dfsek/terra/api/util/MathUtil.java | 106 ++-- .../dfsek/terra/api/util/PopulationUtil.java | 8 +- .../java/com/dfsek/terra/api/util/Range.java | 37 +- .../dfsek/terra/api/util/RotationUtil.java | 63 ++- .../api/util/collection/MaterialSet.java | 17 +- .../collection/ProbabilityCollection.java | 124 ++--- .../terra/api/util/generic/Construct.java | 1 + .../dfsek/terra/api/util/generic/Lazy.java | 9 +- .../terra/api/util/generic/either/Either.java | 49 +- .../api/util/generic/pair/ImmutablePair.java | 41 +- .../terra/api/util/generic/pair/Pair.java | 55 +- .../api/util/mutable/MutableBoolean.java | 13 +- .../terra/api/util/mutable/MutableDouble.java | 17 +- .../api/util/mutable/MutableInteger.java | 19 +- .../terra/api/util/mutable/MutableNumber.java | 28 +- .../api/util/mutable/MutablePrimitive.java | 2 +- .../terra/api/util/mutable/package-info.java | 1 + .../api/util/reflection/ReflectionUtil.java | 26 +- .../terra/api/util/reflection/TypeKey.java | 134 ++--- .../com/dfsek/terra/api/vector/Vector2.java | 141 ++--- .../com/dfsek/terra/api/vector/Vector3.java | 196 +++---- .../com/dfsek/terra/api/world/BiomeGrid.java | 50 +- .../java/com/dfsek/terra/api/world/Chunk.java | 19 +- .../dfsek/terra/api/world/ChunkAccess.java | 7 +- .../com/dfsek/terra/api/world/Column.java | 11 +- .../java/com/dfsek/terra/api/world/Flora.java | 7 +- .../java/com/dfsek/terra/api/world/Tree.java | 9 +- .../java/com/dfsek/terra/api/world/World.java | 55 +- .../dfsek/terra/api/world/biome/Biome.java | 1 + .../api/world/biome/GenerationSettings.java | 15 +- .../api/world/biome/PaletteSettings.java | 1 + .../terra/api/world/biome/TerraBiome.java | 13 +- .../world/biome/generation/BiomeProvider.java | 5 +- .../terra/api/world/generator/ChunkData.java | 1 + .../api/world/generator/ChunkGenerator.java | 26 +- .../generator/ChunkGeneratorProvider.java | 1 + .../world/generator/ChunkInterpolator.java | 37 +- .../api/world/generator/GenerationStage.java | 1 + .../generator/GenerationStageProvider.java | 1 + .../api/world/generator/GeneratorWrapper.java | 1 + .../terra/api/world/generator/Palette.java | 8 +- .../terra/api/world/generator/Sampler.java | 6 +- .../api/world/generator/SamplerCache.java | 6 +- common/implementation/build.gradle.kts | 6 +- .../com/dfsek/terra/AbstractTerraPlugin.java | 202 +++---- .../java/com/dfsek/terra/InternalAddon.java | 22 +- .../dfsek/terra/commands/AddonsCommand.java | 6 +- .../com/dfsek/terra/commands/CommandUtil.java | 3 +- .../dfsek/terra/commands/ExecutionState.java | 17 +- .../dfsek/terra/commands/GetBlockCommand.java | 3 +- .../dfsek/terra/commands/PacksCommand.java | 7 +- .../dfsek/terra/commands/ReloadCommand.java | 3 +- .../terra/commands/TerraCommandManager.java | 174 +++--- .../dfsek/terra/commands/VersionCommand.java | 3 +- .../commands/profiler/ProfileCommand.java | 9 +- .../profiler/ProfileQueryCommand.java | 3 +- .../profiler/ProfileResetCommand.java | 3 +- .../profiler/ProfileStartCommand.java | 3 +- .../commands/profiler/ProfileStopCommand.java | 3 +- .../dfsek/terra/config/GenericLoaders.java | 13 +- .../dfsek/terra/config/PluginConfigImpl.java | 176 +++---- .../dfsek/terra/config/dummy/DummyWorld.java | 79 +-- .../config/fileloaders/FolderLoader.java | 7 +- .../terra/config/fileloaders/LoaderImpl.java | 16 +- .../terra/config/fileloaders/ZIPLoader.java | 7 +- .../com/dfsek/terra/config/lang/LangUtil.java | 11 +- .../dfsek/terra/config/lang/LanguageImpl.java | 32 +- .../terra/config/lang/MultiLineMessage.java | 15 +- .../terra/config/lang/SingleLineMessage.java | 15 +- .../GenericTemplateSupplierLoader.java | 9 +- .../config/loaders/LinkedHashMapLoader.java | 5 +- .../config/loaders/MaterialSetLoader.java | 11 +- .../loaders/ProbabilityCollectionLoader.java | 14 +- .../terra/config/loaders/RangeLoader.java | 9 +- .../loaders/config/BufferedImageLoader.java | 9 +- .../loaders/config/GridSpawnLoader.java | 7 +- .../config/pack/ConfigPackAddonsTemplate.java | 10 +- .../terra/config/pack/ConfigPackImpl.java | 495 +++++++++--------- .../config/pack/ConfigPackPostTemplate.java | 4 +- .../terra/config/pack/ConfigPackTemplate.java | 139 ++--- .../terra/config/pack/WorldConfigImpl.java | 109 ++-- .../MetaListLikePreprocessor.java | 30 +- .../preprocessor/MetaMapPreprocessor.java | 30 +- .../preprocessor/MetaNumberPreprocessor.java | 33 +- .../config/preprocessor/MetaPreprocessor.java | 13 +- .../preprocessor/MetaStringPreprocessor.java | 14 +- .../preprocessor/MetaValuePreprocessor.java | 8 +- .../terra/config/prototype/ProtoConfig.java | 10 +- .../dfsek/terra/event/EventContextImpl.java | 46 +- .../dfsek/terra/event/EventManagerImpl.java | 13 +- .../event/FunctionalEventHandlerImpl.java | 34 +- .../com/dfsek/terra/inject/InjectorImpl.java | 20 +- .../java/com/dfsek/terra/math/GridSpawn.java | 18 +- .../java/com/dfsek/terra/profiler/Frame.java | 20 +- .../dfsek/terra/profiler/ProfilerImpl.java | 45 +- .../exception/MalformedStackException.java | 6 +- .../profiler/exception/ProfilerException.java | 6 +- .../terra/registry/CheckedRegistryImpl.java | 29 +- .../terra/registry/LockedRegistryImpl.java | 21 +- .../terra/registry/OpenRegistryImpl.java | 82 +-- .../terra/registry/RegistryFactoryImpl.java | 10 +- .../registry/config/ConfigTypeRegistry.java | 14 +- .../terra/registry/master/AddonRegistry.java | 52 +- .../terra/registry/master/ConfigRegistry.java | 12 +- .../dfsek/terra/transform/MapTransform.java | 17 +- .../terra/transform/TransformerImpl.java | 21 +- .../java/com/dfsek/terra/util/FastRandom.java | 55 +- .../dfsek/terra/util/logging/DebugLogger.java | 27 +- .../dfsek/terra/util/logging/JavaLogger.java | 9 +- .../dfsek/terra/world/SamplerCacheImpl.java | 45 +- .../src/test/java/MetaTest.java | 100 ++-- .../src/test/java/command/CommandTest.java | 118 +++-- .../test/java/noise/ColorConfigTemplate.java | 14 +- .../test/java/noise/NoiseConfigTemplate.java | 3 +- .../src/test/java/profiler/ProfilerTest.java | 17 +- .../dfsek/terra/addon/AddonClassLoader.java | 33 +- .../java/com/dfsek/terra/addon/AddonPool.java | 29 +- .../com/dfsek/terra/addon/PreLoadAddon.java | 37 +- .../addon/exception/AddonLoadException.java | 4 +- .../CircularDependencyException.java | 4 +- .../exception/DependencyMissingException.java | 4 +- platforms/bukkit/build.gradle.kts | 44 +- .../com/dfsek/terra/bukkit/BukkitAddon.java | 7 +- .../terra/bukkit/BukkitCommandSender.java | 10 +- .../com/dfsek/terra/bukkit/BukkitEntity.java | 18 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 18 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 103 ++-- .../dfsek/terra/bukkit/TerraPluginImpl.java | 88 ++-- .../bukkit/command/BukkitCommandAdapter.java | 22 +- .../terra/bukkit/command/FixChunkCommand.java | 1 + .../terra/bukkit/command/SaveDataCommand.java | 1 + .../bukkit/generator/BukkitChunkData.java | 22 +- .../BukkitChunkGeneratorWrapper.java | 67 +-- .../generator/BukkitPopulatorWrapper.java | 12 +- .../bukkit/handles/BukkitItemHandle.java | 21 +- .../bukkit/handles/BukkitWorldHandle.java | 29 +- .../bukkit/listeners/CommonListener.java | 36 +- .../terra/bukkit/listeners/PaperListener.java | 11 +- .../bukkit/listeners/SpigotListener.java | 18 +- .../bukkit/population/ChunkCoordinate.java | 19 +- .../bukkit/population/PopulationManager.java | 41 +- .../bukkit/population/SerializationUtil.java | 34 +- .../structure/WorldEditNotFoundException.java | 10 +- .../terra/bukkit/structure/WorldEditUtil.java | 10 +- .../dfsek/terra/bukkit/util/PaperUtil.java | 1 + .../terra/bukkit/world/BukkitAdapter.java | 86 +-- .../dfsek/terra/bukkit/world/BukkitBiome.java | 5 +- .../terra/bukkit/world/BukkitBiomeGrid.java | 34 +- .../dfsek/terra/bukkit/world/BukkitChunk.java | 60 ++- .../dfsek/terra/bukkit/world/BukkitTree.java | 20 +- .../dfsek/terra/bukkit/world/BukkitWorld.java | 94 ++-- .../world/block/BukkitBlockTypeAndItem.java | 22 +- .../world/block/data/BukkitBlockState.java | 86 +-- .../world/block/state/BukkitBlockEntity.java | 66 +-- .../world/block/state/BukkitContainer.java | 7 +- .../world/block/state/BukkitMobSpawner.java | 40 +- .../bukkit/world/block/state/BukkitSign.java | 28 +- .../bukkit/world/entity/BukkitEntityType.java | 5 +- .../world/inventory/BukkitInventory.java | 19 +- .../world/inventory/BukkitItemMeta.java | 26 +- .../world/inventory/BukkitItemStack.java | 15 +- .../inventory/meta/BukkitDamageable.java | 10 +- .../inventory/meta/BukkitEnchantment.java | 21 +- platforms/fabric/build.gradle.kts | 4 +- .../com/dfsek/terra/fabric/FabricAddon.java | 136 ++--- .../dfsek/terra/fabric/FabricEntryPoint.java | 30 +- .../dfsek/terra/fabric/TerraPluginImpl.java | 109 ++-- .../terra/fabric/block/FabricBlockState.java | 178 ++++--- .../config/PostLoadCompatibilityOptions.java | 10 +- .../config/PreLoadCompatibilityOptions.java | 19 +- .../fabric/event/BiomeRegistrationEvent.java | 8 +- .../FabricChunkGeneratorWrapper.java | 209 ++++---- .../fabric/generation/PopulatorFeature.java | 10 +- .../fabric/generation/TerraBiomeSource.java | 46 +- .../fabric/generation/TerraGeneratorType.java | 20 +- .../terra/fabric/handle/FabricItemHandle.java | 14 +- .../fabric/handle/FabricWorldHandle.java | 48 +- .../fabric/mixin/CommandManagerMixin.java | 28 +- .../terra/fabric/mixin/ServerWorldMixin.java | 13 +- .../mixin/StructureAccessorAccessor.java | 1 + .../mixin/access/BiomeEffectsAccessor.java | 13 +- .../mixin/access/GeneratorTypeAccessor.java | 3 +- .../mixin/access/MobSpawnerLogicAccessor.java | 1 + .../fabric/mixin/access/StateAccessor.java | 1 + .../mixin/implementations/BiomeMixin.java | 1 + .../ConfiguredFeatureMixin.java | 26 +- .../block/BlockEntityMixin.java | 48 +- .../implementations/block/BlockMixin.java | 16 +- .../LootableContainerBlockEntityMixin.java | 10 +- .../state/MobSpawnerBlockEntityMixin.java | 62 +-- .../block/state/SignBlockEntityMixin.java | 22 +- .../chunk/ChunkRegionMixin.java | 36 +- .../chunk/WorldChunkMixin.java | 52 +- .../chunk/data/ProtoChunkMixin.java | 22 +- .../implementations/entity/EntityMixin.java | 24 +- .../entity/EntityTypeMixin.java | 1 + .../entity/PlayerEntityMixin.java | 4 +- .../entity/ServerCommandSourceMixin.java | 8 +- .../LockableContainerBlockEntityMixin.java | 20 +- .../inventory/item/ItemMixin.java | 10 +- .../inventory/item/ItemStackMixin.java | 36 +- .../inventory/meta/EnchantmentMixin.java | 20 +- .../meta/ItemStackDamageableMixin.java | 28 +- .../inventory/meta/ItemStackMetaMixin.java | 24 +- .../mixin/implementations/package-info.java | 1 + .../world/ChunkRegionMixin.java | 131 ++--- .../world/ServerWorldMixin.java | 129 +++-- .../client/MinecraftClientMixin.java | 17 +- .../fabric/mixin/lifecycle/package-info.java | 1 + .../server/GeneratorOptionsMixin.java | 50 +- .../lifecycle/server/ServerMainMixin.java | 14 +- .../terra/fabric/util/FabricAdapter.java | 46 +- .../dfsek/terra/fabric/util/FabricUtil.java | 61 ++- .../dfsek/terra/fabric/util/ProtoBiome.java | 10 +- .../terra/fabric/util/WorldEditUtil.java | 12 +- .../resources/assets/terra/lang/en_us.json | 2 +- .../fabric/src/main/resources/fabric.mod.json | 58 +- .../src/main/resources/terra.mixins.json | 92 ++-- .../com/dfsek/terra/forge/ForgeAdapter.java | 26 +- .../java/com/dfsek/terra/forge/ForgeUtil.java | 43 +- .../dfsek/terra/forge/TerraForgePlugin.java | 253 ++++----- .../dfsek/terra/forge/block/ForgeBlock.java | 36 +- .../terra/forge/block/ForgeBlockData.java | 59 ++- .../block/data/ForgeAnaloguePowerable.java | 10 +- .../forge/block/data/ForgeDirectional.java | 8 +- .../forge/block/data/ForgeEnumAdapter.java | 20 +- .../forge/block/data/ForgeMultipleFacing.java | 32 +- .../forge/block/data/ForgeOrientable.java | 10 +- .../forge/block/data/ForgeRotatable.java | 6 +- .../terra/forge/block/data/ForgeSlab.java | 6 +- .../terra/forge/block/data/ForgeStairs.java | 14 +- .../forge/block/data/ForgeWaterlogged.java | 6 +- .../config/PostLoadCompatibilityOptions.java | 9 +- .../config/PreLoadCompatibilityOptions.java | 19 +- .../ForgeChunkGeneratorWrapper.java | 154 +++--- .../forge/generation/PopulatorFeature.java | 9 +- .../forge/generation/TerraBiomeSource.java | 28 +- .../forge/generation/TerraGeneratorType.java | 9 +- .../terra/forge/handle/ForgeItemHandle.java | 8 +- .../terra/forge/handle/ForgeWorldHandle.java | 6 +- .../terra/forge/listener/ForgeListener.java | 20 +- .../forge/listener/RegistryListener.java | 2 + .../DimensionGeneratorSettingsMixin.java | 33 +- .../terra/forge/mixin/ServerWorldMixin.java | 15 +- .../mixin/access/AbstractSpawnerAccessor.java | 1 + .../BiomeGeneratorTypeScreensAccessor.java | 3 +- .../mixin/implementations/BiomeMixin.java | 1 + .../implementations/ChunkGeneratorMixin.java | 1 + .../ConfiguredFeatureMixin.java | 14 +- .../implementations/block/BlockMixin.java | 10 +- .../block/TileEntityMixin.java | 26 +- .../state/LockableLootTileEntityMixin.java | 4 +- .../state/MobSpawnerTileEntityMixin.java | 54 +- .../block/state/SignTileEntityMixin.java | 18 +- .../implementations/chunk/ChunkMixin.java | 18 +- .../chunk/WorldGenRegionMixin.java | 21 +- .../chunk/data/ChunkPrimerMixin.java | 14 +- .../entity/CommandSourceMixin.java | 6 +- .../implementations/entity/EntityMixin.java | 20 +- .../entity/EntityTypeMixin.java | 1 + .../entity/PlayerEntityMixin.java | 2 + .../inventory/LockableTileEntityMixin.java | 8 +- .../inventory/item/ItemMixin.java | 12 +- .../inventory/item/ItemStackMixin.java | 45 +- .../inventory/meta/EnchantmentMixin.java | 18 +- .../meta/ItemStackDamageableMixin.java | 24 +- .../inventory/meta/ItemStackMetaMixin.java | 22 +- .../mixin/implementations/package-info.java | 1 + .../world/ServerWorldMixin.java | 30 +- .../world/WorldGenRegionMixin.java | 33 +- .../mixin/init/MinecraftClientMixin.java | 13 +- .../mixin/init/MinecraftServerMixin.java | 10 +- .../src/main/resources/terra.mixins.json | 86 +-- platforms/merged/build.gradle.kts | 12 +- .../java/com/dfsek/terra/DirectUtils.java | 5 +- .../java/com/dfsek/terra/RegionGenerator.java | 5 +- .../com/dfsek/terra/StandalonePlugin.java | 46 +- .../terra/platform/DirectBlockEntity.java | 13 +- .../dfsek/terra/platform/DirectChunkData.java | 25 +- .../com/dfsek/terra/platform/DirectWorld.java | 30 +- .../com/dfsek/terra/platform/RawBiome.java | 5 +- .../com/dfsek/terra/platform/RawTree.java | 3 +- .../dfsek/terra/platform/RawWorldHandle.java | 7 +- .../java/com/dfsek/terra/platform/State.java | 42 +- .../com/dfsek/terra/region/Generator.java | 34 +- .../dfsek/terra/sponge/SpongeListener.java | 8 +- .../dfsek/terra/sponge/TerraPluginImpl.java | 48 +- .../dfsek/terra/sponge/TerraSpongePlugin.java | 6 +- .../terra/sponge/block/SpongeBlockState.java | 66 +-- .../terra/sponge/block/SpongeBlockType.java | 16 +- .../sponge/handle/SpongeWorldHandle.java | 22 +- .../src/main/resources/META-INF/plugins.json | 40 +- settings.gradle.kts | 4 +- 753 files changed, 10461 insertions(+), 8783 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b2d97634b..a7f6f8ba9 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,32 +2,41 @@ # TL;DR -Polyhedral Development is dedicated to providing a harassment-free experience for everyone, regardless of gender, gender identity and -expression, preferred pronouns, sexual orientation, disability, physical appearance, age, race, religion, etc. We do not tolerate harassment -of participants in any form. +Polyhedral Development is dedicated to providing a harassment-free experience +for everyone, regardless of gender, gender identity and expression, preferred +pronouns, sexual orientation, disability, physical appearance, age, race, +religion, etc. We do not tolerate harassment of participants in any form. -This code of conduct applies to all Terra community spaces, including the github discussions tab, our -[community discord server](https://discord.gg/PXUEbbF), the [community subreddit](https://reddit.com/r/TerraGenerator), or any other Terra -space, both online and off. Anyone in violation of this code, as determined by the applicable moderators, may be subject to verbal warning, -expulsion from these spaces, or future events and activities for an undetermined amount of time. +This code of conduct applies to all Terra community spaces, including the github +discussions tab, our [community discord server](https://discord.gg/PXUEbbF), +the [community subreddit](https://reddit.com/r/TerraGenerator), or any other +Terra space, both online and off. Anyone in violation of this code, as +determined by the applicable moderators, may be subject to verbal warning, +expulsion from these spaces, or future events and activities for an undetermined +amount of time. -Some Terra community spaces may have additional rules in place, which will be made clearly available to all participants. Participants are -responsible for knowing and abiding by these rules. +Some Terra community spaces may have additional rules in place, which will be +made clearly available to all participants. Participants are responsible for +knowing and abiding by these rules. # Longer version -Polyhedral Development is dedicated to providing a harassment-free experience for everyone. We do not tolerate harassment of participants in -any form. +Polyhedral Development is dedicated to providing a harassment-free experience +for everyone. We do not tolerate harassment of participants in any form. ## When and How to Use These Guidelines -This code of conduct applies to all Terra community spaces, both online and off. This applies to the github discussion tab, -the [Polyhedral Development community discord server](https://discord.gg/PXUEbbF), and any other Terra community. In addition, we may choose -to invoke them in instances of harassment outside the Terra communities, and we will punish the responsible individuals appropriately. We -will not tolerate harassment in any form, even outside of Terra. +This code of conduct applies to all Terra community spaces, both online and off. +This applies to the github discussion tab, the +[Polyhedral Development community discord server](https://discord.gg/PXUEbbF), +and any other Terra community. In addition, we may choose to invoke them in +instances of harassment outside the Terra communities, and we will punish the +responsible individuals appropriately. We will not tolerate harassment in any +form, even outside of Terra. -Some Terra spaces may have additional rules in place, which will be made clearly available to participants. Participants are responsible for -knowing and abiding by these rules, in addition to this code of conduct. +Some Terra spaces may have additional rules in place, which will be made clearly +available to participants. Participants are responsible for knowing and abiding +by these rules, in addition to this code of conduct. ## Expected Behavior @@ -35,33 +44,43 @@ The following behaviors are expected of all members of the Terra community: ### Be Respectful -Value each other's ideas, styles and viewpoints. We may not always agree, but disagreement is no excuse for poor manners. Be open to -different possibilities and to being wrong. Be respectful in all interactions and communications, especially when debating the merits of -different options. Be aware of your impact and how intense interactions may be affecting people. Be direct, constructive and positive. Take -responsibility for your impact, and your mistakes – if someone says they have been harmed through your words or actions, listen carefully, -apologize sincerely, and correct the behavior going forward. +Value each other's ideas, styles and viewpoints. We may not always agree, but +disagreement is no excuse for poor manners. Be open to different possibilities +and to being wrong. Be respectful in all interactions and communications, +especially when debating the merits of different options. Be aware of your +impact and how intense interactions may be affecting people. Be direct, +constructive and positive. Take responsibility for your impact, and your +mistakes – if someone says they have been harmed through your words or actions, +listen carefully, apologize sincerely, and correct the behavior going forward. #### Be Prepared to Admit When You are Wrong -Any member of the Terra community should always be open to new ideas and must always be open to the possibility of being wrong. Nobody can -always be right, and we are only human; we are [fallible](https://www.merriam-webster.com/dictionary/fallible) by nature. It is okay to make -mistakes, but we must be willing to admit when we make one. +Any member of the Terra community should always be open to new ideas and must +always be open to the possibility of being wrong. Nobody can always be right, +and we are only human; we are +[fallible](https://www.merriam-webster.com/dictionary/fallible) by nature. +It is okay to make mistakes, but we must be willing to admit when we make one. ### Be Direct but Professional -We are likely to have some discussions about if and when criticism is respectful and when it's not. We must be able to speak directly when -we disagree and when we think we need to improve. We cannot withhold hard truths. Doing so respectfully is hard, doing so when others don't -seem to be listening is harder, and hearing such comments when one is the recipient can be even harder still. We need to be honest and -direct, as well as respectful. +We are likely to have some discussions about if and when criticism is respectful +and when it's not. We must be able to speak directly when we disagree and when +we think we need to improve. We cannot withhold hard truths. Doing so +respectfully is hard, doing so when others don't seem to be listening is harder, +and hearing such comments when one is the recipient can be even harder still. We +need to be honest and direct, as well as respectful. ### Be Inclusive -Seek diverse perspectives. Diversity of views and of people on teams powers innovation, even if it is not always comfortable. Encourage all -voices. Help new perspectives be heard and listen actively. If you find yourself dominating a discussion, it is especially important to step -back and encourage other voices to join in. Be aware of how much time is taken up by dominant members of the group. Provide alternative ways -to contribute or participate when possible. +Seek diverse perspectives. Diversity of views and of people on teams powers +innovation, even if it is not always comfortable. Encourage all voices. Help new +perspectives be heard and listen actively. If you find yourself dominating a +discussion, it is especially important to step back and encourage other voices +to join in. Be aware of how much time is taken up by dominant members of the +group. Provide alternative ways to contribute or participate when possible. -Be inclusive of everyone in an interaction, respecting and facilitating people's participation whether they are: +Be inclusive of everyone in an interaction, respecting and facilitating people's +participation whether they are: - Not native language speakers - Coming from a different culture @@ -70,47 +89,60 @@ Be inclusive of everyone in an interaction, respecting and facilitating people's - Facing other challenges to participate - Or anything else. Be respectful of *everyone* at *all times*. -Think about how you might facilitate alternative ways to contribute or participate. If you find yourself dominating a discussion, step back. -Make way for other voices and listen actively to them. +Think about how you might facilitate alternative ways to contribute or +participate. If you find yourself dominating a discussion, step back. Make way +for other voices and listen actively to them. ### Understand Different Perspectives -Our goal should not be to "win" every disagreement or argument. A more productive goal is to be open to ideas that make our own ideas -better. Strive to be an example for inclusive thinking. "Winning" is when different perspectives make our work richer and stronger. That -means, you must pay attention to all ideas proposed. Don't disregard one without giving it the attention it deserves. +Our goal should not be to "win" every disagreement or argument. A more +productive goal is to be open to ideas that make our own ideas better. Strive to +be an example for inclusive thinking. "Winning" is when different perspectives +make our work richer and stronger. That means, you must pay attention to all +ideas proposed. Don't disregard one without giving it the attention it deserves. ### Appreciate and Accommodate Our Similarities and Differences -People come from many cultures and backgrounds. Cultural differences can encompass everything from official religious observances to -personal habits to clothing. Be respectful of anyone with different cultural practices, attitudes and beliefs. Work to eliminate your own -biases, prejudices and discriminatory practices. Think of others' needs from their point of view. Use preferred titles (including -pronouns[\[1\]](#1)) and the appropriate tone of voice. Respect people's right to privacy and confidentiality. Be open to -learning from and educating others as well as educating yourself; it is unrealistic to expect someone to know the cultural practices of -every ethnic and cultural group. Therefore we must be ready to correct someone if they make a mistake, and must be ready ourselves to change -and learn if we make a mistake. +People come from many cultures and backgrounds. Cultural differences can +encompass everything from official religious observances to personal habits to +clothing. Be respectful of anyone with different cultural practices, attitudes +and beliefs. Work to eliminate your own biases, prejudices and discriminatory +practices. Think of others' needs from their point of view. Use preferred +titles (including pronouns[\[1\]](#1)) and the appropriate tone of +voice. Respect people's right to privacy and confidentiality. Be open to +learning from and educating others as well as educating yourself; it is +unrealistic to expect someone to know the cultural practices of every ethnic and +cultural group. Therefore we must be ready to correct someone if they make a +mistake, and must be ready ourselves to change and learn if we make a mistake. ### Lead by Example -By matching your actions with your words, you become a person others want to follow. Your actions influence others to behave and respond in -ways that are valuable and appropriate for our organizational outcomes. Design your community and your work for inclusion. Hold yourself and -others accountable for inclusive behaviors. +By matching your actions with your words, you become a person others want to +follow. Your actions influence others to behave and respond in ways that are +valuable and appropriate for our organizational outcomes. Design your community +and your work for inclusion. Hold yourself and others accountable for inclusive +behaviors. ## Behavior That Will Not Be Tolerated -The following behaviors are considered to be unacceptable and will not be tolerated: +The following behaviors are considered to be unacceptable and will not be +tolerated: ### Violence and Threats of Violence -Violence and threats of violence are not acceptable - online or offline. This includes incitement of violence toward any individual, -including encouraging a person to commit self-harm, engage in self-harm, or put themselves in a negative position (e.g. one which can lead -to an increase of depression, etc.). +Violence and threats of violence are not acceptable - online or offline. This +includes incitement of violence toward any individual, including encouraging a +person to commit self-harm, engage in self-harm, or put themselves in a negative +position (e.g. one which can lead to an increase of depression, etc.). ### Personal Attacks -Conflicts will inevitably arise, but frustration should never turn into a personal attack. It is not okay to insult, demean or belittle -others. Attacking someone for their opinions, beliefs and ideas is not acceptable. It is important to speak directly when we disagree and -when we think we need to improve, but such discussions must be conducted respectfully and professionally, remaining focused on the issue at -hand. +Conflicts will inevitably arise, but frustration should never turn into a +personal attack. It is not okay to insult, demean or belittle others. Attacking +someone for their opinions, beliefs and ideas is not acceptable. It is important +to speak directly when we disagree and when we think we need to improve, but +such discussions must be conducted respectfully and professionally, remaining +focused on the issue at hand. ### Derogatory Language @@ -135,30 +167,40 @@ Offensive, unwelcome, or hurtful comments related to: - Socioeconomic status - Religion - Employment -- Or anything really. Just don't be offensive towards people, insult them, or make unwanted comments. +- Or anything really. Just don't be offensive towards people, insult them, or + make unwanted comments. -is not acceptable. This includes deliberately referring to someone by a gender that they do not identify with, and/or questioning the -legitimacy of an individual's gender identity. If you're unsure if a word is derogatory, don't use it. This also includes repeated subtle -and/or indirect discrimination; when asked to stop, stop the behavior in question. +is not acceptable. This includes deliberately referring to someone by a gender +that they do not identify with, and/or questioning the legitimacy of an +individual's gender identity. If you're unsure if a word is derogatory, don't +use it. This also includes repeated subtle and/or indirect discrimination; when +asked to stop, stop the behavior in question. ### Unwelcome Sexual Attention or Physical Contact -Unwelcome sexual attention or unwelcome physical contact is not acceptable. This includes sexualized comments, jokes or imagery in -interactions, communications or presentation materials, as well as inappropriate touching, groping, or sexual advances. Additionally, -touching a person without permission, including sensitive areas such as their hair, pregnant stomach, mobility device (wheelchair, scooter, -etc) or tattoos is unacceptable. This includes physically blocking or intimidating another person. Physical contact or simulated physical -contact (e.g. emojis like ":​kiss:", ":hug:", or ":kiss_mark:", textual descriptions like "\*hug\*", "\*backrub\*", or "\*kisses -you\*", etc.) without affirmative consent or after a request to stop will not be accepted. +Unwelcome sexual attention or unwelcome physical contact is not acceptable. This +includes sexualized comments, jokes or imagery in interactions, communications +or presentation materials, as well as inappropriate touching, groping, or sexual +advances. Additionally, touching a person without permission, including +sensitive areas such as their hair, pregnant stomach, mobility device ( +wheelchair, scooter, etc) or tattoos is unacceptable. This includes physically +blocking or intimidating another person. Physical contact or simulated physical +contact (e.g. emojis like ":​kiss:", ":hug:", or ":kiss_mark:", textual +descriptions like "\*hug\*", "\*backrub\*", or "\*kisses you\*", etc.) without +affirmative consent or after a request to stop will not be accepted. ### Sexual Behaviour Where it is Not Appropriate -Uninvited or off-topic sexual images, text, or behaviour in spaces where they're not appropriate will not be accepted whatsoever. We are an -open community, which means spaces must be appropriate for all ages, and everybody must feel comfortable. Discussion of sexual things, will -be prohibited unless otherwise noted. +Uninvited or off-topic sexual images, text, or behaviour in spaces where they're +not appropriate will not be accepted whatsoever. We are an open community, which +means spaces must be appropriate for all ages, and everybody must feel +comfortable. Discussion of sexual things, will be prohibited unless otherwise +noted. ### Discussion of Sensitive Topics -Discussion of sensitive topics when asked to stop, or when not appropriate. Including, but not limited to: +Discussion of sensitive topics when asked to stop, or when not appropriate. +Including, but not limited to: - Anything sexual - Gore @@ -167,171 +209,241 @@ Discussion of sensitive topics when asked to stop, or when not appropriate. Incl - Anything related to death - Or really anything that someone may be sensitive about. -shall not be tolerated. As a community for all ages and all kinds of people, we must cater to everyone, and must make sure everyone feels -comfortable here. Repeatedly breaking someone else's boundaries will not be tolerated. +shall not be tolerated. As a community for all ages and all kinds of people, we +must cater to everyone, and must make sure everyone feels comfortable here. +Repeatedly breaking someone else's boundaries will not be tolerated. ### Disruptive Behavior -Sustained disruption of events, forums, or meetings, online or otherwise, including talks and presentations, will not be tolerated. This -includes: +Sustained disruption of events, forums, or meetings, online or otherwise, +including talks and presentations, will not be tolerated. This includes: - 'Talking over', 'heckling', or otherwise disrupting speakers. -- Making derogatory comments about someone else's choices, pushing people to do something they do not wish to do, talking about their - choices or personal preferences to others, or pressuring them to do something they don't wish to - physically or through jeering. +- Making derogatory comments about someone else's choices, pushing people to do + something they do not wish to do, talking about their choices or personal + preferences to others, or pressuring them to do something they don't wish to - + physically or through jeering. - Behaviour that intentionally disrupts an event. - Otherwise influencing actions that may cause hostility in the session. ### Influencing Unacceptable Behavior -We will treat influencing or leading such activities the same way we treat the activities themselves, and thus the same consequences apply. -To make someone do something bad is the same thing as if you were to do it yourself, and we will not tolerate it. +We will treat influencing or leading such activities the same way we treat the +activities themselves, and thus the same consequences apply. To make someone do +something bad is the same thing as if you were to do it yourself, and we will +not tolerate it. ### Stalking or Following -Stalking or following in any form (offline or online) is unnacceptable. In addition, you may not take pictures or record video of others -without their express permission or when asked to stop. Any individual may also request for you to delete all footage you have of them, even -if you took it with their prior consent. +Stalking or following in any form (offline or online) is unnacceptable. In +addition, you may not take pictures or record video of others without their +express permission or when asked to stop. Any individual may also request for +you to delete all footage you have of them, even if you took it with their prior +consent. ### Publication of Personal Information -The publication of personally identifying information (commonly known as "[doxxing](https://en.wikipedia.org/wiki/Doxing)") is directly -prohibited. You may not publish information that someone wants to keep private, unless it is necessary to protect vulnerable people from -intentional abuse. Addditionally, you may not deliberately "out" any aspect of a person's identity without their consent, this includes -gender, pronouns, sexual identity, etc. +The publication of personally identifying information (commonly known +as "[doxxing](https://en.wikipedia.org/wiki/Doxing)") is directly prohibited. +You may not publish information that someone wants to keep private, unless it is +necessary to protect vulnerable people from intentional abuse. Addditionally, +you may not deliberately "out" any aspect of a person's identity without their +consent, this includes gender, pronouns, sexual identity, etc. -Unless it pretains to a case of harassment, as outlined here, in which case some personally identifying information may need to be brought -up in private with the appropriate moderation team to help aid our efforts in keeping the community safe. +Unless it pretains to a case of harassment, as outlined here, in which case some +personally identifying information may need to be brought up in private with the +appropriate moderation team to help aid our efforts in keeping the community +safe. ### Deliberate Misuse of Pronouns[\[1\]](#1) or Names -As an inclusive community, we must respect everyone. That means respecting the pronouns or names they wish for us to use. Deliberate -misgendering, misuse of preferred pronouns[\[1\]](#1), or use of 'dead' or rejected names is not to be tolerated. (If someone -*accidentally* uses the incorrect pronouns, gender, or name, politely ask them to use the correct pronouns/gender/name. But if they are to -continue using the incorrect pronouns, gender, or name, then you should escalate and report them to us.) +As an inclusive community, we must respect everyone. That means respecting the +pronouns or names they wish for us to use. Deliberate misgendering, misuse of +preferred pronouns[\[1\]](#1), or use of 'dead' or rejected names is +not to be tolerated. (If someone +*accidentally* uses the incorrect pronouns, gender, or name, politely ask them +to use the correct pronouns/gender/name. But if they are to continue using the +incorrect pronouns, gender, or name, then you should escalate and report them to +us.) ### Not Stopping After Multiple Requests -If someone asks you to stop doing something, then you should stop. Continuing to do it may be considered harassment, and can lead you to be -removed from our community. +If someone asks you to stop doing something, then you should stop. Continuing to +do it may be considered harassment, and can lead you to be removed from our +community. ## Complains We May Ignore -Additionally, Terra prioritizes marginalized people's safety over privileged people's comfort. We reserve the right to ignore complaints -regarding: +Additionally, Terra prioritizes marginalized people's safety over privileged +people's comfort. We reserve the right to ignore complaints regarding: -- Claims of discrimination against non-marginalized or oppressed groups (eg. being 'superphobic', meaning to not support people who are - 'superstraight', which is a dog whistle for transphobic groups, or being 'cisphobic' without large amounts of evidence, etc.), or claims - of discrimination with no evidence. (Basically, don't report 'cisphobia' to us, because it doesn't exist. But if someone is mocking you or - making fun of you for being cis, and it is *really* getting out of hand, then do tell us.) -- Reasonable communication of boundaries, such as "leave me alone," "go away," or "I'm not discussing this with you." (If someone is asking - you to stop, that is not reason for you to report them as harassing you.) -- Communicating in a 'tone' you don't find [congenial](https://www.thefreedictionary.com/congenial). (You may not report someone for - harassment for being 'annoyed with you' or 'talking sternly to you') -- Criticizing or calling out racist, sexist, discriminatory, or otherwise oppressive behavior or assumptions. (You may not say that someone - is harassing you if they are telling you to stop discriminating against someone.) -- Disagreements that do not qualify as harassment. If you have a simple disagreement with someone, and they have not been discriminating to - anyone, in any form, then we will not take action against them. Two people are allowed to disagree on things without it getting toxic. +- Claims of discrimination against non-marginalized or oppressed groups (eg. + being 'superphobic', meaning to not support people who are + 'superstraight', which is a dog whistle for transphobic groups, or being ' + cisphobic' without large amounts of evidence, etc.), or claims of + discrimination with no evidence. (Basically, don't report 'cisphobia' to us, + because it doesn't exist. But if someone is mocking you or making fun of you + for being cis, and it is *really* getting out of hand, then do tell us.) +- Reasonable communication of boundaries, such as "leave me alone," "go away," + or "I'm not discussing this with you." (If someone is asking you to stop, that + is not reason for you to report them as harassing you.) +- Communicating in a 'tone' you don't + find [congenial](https://www.thefreedictionary.com/congenial). (You may not + report someone for harassment for being 'annoyed with you' or 'talking sternly + to you') +- Criticizing or calling out racist, sexist, discriminatory, or otherwise + oppressive behavior or assumptions. (You may not say that someone is harassing + you if they are telling you to stop discriminating against someone.) +- Disagreements that do not qualify as harassment. If you have a simple + disagreement with someone, and they have not been discriminating to anyone, in + any form, then we will not take action against them. Two people are allowed to + disagree on things without it getting toxic. -We may also additionally choose to enact punishment for submitting a complaint in bad-faith or without adequate justification, if we deem -necessary; if you're submitting a complaint just to troll or to annoy people, we may choose to have you banned or removed from the community -spaces. Don't waste our time. +We may also additionally choose to enact punishment for submitting a complaint +in bad-faith or without adequate justification, if we deem necessary; if you're +submitting a complaint just to troll or to annoy people, we may choose to have +you banned or removed from the community spaces. Don't waste our time. -In order to protect volunteers from abuse and burnout, we reserve the right to reject any report we believe to have been made in bad faith -or with misintent. Reports intended to silence legitimate criticism may be deleted without response. +In order to protect volunteers from abuse and burnout, we reserve the right to +reject any report we believe to have been made in bad faith or with misintent. +Reports intended to silence legitimate criticism may be deleted without +response. ## Reporting -Terra has a global moderation team which is currently comprised of the following members: +Terra has a global moderation team which is currently comprised of the following +members: - solonovamax - - discord: [@solonovamax#6983](https://discord.com/channels/@me/566146322273402881)* + - + discord: [@solonovamax#6983](https://discord.com/channels/@me/566146322273402881)* - github: [@solonovamax](https://github.com/solonovamax) - - email: [solonovamax@12oclockpoint.com](mailto:solonovamax@12oclockpoint.com) + - + email: [solonovamax@12oclockpoint.com](mailto:solonovamax@12oclockpoint.com) - dfsek - - discord: [@dfsek#4208](https://discord.com/channels/@me/378350362236682240)* + - + discord: [@dfsek#4208](https://discord.com/channels/@me/378350362236682240)* - github: [@dfsek](https://github.com/dfsek) - email: [dfsek@protonmail.com](mailto:dfsek@protonmail.com) - duplex (duplexsystem) - - discord: [@Duplex#0797](https://discord.com/channels/@me/356822848641171456)* + - + discord: [@Duplex#0797](https://discord.com/channels/@me/356822848641171456)* - github: [@duplexsystem](https://github.com/duplexsystem) - email: [duplexsys@protonmail.com](mailto:duplexsys@protonmail.com) -\* The preferred method of communication is through discord. Although we will still be responsive on the other platforms, we will be more -responsive on discord. +\* The preferred method of communication is through discord. Although we will +still be responsive on the other platforms, we will be more responsive on +discord. These are people you can contact for anything regarding this code of conduct. -If you are being harassed by a member of the Terra community, or by someone in a Terra community space, notice that someone else is being -harassed, or have any other concerns, please contact a moderator of the platform it occurred on, or someone on the global moderation team. -If the person who is harassing you is on the global moderation team, they will [recuse](https://www.thefreedictionary.com/recuse) themselves -from handling your incident. (Meaning: if you are reporting someone on the team, they will not be involved in the discussion.) We will -respond within a reasonable time frame, but generally within about 1 day. +If you are being harassed by a member of the Terra community, or by someone in a +Terra community space, notice that someone else is being harassed, or have any +other concerns, please contact a moderator of the platform it occurred on, or +someone on the global moderation team. If the person who is harassing you is on +the global moderation team, they +will [recuse](https://www.thefreedictionary.com/recuse) themselves from handling +your incident. (Meaning: if you are reporting someone on the team, they will not +be involved in the discussion.) We will respond within a reasonable time frame, +but generally within about 1 day. -This code of conduct applies to Terra community spaces, but if you are being harassed by a member of Terra *outside* our spaces, we still -want to know about it as we may choose to take action within our community. We will take all good-faith reports seriously and will always -attempt to handle them appropriately. This includes harassment outside our spaces and harassment that took place at any point in time. The -moderation team reserves the right to exclude people from Terra communities based on their past behavior, including behavior outside Terra -spaces and behavior towards people who are not in Terra. +This code of conduct applies to Terra community spaces, but if you are being +harassed by a member of Terra *outside* our spaces, we still want to know about +it as we may choose to take action within our community. We will take all +good-faith reports seriously and will always attempt to handle them +appropriately. This includes harassment outside our spaces and harassment that +took place at any point in time. The moderation team reserves the right to +exclude people from Terra communities based on their past behavior, including +behavior outside Terra spaces and behavior towards people who are not in Terra. -Note: although we only have the ability to moderate official community spaces, if you are being harassed by someone in a non-official -community space, and the moderation team of that platform refuses to do anything to help you (or even if they *do* help you), then you -should notify us so that we may take appropriate action. +Note: although we only have the ability to moderate official community spaces, +if you are being harassed by someone in a non-official community space, and the +moderation team of that platform refuses to do anything to help you (or even if +they *do* help you), then you should notify us so that we may take appropriate +action. -We will respect confidentiality requests for the purpose of protecting victims of abuse. At our discretion, we may publicly name a person -which we have received harassment complaints about, or privately warn third parties about them, but only if we believe that doing so will -increase the safety of Terra community members or the general public. We will not name harassment victims or reporters of harassment -(assuming the report was made in good-faith) without their explicit consent; all reports will remain anonymous by default. +We will respect confidentiality requests for the purpose of protecting victims +of abuse. At our discretion, we may publicly name a person which we have +received harassment complaints about, or privately warn third parties about +them, but only if we believe that doing so will increase the safety of Terra +community members or the general public. We will not name harassment victims or +reporters of harassment +(assuming the report was made in good-faith) without their explicit consent; all +reports will remain anonymous by default. ## Consequences of Unacceptable Behavior -Participants asked to stop any harassing behavior are expected to comply immediately. Whether or not you comply immediately, you may still -face consequences for you actions, but if the harasser doesn't comply immediately then we may choose to take additional actions to protect -the Terra community members or the individual being harassed. +Participants asked to stop any harassing behavior are expected to comply +immediately. Whether or not you comply immediately, you may still face +consequences for you actions, but if the harasser doesn't comply immediately +then we may choose to take additional actions to protect the Terra community +members or the individual being harassed. -Violation of this code can result in being asked to leave an event or online space, either temporarily or for the duration of the event, or -being banned from participation in spaces, or future events and activities in perpetuity. If a participant engages in harassing behavior, -the global moderation team may take any action they deem appropriate, up to and including expulsion from all Terra community spaces and -identification of the participant as a harasser to other Terra community members or the general public. Bad behavior from any community +Violation of this code can result in being asked to leave an event or online +space, either temporarily or for the duration of the event, or being banned from +participation in spaces, or future events and activities in perpetuity. If a +participant engages in harassing behavior, the global moderation team may take +any action they deem appropriate, up to and including expulsion from all Terra +community spaces and identification of the participant as a harasser to other +Terra community members or the general public. Bad behavior from any community member, including those with decision-making authority, will not be tolerated. -In addition, any participants who abuse the reporting process will be considered to be in violation of these guidelines and subject to -consequences. False reporting, especially to retaliate or exclude, will not be accepted or tolerated. +In addition, any participants who abuse the reporting process will be considered +to be in violation of these guidelines and subject to consequences. False +reporting, especially to retaliate or exclude, will not be accepted or +tolerated. ## Questions -if you have further questions for anything not addressed here, you may open an issue on this github repo, or contact a member of the global -moderation team. +if you have further questions for anything not addressed here, you may open an +issue on this github repo, or contact a member of the global moderation team. ## License and Attribution This set of guidelines is distributed under a -[Creative Commons Attribution-ShareAlike license](https://creativecommons.org/licenses/by-sa/3.0/). +[Creative Commons Attribution-ShareAlike license](https://creativecommons.org/licenses/by-sa/3.0/) +. These guidelines have been adapted from -[Mozilla's Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/), which were adapted -from: +[Mozilla's Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/) +, which were adapted from: - Mozilla's original Community Participation Guidelines - The [Ubuntu Code of Conduct](https://ubuntu.com/community/code-of-conduct) -- Mozilla's [View Source Conference Code of Conduct](https://viewsourceconf.org/berlin-2016/code-of-conduct/) -- And the [Rust Language Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct) +- -which in turn were based on [Stumptown Syndicate's Citizen Code of Conduct](http://citizencodeofconduct.org/), along with some adapted text -from the [LGBTQ in Technology Code of Conduct](https://lgbtq.technology/coc.html) and -the [WisCon code of conduct](http://wiscon.net/policies/anti-harassment/code-of-conduct/). +Mozilla's [View Source Conference Code of Conduct](https://viewsourceconf.org/berlin-2016/code-of-conduct/) + +- And + the [Rust Language Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct) + +which in turn were based +on [Stumptown Syndicate's Citizen Code of Conduct](http://citizencodeofconduct.org/) +, along with some adapted text from +the [LGBTQ in Technology Code of Conduct](https://lgbtq.technology/coc.html) and +the [WisCon code of conduct](http://wiscon.net/policies/anti-harassment/code-of-conduct/) +. It was then modified by solonovamax with various inclusions from -the [LGBTQ in Technology Code of Conduct](https://lgbtq.technology/coc.html) and a few other sources. +the [LGBTQ in Technology Code of Conduct](https://lgbtq.technology/coc.html) and +a few other sources. ## Notes #### \[1\] -You provide a set of pronouns that everyone is comfortable addressing you with. Although some people are comfortable -using [neopronouns](https://www.mypronouns.org/neopronouns), not everyone is. Therefore, if you use neopronouns, you should have at *least* -one set of more common pronouns (One of he/him, she/her, or they/them; it doesn't matter which one. Anyone who doesn't respect your basic -pronouns will be removed from the community.) that people may use, should they so choose, as some people are not comfortable -using [neopronouns](https://www.mypronouns.org/neopronouns). But if someone refuses to use your more common pronouns, you should report them -to us. Additionally, you may not ask people to use unreasonable pronouns, such as 'acab/acabself', 'that/bitch', 'ur/mom', or -'dream/dreamself' (pronouns related to real people, eg. the minecraft youtuber 'dreamwastaken'). Doing so will be considered mockery of -individuals who use non-standard pronouns and is very disrespectful. \ No newline at end of file +You provide a set of pronouns that everyone is comfortable addressing you with. +Although some people are comfortable +using [neopronouns](https://www.mypronouns.org/neopronouns), not everyone is. +Therefore, if you use neopronouns, you should have at *least* +one set of more common pronouns (One of he/him, she/her, or they/them; it +doesn't matter which one. Anyone who doesn't respect your basic pronouns will be +removed from the community.) that people may use, should they so choose, as some +people are not comfortable +using [neopronouns](https://www.mypronouns.org/neopronouns). But if someone +refuses to use your more common pronouns, you should report them to us. +Additionally, you may not ask people to use unreasonable pronouns, such as ' +acab/acabself', 'that/bitch', 'ur/mom', or +'dream/dreamself' (pronouns related to real people, eg. the minecraft youtuber ' +dreamwastaken'). Doing so will be considered mockery of individuals who use +non-standard pronouns and is very disrespectful. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 743a1face..3c2c62467 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,17 +1,22 @@ # Contributing to Terra -First off, thank you for considering contributing to Terra. It's people like you that make Terra such a great tool. +First off, thank you for considering contributing to Terra. It's people like you +that make Terra such a great tool. -Following these guidelines helps to effectively use the time of the developers managing and developing this open source project, making it -more enjoyable for all of us. +Following these guidelines helps to effectively use the time of the developers +managing and developing this open source project, making it more enjoyable for +all of us. -Terra is an open source project and we love to receive contributions from our community, you! There are many ways to contribute, from -writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be -incorporated into Terra. +Terra is an open source project and we love to receive contributions from our +community, you! There are many ways to contribute, from writing tutorials or +blog posts, improving the documentation, submitting bug reports and feature +requests or writing code which can be incorporated into Terra. -The following is a set of guidelines for contributing to Terra and its packages, which are hosted in -the [PolyhedralDev Organization](https://github.com/PolyhedralDev) on GitHub. These are mostly guidelines, not rules. Use your best -judgment, and feel free to propose changes to this document in a pull request. +The following is a set of guidelines for contributing to Terra and its packages, +which are hosted in +the [PolyhedralDev Organization](https://github.com/PolyhedralDev) on GitHub. +These are mostly guidelines, not rules. Use your best judgment, and feel free to +propose changes to this document in a pull request. #### Table Of Contents @@ -51,8 +56,10 @@ judgment, and feel free to propose changes to this document in a pull request. ## Code of Conduct -This project and everyone participating in it is governed by the [Terra of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected -to uphold this code. Please report unacceptable behavior to [Terra global moderation team](CODE_OF_CONDUCT.md#Reporting). +This project and everyone participating in it is governed by +the [Terra of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected +to uphold this code. Please report unacceptable behavior +to [Terra global moderation team](CODE_OF_CONDUCT.md#Reporting). ## I don't want to read this whole thing I just have a question!!! @@ -66,160 +73,219 @@ We have an official discord server where you can request help from various users ### Your First Contribution -Unsure where to begin contributing to Terra? You can start by looking through "beginner" and "help wanted" issues: +Unsure where to begin contributing to Terra? You can start by looking through " +beginner" and "help wanted" issues: -- [Beginner issues](https://github.com/PolyhedralDev/Terra/labels/Note%3A%20Good%20First%20Issue) - issues which should be friendly to - anyone new to terra. -- [Help wanted issues](https://github.com/PolyhedralDev/Terra/labels/Note%3A%20Help%20Wanted) - issues which should be a bit more involved - than "beginner" issues. +- [Beginner issues](https://github.com/PolyhedralDev/Terra/labels/Note%3A%20Good%20First%20Issue) + - issues which should be friendly to anyone new to terra. +- [Help wanted issues](https://github.com/PolyhedralDev/Terra/labels/Note%3A%20Help%20Wanted) + - issues which should be a bit more involved than "beginner" issues. New to github? Working on your first Pull Request? Check out [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github) to get you up on your feet. -At this point, you're ready to make your changes! Feel free to ask for help; everyone is a beginner at first! +At this point, you're ready to make your changes! Feel free to ask for help; +everyone is a beginner at first! -If a maintainer asks you to "rebase" your PR, they're saying that a lot of code has changed, and that you need to update your branch so it's -easier to merge. +If a maintainer asks you to "rebase" your PR, they're saying that a lot of code +has changed, and that you need to update your branch so it's easier to merge. ### Reporting Bugs -This section guides you through submitting a bug report for Terra. Following these guidelines helps maintainers and the community understand -your report, and spend their time fixing the issue instead of understanding what you mean. +This section guides you through submitting a bug report for Terra. Following +these guidelines helps maintainers and the community understand your report, and +spend their time fixing the issue instead of understanding what you mean. -Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create -one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). +Before creating bug reports, please +check [this list](#before-submitting-a-bug-report) as you might find out that +you don't need to create one. When you are creating a bug report, +please [include as many details as possible](#how-do-i-submit-a-good-bug-report) +. > **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. #### Before Submitting A Bug Report -- Join the [discord server](https://discord.dfsek.com) to help resolve simple issues. -- You must be on the LATEST version of Terra to receive any support. There is no support for older versions of Terra. -- Make sure that this is not a *specific* compatibility issue with another terrain generation mod. Do not request *specific* compatibility - with mods or plugins (e.g. "Compatibility with TechCraft v7"). That should be implemented in an addon, **not** in the main project. - *General* compatibility (e.g. "Ability to pull Vanilla/Modded features from parent biomes") will be considered in the main project. -- Search for any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) open with your problem. If you open - a duplicate, it will be closed as such. -- Make sure that it is actually Terra causing the issue, and not another mod/plugin. You can do this by testing to see if you can recreate - the issue without Terra installed. -- Double check that this is not an issue with a specific Terra *pack* or Terra *addon*, and instead applies to all of Terra. -- Include a copy of the latest.log file. Putting *just* the exception is not enough. We need to be able to check that there wasn't anything - else before that caused it. -- Be sure to fill out all the required information and give descriptions of everything. +- Join the [discord server](https://discord.dfsek.com) to help resolve simple + issues. +- You must be on the LATEST version of Terra to receive any support. There is no + support for older versions of Terra. +- Make sure that this is not a *specific* compatibility issue with another + terrain generation mod. Do not request *specific* compatibility with mods or + plugins (e.g. "Compatibility with TechCraft v7"). That should be implemented + in an addon, **not** in the main project. + *General* compatibility (e.g. "Ability to pull Vanilla/Modded features from + parent biomes") will be considered in the main project. +- Search for + any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) + open with your problem. If you open a duplicate, it will be closed as such. +- Make sure that it is actually Terra causing the issue, and not another + mod/plugin. You can do this by testing to see if you can recreate the issue + without Terra installed. +- Double check that this is not an issue with a specific Terra *pack* or Terra * + addon*, and instead applies to all of Terra. +- Include a copy of the latest.log file. Putting *just* the exception is not + enough. We need to be able to check that there wasn't anything else before + that caused it. +- Be sure to fill out all the required information and give descriptions of + everything. #### How Do I Submit A (Good) Bug Report? Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/) -. [Create an issue](https://github.com/PolyhedralDev/Terra/issues/new) and provide the prerequisite information by filling in the Bug Report -template. +. [Create an issue](https://github.com/PolyhedralDev/Terra/issues/new) and +provide the prerequisite information by filling in the Bug Report template. -Explain the problem and include additional details to help maintainers reproduce the problem: +Explain the problem and include additional details to help maintainers reproduce +the problem: - **Use a clear and descriptive title** for the issue to identify the problem. -- **Describe the exact steps which reproduce the problem** in as many details as possible. When listing steps, **don't just say what you - did, but explain how you did it**. +- **Describe the exact steps which reproduce the problem** in as many details as + possible. When listing steps, **don't just say what you did, but explain how + you did it**. - **Provide specific examples to demonstrate the steps**. -- **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +- **Describe the behavior you observed after following the steps** and point out + what exactly is the problem with that behavior. - **Explain which behavior you expected to see instead and why.** -- **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more - information using the guidelines below. +- **If the problem wasn't triggered by a specific action**, describe what you + were doing before the problem happened and share more information using the + guidelines below. Include details about your configuration and environment: -- **Which version of Terra are you using?** You can get the exact version by running `/te version`. -- **What's the name and version of the platform you're using**? (eg. Spigot, Fabric, Paper, etc.) +- **Which version of Terra are you using?** You can get the exact version by + running `/te version`. +- **What's the name and version of the platform you're using**? (eg. Spigot, + Fabric, Paper, etc.) - **Which external plugins or mods do you have installed?** -- **Which Terra packs do you have installed?** You can get that list by running `/te packs`. -- **Which Terra addons do you have installed?** You can get that list by running `/te addons`. +- **Which Terra packs do you have installed?** You can get that list by + running `/te packs`. +- **Which Terra addons do you have installed?** You can get that list by + running `/te addons`. ### Suggesting Enhancements -This section guides you through submitting an enhancement suggestion for Terra, including completely new features and minor improvements to -existing functionality. Following these guidelines helps maintainers and the community understand your suggestion and find related -suggestions. +This section guides you through submitting an enhancement suggestion for Terra, +including completely new features and minor improvements to existing +functionality. Following these guidelines helps maintainers and the community +understand your suggestion and find related suggestions. -Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that -you don't need to create one. When you are creating an enhancement suggestion, -please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). +Before creating enhancement suggestions, please +check [this list](#before-submitting-an-enhancement-suggestion) as you might +find out that you don't need to create one. When you are creating an enhancement +suggestion, +please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion) +. #### Before Submitting An Enhancement Suggestion -- You must be on the **LATEST** version of Terra to make sure your feature hasn't been added yet. -- Search for any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) (Including closed!) with your - problem. If you open a duplicate, it will be closed as such. +- You must be on the **LATEST** version of Terra to make sure your feature + hasn't been added yet. +- Search for + any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) ( + Including closed!) with your problem. If you open a duplicate, it will be + closed as such. - Verify that this is actually within the scope of Terra. -- Be sure that this is not a feature request that should be made for a specific Terra *pack*, and instead applies to all of Terra. -- Be sure that this is not something that should be implemented as a Terra addon, and instead applies to all of Terra. -- Make sure that you attach a copy of the latest.log file, if there are any exceptions thrown in the console. Putting *just* the exception - **is not enough**. We need to be able to check that there wasn't anything else before that caused it. +- Be sure that this is not a feature request that should be made for a specific + Terra *pack*, and instead applies to all of Terra. +- Be sure that this is not something that should be implemented as a Terra + addon, and instead applies to all of Terra. +- Make sure that you attach a copy of the latest.log file, if there are any + exceptions thrown in the console. Putting *just* the exception + **is not enough**. We need to be able to check that there wasn't anything else + before that caused it. #### How Do I Submit A (Good) Enhancement Suggestion? -Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue on our main repository -and provide the following information: +Enhancement suggestions are tracked +as [GitHub issues](https://guides.github.com/features/issues/). Create an issue +on our main repository and provide the following information: -- **Use a clear and descriptive title** for the issue to identify the suggestion. -- **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +- **Use a clear and descriptive title** for the issue to identify the + suggestion. +- **Provide a step-by-step description of the suggested enhancement** in as many + details as possible. - **Provide specific examples to demonstrate the steps**. -- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. -- **Explain why this enhancement would be useful** to most Terra users and isn't something that can or should be implemented as an addon. +- **Describe the current behavior** and **explain which behavior you expected to + see instead** and why. +- **Explain why this enhancement would be useful** to most Terra users and isn't + something that can or should be implemented as an addon. ### Pull Requests This section guides you through submitting a pull request for Terra. -While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete -additional design work, tests, or other changes before your pull request can be ultimately accepted. +While the prerequisites above must be satisfied prior to having your pull +request reviewed, the reviewer(s) may ask you to complete additional design +work, tests, or other changes before your pull request can be ultimately +accepted. #### Before Submitting A Pull Request -- You must be on the **LATEST** version of Terra to make sure your feature hasn't been added yet. -- Search for any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) (Including closed!) with your - problem. If you open a duplicate, it will be closed as such. +- You must be on the **LATEST** version of Terra to make sure your feature + hasn't been added yet. +- Search for + any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) ( + Including closed!) with your problem. If you open a duplicate, it will be + closed as such. - Verify that this is actually within the scope of Terra. -- Be sure that this is not a feature request that should be made for a specific Terra *pack*, and instead applies to all of Terra. -- Be sure that this is not something that should be implemented as a Terra addon, and instead applies to all of Terra. -- Make sure that you attach a copy of the latest.log file, if there are any exceptions thrown in the console. Putting *just* the - exception **is not enough**. We need to be able to check that there wasn't anything else before that caused it. +- Be sure that this is not a feature request that should be made for a specific + Terra *pack*, and instead applies to all of Terra. +- Be sure that this is not something that should be implemented as a Terra + addon, and instead applies to all of Terra. +- Make sure that you attach a copy of the latest.log file, if there are any + exceptions thrown in the console. Putting *just* the exception **is not + enough**. We need to be able to check that there wasn't anything else before + that caused it. #### How Do I Submit A (Good) Pull Request? -Pull Requests are tracked as [GitHub Pull Requests](https://guides.github.com/activities/forking/#making-a-pull-request). Create a pr on our -main repository and provide the following information: +Pull Requests are tracked +as [GitHub Pull Requests](https://guides.github.com/activities/forking/#making-a-pull-request) +. Create a pr on our main repository and provide the following information: - **Use a clear and descriptive title** to identify the pull request. - **State what this pull request adds/fixes**. -- **Be sure that you are the owner of the code you contributed** or that it can be licensed under the GPLv3. -- **Provide a description goals and non-goals of the pull request** in as many details as possible. -- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. -- **Explain why this enhancement would be useful** to most Terra users and isn't something that can or should be implemented as an addon. +- **Be sure that you are the owner of the code you contributed** or that it can + be licensed under the GPLv3. +- **Provide a description goals and non-goals of the pull request** in as many + details as possible. +- **Describe the current behavior** and **explain which behavior you expected to + see instead** and why. +- **Explain why this enhancement would be useful** to most Terra users and isn't + something that can or should be implemented as an addon. ## Styleguides ### Git Commits -Following this is not mandatory, but rather a set of guidelines. As long as your commit messages aren't absolutely awful, it's probably -fine. But it would be nice if you followed them. +Following this is not mandatory, but rather a set of guidelines. As long as your +commit messages aren't absolutely awful, it's probably fine. But it would be +nice if you followed them. #### Committing -When you commit code, try to avoid committing large amounts of code in a single go. Splitting up code into smaller commits is much nicer and -makes it easier to trace a feature to a single commit. +When you commit code, try to avoid committing large amounts of code in a single +go. Splitting up code into smaller commits is much nicer and makes it easier to +trace a feature to a single commit. -Try to stick to one feature/fix/etc. per commit. A good rule of thumb is if you need to use the word "and" in the subject line, then it -should probably™ be two commits. +Try to stick to one feature/fix/etc. per commit. A good rule of thumb is if you +need to use the word "and" in the subject line, then it should probably™ be two +commits. #### Git Commit Messages -- Subject line must fit the following format: `: `. Type must be one of the following: +- Subject line must fit the following format: `: `. Type + must be one of the following: - Build: Changes that affect the build system or external dependencies. - Docs: Documentation only changes. - Feat: A new feature. - Fix: A bug fix. - Perf: Performance improvements. - Refactor: Refactoring sections of the codebase. - - Repo: Changes to the repository structure that do not affect code. (Eg. modification of the `README.md` file, etc.) + - Repo: Changes to the repository structure that do not affect code. (Eg. + modification of the `README.md` file, etc.) - Revert: Revert a previous commit. - Style: Code style updates. - Test: Anything related to testing. @@ -266,7 +332,8 @@ should probably™ be two commits. ### Code Styleguide -Use an IDE with support for `.editorconfig` files. There is an included editorconfig file in the base of the project so that your IDE should +Use an IDE with support for `.editorconfig` files. There is an included +editorconfig file in the base of the project so that your IDE should automatically use the correct code style settings. ### Documentation Styleguide @@ -279,41 +346,55 @@ TODO #### General Compatibility -General compatibility (example: injection of Vanilla structures/features/carvers into packs) is acceptable in the main project. +General compatibility (example: injection of Vanilla structures/features/carvers +into packs) is acceptable in the main project. -- General compatibility features should be *disabled by default*. Having things auto-injected causes unpredictable behaviour that is - annoying to diagnose. General-compatibility options should have config values attached which are disabled by default. -- These config options should also be *simple to use*. Think of the people who will be using these compatibility options. They want to flick - a switch and have things be compatible. That means that a majority of compatibility options should stay in `pack.yml`, to make it simple - to go into a pack and turn on specific compatibilities. This does *not* mean that more advanced compatibility options are off the table, - for example, look at Feature compatibility, where features can either be automatically injected, *or* configured individually per Terra - biome, depending on how much control the user wants. +- General compatibility features should be *disabled by default*. Having things + auto-injected causes unpredictable behaviour that is annoying to diagnose. + General-compatibility options should have config values attached which are + disabled by default. +- These config options should also be *simple to use*. Think of the people who + will be using these compatibility options. They want to flick a switch and + have things be compatible. That means that a majority of compatibility options + should stay in `pack.yml`, to make it simple to go into a pack and turn on + specific compatibilities. This does *not* mean that more advanced + compatibility options are off the table, for example, look at Feature + compatibility, where features can either be automatically injected, *or* + configured individually per Terra biome, depending on how much control the + user wants. #### Specific Compatibility -Specific compatibility should *not* be put in the main project. (Example: Adding the ability to generate TechCraft v7's doo-dads with a -TerraScript function) +Specific compatibility should *not* be put in the main project. (Example: Adding +the ability to generate TechCraft v7's doo-dads with a TerraScript function) -Having specific compatibilities leads to tons of extra dependencies to keep track of, as well as adding lots of additional stuff to -maintain. It quickly becomes a mess. Especially when most users will never need to use this feature. +Having specific compatibilities leads to tons of extra dependencies to keep +track of, as well as adding lots of additional stuff to maintain. It quickly +becomes a mess. Especially when most users will never need to use this feature. -We have designed an addon API for exactly this purpose. **Specific compatibilities are welcome and encouraged, in the form of addons.** +We have designed an addon API for exactly this purpose. **Specific +compatibilities are welcome and encouraged, in the form of addons.** ### Platform-Agnostic Design -Terra must, at all times, remain platform agnostic. This means it must be able to run on theoretically any voxel based platform. Including -non-minecraft games like Terasology. +Terra must, at all times, remain platform agnostic. This means it must be able +to run on theoretically any voxel based platform. Including non-minecraft games +like Terasology. -When adding a new feature to `common`, make no assumptions about what platform it'll be running on. +When adding a new feature to `common`, make no assumptions about what platform +it'll be running on. Examples: - Don't assume the world height is 256. -- Don't assume that a specific block, item, or entity exists. (Eg. don't assume there exists a block called `minecraft:grass_block`) +- Don't assume that a specific block, item, or entity exists. (Eg. don't assume + there exists a block called `minecraft:grass_block`) ### Data-Driven -When adding a new feature, make it abstract. Don't make assumptions about "specific use cases." If you can only think of a few use cases, -your idea should probably be generalized. +When adding a new feature, make it abstract. Don't make assumptions about " +specific use cases." If you can only think of a few use cases, your idea should +probably be generalized. -You must use configs effectively. Make configs that are *powerful* but also *make sense* and are \[easy\] to use. \ No newline at end of file +You must use configs effectively. Make configs that are *powerful* but also * +make sense* and are \[easy\] to use. \ No newline at end of file diff --git a/README.md b/README.md index a33baa859..08962c148 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,23 @@ # Terra -Terra is an incredibly powerful free & open-source data-driven, platform-agnostic world generator. It allows you to create a world exactly -to your specifications, with no knowledge of Java required. +Terra is an incredibly powerful free & open-source data-driven, +platform-agnostic world generator. It allows you to create a world exactly to +your specifications, with no knowledge of Java required. ## Downloads: -* Paper+ servers (Paper, Tuinity, Purpur, etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) -* Fabric: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) -* Forge **(ALPHA - NOT PRODUCTION-READY)**: [Modrinth](https://modrinth.com/mod/terra) +* Paper+ servers (Paper, Tuinity, Purpur, + etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) +* Fabric: [Modrinth](https://modrinth.com/mod/terra) + / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) +* Forge **(ALPHA - NOT + PRODUCTION-READY)**: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) ## Building and Running Terra -To build, simply run `./gradlew build` (`gradlew.bat build` on Windows). This will build all platforms, and produce JARs -in `platforms//build/libs` +To build, simply run `./gradlew build` (`gradlew.bat build` on Windows). This +will build all platforms, and produce JARs in `platforms//build/libs` ### Production JARs: @@ -32,10 +36,14 @@ JARs are produced in `platforms//build/libs`. To run Minecraft with Terra in the IDE (for testing) use the following tasks: * Bukkit - * `installPaper` - Install a [Paper](https://github.com/PaperMC/Paper) test server. (Only needs to be run once). - * `installPurpur` - Install a [Purpur](https://github.com/pl3xgaming/Purpur) test server. (Only needs to be run once). - * `runPaper` - Run the Paper test server with Terra (`installPaper` must have been run previously). - * `runPurpur` - Run the Purpur test server with Terra (`installPurpur` must have been run previously). + * `installPaper` - Install a [Paper](https://github.com/PaperMC/Paper) test + server. (Only needs to be run once). + * `installPurpur` - Install a [Purpur](https://github.com/pl3xgaming/Purpur) + test server. (Only needs to be run once). + * `runPaper` - Run the Paper test server with Terra (`installPaper` must + have been run previously). + * `runPurpur` - Run the Purpur test server with Terra (`installPurpur` must + have been run previously). * Fabric * `runClient` - Run a Minecraft Fabric client with Terra installed. * `runServer` - Run a Minecraft Fabric server with Terra installed. @@ -45,9 +53,12 @@ To run Minecraft with Terra in the IDE (for testing) use the following tasks: ## Contributing -Contributions are welcome! If you want to see a feature in Terra, please, open an issue, or implement it yourself and submit a PR! -Join the discord [here](https://discord.gg/PXUEbbF) if you would like to talk more about the project! +Contributions are welcome! If you want to see a feature in Terra, please, open +an issue, or implement it yourself and submit a PR! +Join the discord [here](https://discord.gg/PXUEbbF) if you would like to talk +more about the project! ## Beta -Terra is still in beta! While it is stable, it is not feature-complete. There is a lot to be added! +Terra is still in beta! While it is stable, it is not feature-complete. There is +a lot to be added! diff --git a/build.gradle.kts b/build.gradle.kts index 414f3eb38..7d603aff7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,28 +1,32 @@ -import com.dfsek.terra.* +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies +import com.dfsek.terra.configureDistribution +import com.dfsek.terra.configurePublishing +import com.dfsek.terra.getGitHash val versionObj = Version("6", "0", "0", true) allprojects { version = versionObj group = "com.dfsek.terra" - + configureDependencies() configureCompilation() configurePublishing() - + tasks.withType().configureEach { options.isFork = true options.isIncremental = true } - + tasks.withType().configureEach { useJUnitPlatform() - + maxHeapSize = "2G" ignoreFailures = false failFast = true maxParallelForks = (Runtime.getRuntime().availableProcessors() - 1).takeIf { it > 0 } ?: 1 - + reports.html.required.set(false) reports.junitXml.required.set(false) } @@ -39,7 +43,7 @@ afterEvaluate { */ @Suppress("MemberVisibilityCanBePrivate") class Version(val major: String, val minor: String, val revision: String, val preRelease: Boolean = false) { - + override fun toString(): String { return if (!preRelease) "$major.$minor.$revision" diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt index 71c6f587e..9602b51f3 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -1,10 +1,10 @@ package com.dfsek.terra +import java.io.File +import java.util.function.Predicate import org.gradle.api.Project import org.gradle.api.Task import org.gradle.jvm.tasks.Jar -import java.io.File -import java.util.function.Predicate import kotlin.streams.asStream @@ -22,13 +22,13 @@ fun Project.addonDir(dir: File, task: Task) { } project(":common:addons").subprojects.forEach { addonProject -> val jar = (addonProject.tasks.named("jar").get() as Jar) - + val target = File(dir, jar.archiveFileName.get()) - + val base = "${jar.archiveBaseName.get()}-${project.version}" - + println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base") - + jar.archiveFile.orNull?.asFile?.copyTo(target) } } diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index d252ecae7..5fe68f42d 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -1,7 +1,7 @@ package com.dfsek.terra -import org.gradle.api.Project import java.io.ByteArrayOutputStream +import org.gradle.api.Project fun Project.getGitHash(): String { val stdout = ByteArrayOutputStream() diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index 4872a5543..e38e85ee3 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -6,7 +6,12 @@ import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.javadoc.Javadoc -import org.gradle.kotlin.dsl.* +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.filter +import org.gradle.kotlin.dsl.getByName +import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.withType import org.gradle.language.jvm.tasks.ProcessResources fun Project.configureCompilation() { @@ -14,46 +19,46 @@ fun Project.configureCompilation() { apply(plugin = "java") apply(plugin = "java-library") apply(plugin = "idea") - + configure { sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16 } - + tasks.withType { options.encoding = "UTF-8" doFirst { options.compilerArgs.add("-Xlint:all") } } - + tasks.withType { include("**/*.*") filter( - "tokens" to mapOf( - "VERSION" to project.version.toString(), - "DESCRIPTION" to project.properties["terra.description"], - "WIKI" to project.properties["terra.wiki"], - "SOURCE" to project.properties["terra.source"], - "ISSUES" to project.properties["terra.issues"], - "LICENSE" to project.properties["terra.license"] - ) - ) + "tokens" to mapOf( + "VERSION" to project.version.toString(), + "DESCRIPTION" to project.properties["terra.description"], + "WIKI" to project.properties["terra.wiki"], + "SOURCE" to project.properties["terra.source"], + "ISSUES" to project.properties["terra.issues"], + "LICENSE" to project.properties["terra.license"] + ) + ) } - + tasks.withType { options.encoding = "UTF-8" } - + tasks.withType { archiveBaseName.set("Terra-${archiveBaseName.get()}") from("../LICENSE", "../../LICENSE") } - + tasks.register("sourcesJar") { archiveClassifier.set("sources") } - + tasks.register("javadocJar") { dependsOn("javadoc") archiveClassifier.set("javadoc") diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index 5dbb19755..c659676e6 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -1,12 +1,16 @@ package com.dfsek.terra import org.gradle.api.Project -import org.gradle.kotlin.dsl.* +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.invoke +import org.gradle.kotlin.dsl.project +import org.gradle.kotlin.dsl.repositories fun Project.configureDependencies() { apply(plugin = "java") apply(plugin = "java-library") - + configurations { val shaded = create("shaded") val shadedApi = create("shadedApi") @@ -16,7 +20,7 @@ fun Project.configureDependencies() { shaded.extendsFrom(shadedImplementation) getByName("implementation").extendsFrom(shadedImplementation) } - + repositories { maven { url = uri("https://maven.enginehub.org/repo/") } maven { url = uri("https://repo.codemc.org/repository/maven-public") } @@ -25,16 +29,16 @@ fun Project.configureDependencies() { gradlePluginPortal() mavenCentral() } - + dependencies { "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.7.0") "testImplementation"("org.junit.jupiter:junit-jupiter-engine:5.7.0") "compileOnly"("org.jetbrains:annotations:20.1.0") - + "compileOnly"("com.google.guava:guava:30.0-jre") "testImplementation"("com.google.guava:guava:30.0-jre") } - + if (project(":common:addons").subprojects.contains(this)) { // If this is an addon project, depend on the API. dependencies { "compileOnly"(project(":common:api")) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index 2bd60d666..b527de9a3 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -1,6 +1,13 @@ package com.dfsek.terra import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.FileWriter +import java.net.URL +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.plugins.BasePluginExtension @@ -11,29 +18,22 @@ import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.named import org.yaml.snakeyaml.DumperOptions import org.yaml.snakeyaml.Yaml -import java.io.File -import java.io.FileInputStream -import java.io.FileOutputStream -import java.io.FileWriter -import java.net.URL -import java.util.zip.ZipEntry -import java.util.zip.ZipOutputStream fun Project.configureDistribution() { apply(plugin = "com.github.johnrengelman.shadow") - + val downloadDefaultPacks = tasks.create("downloadDefaultPacks") { group = "terra" doFirst { file("${buildDir}/resources/main/packs/").deleteRecursively() - + val defaultPackUrl = URL("https://github.com/PolyhedralDev/TerraDefaultConfig/releases/download/latest/default.zip") downloadPack(defaultPackUrl, project) val netherPackUrl = URL("https://github.com/PolyhedralDev/TerraDefaultConfig/releases/download/latest/nether.zip") downloadPack(netherPackUrl, project) } } - + val installAddons = tasks.create("installAddons") { group = "terra" project(":common:addons").subprojects.forEach { @@ -41,7 +41,7 @@ fun Project.configureDistribution() { dependsOn(it.tasks.getByName("build")) // Depend on addon JARs } } - + doFirst { // The addons are copied into a JAR because of a ShadowJar bug // which expands *all* JARs, even resource ones, into the fat JAR. @@ -52,13 +52,13 @@ fun Project.configureDistribution() { // https://github.com/johnrengelman/shadow/issues/111 val dest = File(buildDir, "/resources/main/addons.jar") dest.parentFile.mkdirs() - + val zip = ZipOutputStream(FileOutputStream(dest)) - + project(":common:addons").subprojects.forEach { addonProject -> val jar = (addonProject.tasks.named("jar").get() as Jar) println("Packaging addon ${jar.archiveFileName.get()} to ${dest.absolutePath}.") - + val entry = ZipEntry("addons/${jar.archiveFileName.get()}") zip.putNextEntry(entry) FileInputStream(jar.archiveFile.get().asFile).copyTo(zip) @@ -67,7 +67,7 @@ fun Project.configureDistribution() { zip.close() } } - + val generateResourceManifest = tasks.create("generateResourceManifest") { group = "terra" dependsOn(downloadDefaultPacks) @@ -75,24 +75,24 @@ fun Project.configureDistribution() { doFirst { val resources = HashMap>() val packsDir = File("${project.buildDir}/resources/main/packs/") - + packsDir.walkTopDown().forEach { if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach resources.computeIfAbsent("packs") { ArrayList() }.add(it.name) } - + val langDir = File("${project(":common:implementation").buildDir}/resources/main/lang/") - + langDir.walkTopDown().forEach { if (it.isDirectory || !it.name.endsWith(".yml")) return@forEach resources.computeIfAbsent("lang") { ArrayList() }.add(it.name) } - + project(":common:addons").subprojects.forEach { addonProject -> val jar = (addonProject.tasks.named("jar").get() as Jar).archiveFileName.get() resources.computeIfAbsent("addons") { ArrayList() }.add(jar) } - + val options = DumperOptions() options.indent = 2 options.indentWithIndicator = true @@ -100,25 +100,25 @@ fun Project.configureDistribution() { options.isPrettyFlow = true options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK options.defaultScalarStyle = DumperOptions.ScalarStyle.DOUBLE_QUOTED - + val yaml = Yaml(options) - + val manifest = File("${project.buildDir}/resources/main/resources.yml") - + if (manifest.exists()) manifest.delete() manifest.createNewFile() yaml.dump(resources, FileWriter(manifest)) } } - + tasks["processResources"].dependsOn(generateResourceManifest) - + tasks.named("shadowJar") { // Tell shadow to download the packs dependsOn(downloadDefaultPacks) - + configurations = listOf(project.configurations["shaded"]) - + archiveClassifier.set("shaded") setVersion(project.version) relocate("org.apache.commons", "com.dfsek.terra.lib.commons") @@ -126,11 +126,11 @@ fun Project.configureDistribution() { relocate("org.json", "com.dfsek.terra.lib.json") relocate("org.yaml", "com.dfsek.terra.lib.yaml") } - + configure { archivesName.set(project.name) } - + tasks.named("build") { dependsOn(tasks["shadowJar"]) } diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt index 7742a85bb..2fa6a3a3b 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/PublishingConfig.kt @@ -3,7 +3,11 @@ package com.dfsek.terra import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication -import org.gradle.kotlin.dsl.* +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.create +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.maven +import org.gradle.kotlin.dsl.provideDelegate fun Project.configurePublishing() { configure { @@ -13,11 +17,11 @@ fun Project.configurePublishing() { artifact(tasks["jar"]) } } - + repositories { val mavenUrl = "https://repo.codemc.io/repository/maven-releases/" //val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/" - + maven(mavenUrl) { val mavenUsername: String? by project val mavenPassword: String? by project diff --git a/common/addons/README.md b/common/addons/README.md index cea224814..1ee000423 100644 --- a/common/addons/README.md +++ b/common/addons/README.md @@ -1,3 +1,4 @@ # Core Addons -This directory contains the modularized "core addons" that implement Terra's default behavior. \ No newline at end of file +This directory contains the modularized "core addons" that implement Terra's +default behavior. \ No newline at end of file diff --git a/common/addons/api-features/README.md b/common/addons/api-features/README.md index e570ff02c..7c8ba1834 100644 --- a/common/addons/api-features/README.md +++ b/common/addons/api-features/README.md @@ -1,8 +1,10 @@ # api-features + Contains the API for feature generation. This API implemented in: - * `config-feature` - * `generation-stage-feature` - * `config-locators` - * `config-distributors` \ No newline at end of file + +* `config-feature` +* `generation-stage-feature` +* `config-locators` +* `config-distributors` \ No newline at end of file diff --git a/common/addons/biome-provider-image/README.md b/common/addons/biome-provider-image/README.md index f659e1bb1..49e9b8fdb 100644 --- a/common/addons/biome-provider-image/README.md +++ b/common/addons/biome-provider-image/README.md @@ -1,6 +1,6 @@ # biome-provider-image -Implements and registers the `IMAGE` biome provider, a biome provider which generates -biomes from an image, using the `color` attribute of biomes. +Implements and registers the `IMAGE` biome provider, a biome provider which +generates biomes from an image, using the `color` attribute of biomes. This addon registers the provider type, and all associated config options. \ No newline at end of file diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 5f609e206..3ba0cb9ba 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -1,57 +1,64 @@ package com.dfsek.terra.addons.biome.image; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import net.jafama.FastMath; -import java.awt.*; +import java.awt.Color; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Set; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + public class ImageBiomeProvider implements BiomeProvider { private final Map colorBiomeMap = new HashMap<>(); private final BufferedImage image; private final int resolution; private final Align align; - + public ImageBiomeProvider(Set registry, BufferedImage image, int resolution, Align align) { this.image = image; this.resolution = resolution; this.align = align; registry.forEach(biome -> colorBiomeMap.put(new Color(biome.getColor()), biome)); } - + private static int distance(Color a, Color b) { return FastMath.abs(a.getRed() - b.getRed()) + FastMath.abs(a.getGreen() - b.getGreen()) + FastMath.abs(a.getBlue() - b.getBlue()); } - + @Override public TerraBiome getBiome(int x, int z, long seed) { x /= resolution; z /= resolution; Color color = align.getColor(image, x, z); - return colorBiomeMap.get(colorBiomeMap.keySet().stream().reduce(colorBiomeMap.keySet().stream().findAny().orElseThrow(IllegalStateException::new), (running, element) -> { - int d1 = distance(color, running); - int d2 = distance(color, element); - return d1 < d2 ? running : element; - })); + return colorBiomeMap.get(colorBiomeMap.keySet() + .stream() + .reduce(colorBiomeMap.keySet().stream().findAny().orElseThrow(IllegalStateException::new), + (running, element) -> { + int d1 = distance(color, running); + int d2 = distance(color, element); + return d1 < d2 ? running : element; + })); } - + public enum Align { CENTER { @Override public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(FastMath.floorMod(x - image.getWidth() / 2, image.getWidth()), FastMath.floorMod(z - image.getHeight() / 2, image.getHeight()))); + return new Color(image.getRGB(FastMath.floorMod(x - image.getWidth() / 2, image.getWidth()), + FastMath.floorMod(z - image.getHeight() / 2, image.getHeight()))); } - }, NONE { + }, + NONE { @Override public Color getColor(BufferedImage image, int x, int z) { return new Color(image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight()))); } }; - + public abstract Color getColor(BufferedImage image, int x, int z); } } diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java index 566abff80..94c0b8984 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java @@ -1,6 +1,9 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -14,26 +17,27 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.util.function.Supplier; @Addon("biome-provider-image") @Author("Terra") @Version("1.0.0") public class ImageBiomeProviderAddon extends TerraAddon { - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; - + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; + @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); - providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); + }) + .failThrough(); } } diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index 70ad46589..877697c9e 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -3,29 +3,29 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; import java.util.HashSet; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + public class ImageProviderTemplate implements ObjectTemplate { private final Registry biomes; - @Value("image.name") - private BufferedImage image; - - @Value("image.align") - private ImageBiomeProvider.Align align; - @Value("resolution") @Default - private int resolution = 1; - + private final int resolution = 1; + @Value("image.name") + private BufferedImage image; + @Value("image.align") + private ImageBiomeProvider.Align align; + public ImageProviderTemplate(Registry set) { this.biomes = set; } - + @Override public BiomeProvider get() { return new ImageBiomeProvider(new HashSet<>(biomes.entries()), image, resolution, align); diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md index 0326bcf6e..9e55109a7 100644 --- a/common/addons/biome-provider-pipeline/README.md +++ b/common/addons/biome-provider-pipeline/README.md @@ -3,5 +3,5 @@ Implements the Biome Pipeline, a procedural biome provider that uses a series of "stages" to apply "mutations" to a 2D grid of biomes. - -This addon registers the `PIPELINE` biome provider type, and all associated configurations. \ No newline at end of file +This addon registers the `PIPELINE` biome provider type, and all associated +configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java index 3044cd1b9..ac1fa6be5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; + public class BiomeHolderImpl implements BiomeHolder { private final Vector2 origin; private final int width; private final int offset; private TerraBiome[][] biomes; - + public BiomeHolderImpl(int width, Vector2 origin) { width += 4; this.width = width; @@ -20,35 +21,38 @@ public class BiomeHolderImpl implements BiomeHolder { this.origin = origin; this.offset = 2; } - + private BiomeHolderImpl(TerraBiome[][] biomes, Vector2 origin, int width, int offset) { this.biomes = biomes; this.origin = origin; this.width = width; this.offset = 2 * offset; } - + @Override public BiomeHolder expand(BiomeExpander expander, long seed) { TerraBiome[][] old = biomes; int newWidth = width * 2 - 1; - + biomes = new TerraBiome[newWidth][newWidth]; - + for(int x = 0; x < width; x++) { for(int z = 0; z < width; z++) { biomes[x * 2][z * 2] = old[x][z]; if(z != width - 1) - biomes[x * 2][z * 2 + 1] = expander.getBetween(x + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], old[x][z + 1]); + biomes[x * 2][z * 2 + 1] = expander.getBetween(x + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], + old[x][z + 1]); if(x != width - 1) - biomes[x * 2 + 1][z * 2] = expander.getBetween(x + 1 + origin.getX(), z + origin.getZ(), seed, old[x][z], old[x + 1][z]); + biomes[x * 2 + 1][z * 2] = expander.getBetween(x + 1 + origin.getX(), z + origin.getZ(), seed, old[x][z], + old[x + 1][z]); if(x != width - 1 && z != width - 1) - biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); + biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], + old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); } } return new BiomeHolderImpl(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); } - + @Override public void mutate(BiomeMutator mutator, long seed) { for(int x = 0; x < width; x++) { @@ -58,7 +62,7 @@ public class BiomeHolderImpl implements BiomeHolder { } } } - + @Override public void fill(BiomeSource source, long seed) { for(int x = 0; x < width; x++) { @@ -67,14 +71,14 @@ public class BiomeHolderImpl implements BiomeHolder { } } } - + @Override public TerraBiome getBiome(int x, int z) { x += offset; z += offset; return getBiomeRaw(x, z); } - + @Override public TerraBiome getBiomeRaw(int x, int z) { if(x >= width || z >= width || x < 0 || z < 0) return null; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java index d5266bb15..122767773 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -1,31 +1,33 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - import java.util.ArrayList; import java.util.List; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.vector.Vector2; + + public class BiomePipeline { private final BiomeSource source; private final List stages; private final int size; private final int init; - + private BiomePipeline(BiomeSource source, List stages, int size, int init) { this.source = source; this.stages = stages; this.size = size; this.init = init; } - + /** * Get biomes in a chunk * * @param x Chunk X coord * @param z Chunk Z coord + * * @return BiomeHolder containing biomes. */ public BiomeHolder getBiomes(int x, int z, long seed) { @@ -34,29 +36,29 @@ public class BiomePipeline { for(Stage stage : stages) holder = stage.apply(holder, seed); return holder; } - + public int getSize() { return size; } - + public static final class BiomePipelineBuilder { private final int init; List stages = new ArrayList<>(); private int expand; - + public BiomePipelineBuilder(int init) { this.init = init; expand = init; } - + public BiomePipeline build(BiomeSource source) { for(Stage stage : stages) { if(stage.isExpansion()) expand = expand * 2 - 1; } - + return new BiomePipeline(source, stages, expand, init); } - + public BiomePipelineBuilder addStage(Stage stage) { stages.add(stage); return this; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 539723a67..b7ecae266 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -1,9 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.BiomeProviderLoader; import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; @@ -11,6 +13,7 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorT import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -22,44 +25,47 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import java.util.function.Supplier; @Addon("biome-provider-pipeline") @Author("Terra") @Version("1.0.0") public class BiomePipelineAddon extends TerraAddon { - - public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() {}; - - public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() {}; - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; + + public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { + }; + + public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() { + }; + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); - providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(main)); - }) - .then(event -> { - CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry(SOURCE_REGISTRY_KEY); - sourceRegistry.register("NOISE", NoiseSourceTemplate::new); - }) - .then(event -> { - CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); - stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); - stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); - stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); - stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); - stageRegistry.register("BORDER", BorderMutatorTemplate::new); - stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(main)); + }) + .then(event -> { + CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( + SOURCE_REGISTRY_KEY); + sourceRegistry.register("NOISE", NoiseSourceTemplate::new); + }) + .then(event -> { + CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); + stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); + stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); + stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); + stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); + stageRegistry.register("BORDER", BorderMutatorTemplate::new); + stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); + }) + .failThrough(); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java index 21aa51e6e..542603188 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -1,15 +1,17 @@ package com.dfsek.terra.addons.biome.pipeline; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import net.jafama.FastMath; +import org.jetbrains.annotations.NotNull; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; + public class BiomePipelineProvider implements BiomeProvider { private final LoadingCache holderCache; @@ -17,50 +19,51 @@ public class BiomePipelineProvider implements BiomeProvider { private final int resolution; private final NoiseSampler mutator; private final double noiseAmp; - + public BiomePipelineProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; holderCache = CacheBuilder.newBuilder() - .maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache()) - .build( - new CacheLoader() { - @Override - public BiomeHolder load(@NotNull SeededVector key) { - return pipeline.getBiomes(key.x, key.z, key.seed); - } - } - ); + .maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache()) + .build( + new CacheLoader() { + @Override + public BiomeHolder load(@NotNull SeededVector key) { + return pipeline.getBiomes(key.x, key.z, key.seed); + } + } + ); this.pipeline = pipeline; } - + @Override public TerraBiome getBiome(int x, int z, long seed) { x += mutator.getNoiseSeeded(seed + 1, x, z) * noiseAmp; z += mutator.getNoiseSeeded(seed + 2, x, z) * noiseAmp; - - + + x = FastMath.floorToInt(FastMath.floorDiv(x, resolution)); - + z = FastMath.floorToInt(FastMath.floorDiv(z, resolution)); - + int fdX = FastMath.floorDiv(x, pipeline.getSize()); int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.getUnchecked(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()); + return holderCache.getUnchecked(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), + z - fdZ * pipeline.getSize()); } - + private static final class SeededVector { private final int x; private final int z; private final long seed; - + private SeededVector(int x, int z, long seed) { this.x = x; this.z = z; this.seed = seed; } - + @Override public int hashCode() { int result = 0; @@ -69,12 +72,12 @@ public class BiomePipelineProvider implements BiomeProvider { result = 31 * result + z; return result; } - + @Override public boolean equals(Object obj) { if(!(obj instanceof SeededVector)) return false; SeededVector that = (SeededVector) obj; - + return this.seed == that.seed && this.x == that.x && this.z == that.z; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java index 39bc22f73..462f8ebec 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; + public interface BiomeExpander { TerraBiome getBetween(double x, double z, long seed, TerraBiome... others); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java index 1d57ba616..bf88c46e2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java @@ -1,16 +1,17 @@ package com.dfsek.terra.addons.biome.pipeline.api; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.TerraBiome; + public interface BiomeHolder { BiomeHolder expand(BiomeExpander expander, long seed); - + void mutate(BiomeMutator mutator, long seed); - + void fill(BiomeSource source, long seed); - + TerraBiome getBiome(int x, int z); - + TerraBiome getBiomeRaw(int x, int z); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java index 547409b5a..fab417815 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java @@ -2,21 +2,22 @@ package com.dfsek.terra.addons.biome.pipeline.api; import com.dfsek.terra.api.world.biome.TerraBiome; + public interface BiomeMutator { TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed); - + class ViewPoint { private final BiomeHolder biomes; private final int offX; private final int offZ; - + public ViewPoint(BiomeHolder biomes, int offX, int offZ) { this.biomes = biomes; this.offX = offX; this.offZ = offZ; } - - + + public TerraBiome getBiome(int x, int z) { return biomes.getBiomeRaw(x + offX, z + offZ); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java index dbf9f2722..af00308c3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.biome.pipeline.api; public interface Stage { - boolean isExpansion(); - BiomeHolder apply(BiomeHolder in, long seed); - + + boolean isExpansion(); + } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index bc35d9a01..11bc53417 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -2,33 +2,35 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import java.util.List; -@SuppressWarnings({"FieldMayBeFinal", "unused"}) +import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class BiomePipelineTemplate extends BiomeProviderTemplate { private final TerraPlugin main; @Value("pipeline.initial-size") @Default private @Meta int initialSize = 2; - + @Value("pipeline.stages") private @Meta List<@Meta Stage> stages; - + @Value("pipeline.source") private @Meta BiomeSource source; - + public BiomePipelineTemplate(TerraPlugin main) { this.main = main; } - + @Override public BiomeProvider get() { BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java index 2d181efe7..a254082ca 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java @@ -3,10 +3,12 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.AnnotatedType; + import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.lang.reflect.AnnotatedType; public class BiomeProviderLoader implements TypeLoader { @Override diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index fc8909455..c1aa496cb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -3,10 +3,12 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + public abstract class BiomeProviderTemplate implements ObjectTemplate { @Value("resolution") @Default diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java index 042253fe6..627146800 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java @@ -1,20 +1,22 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.annotations.Value; + +import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; + public class NoiseSourceTemplate extends SourceTemplate { @Value("noise") private @Meta NoiseSampler noise; - + @Value("biomes") private @Meta ProbabilityCollection<@Meta TerraBiome> biomes; - + @Override public BiomeSource get() { return new NoiseSource(biomes, noise); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java index c9a41e949..831ca3d88 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -public abstract class SourceTemplate implements ObjectTemplate{ + +public abstract class SourceTemplate implements ObjectTemplate { } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index 4aba4990f..4b491e482 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -2,12 +2,12 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + public abstract class StageTemplate implements ObjectTemplate { @Value("noise") protected @Meta NoiseSampler noise; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java index 6ccf0e9af..ea74a303a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java @@ -5,6 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; + public class ExpanderStageTemplate extends StageTemplate { @Override public Stage get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java index a65e181d6..136243bc2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java @@ -1,6 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; + +import java.util.Map; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; @@ -9,23 +12,22 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Map; @SuppressWarnings("unused") public class BorderListMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; - + @Value("default-replace") private @Meta String defaultReplace; - + @Value("default-to") private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; - + @Value("replace") private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; - - + + @Override public Stage get() { return new MutatorStage(new BorderListMutator(replace, from, defaultReplace, noise, defaultTo)); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java index 786b54dc8..6632bf6bb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; @@ -10,17 +10,18 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; + @SuppressWarnings("unused") public class BorderMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; - + @Value("replace") private @Meta String replace; - + @Value("to") private @Meta ProbabilityCollection<@Meta TerraBiome> to; - + @Override public Stage get() { return new MutatorStage(new BorderMutator(from, replace, noise, to)); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java index bdd22ade9..5a21ec95b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java @@ -1,7 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; + +import java.util.Map; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; @@ -10,19 +12,18 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Map; @SuppressWarnings("unused") public class ReplaceListMutatorTemplate extends StageTemplate { @Value("default-from") private @Meta String defaultFrom; - + @Value("default-to") private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; - + @Value("to") private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; - + @Override public Stage get() { return new MutatorStage(new ReplaceListMutator(replace, defaultFrom, defaultTo, noise)); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java index ea59bd3d8..6dd7196c2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; @@ -10,14 +10,15 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; + @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends StageTemplate { @Value("from") private @Meta String from; - + @Value("to") private @Meta ProbabilityCollection<@Meta TerraBiome> to; - + @Override public Stage get() { return new MutatorStage(new ReplaceMutator(from, to, noise)); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java index 77e23c100..400779433 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; + public class SmoothMutatorTemplate extends StageTemplate { @Override public Stage get() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java index 894d2a86a..39050c873 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java @@ -5,13 +5,14 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; + public class FractalExpander implements BiomeExpander { private final NoiseSampler sampler; - + public FractalExpander(NoiseSampler sampler) { this.sampler = sampler; } - + @Override public TerraBiome getBetween(double x, double z, long seed, TerraBiome... others) { return others[MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), others.length)]; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java index 53273973e..ff8570001 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import java.util.Map; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Map; public class BorderListMutator implements BiomeMutator { private final String border; @@ -13,15 +14,16 @@ public class BorderListMutator implements BiomeMutator { private final ProbabilityCollection replaceDefault; private final String defaultReplace; private final Map> replace; - - public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + + public BorderListMutator(Map> replace, String border, String defaultReplace, + NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { this.border = border; this.noiseSampler = noiseSampler; this.replaceDefault = replaceDefault; this.defaultReplace = defaultReplace; this.replace = replace; } - + @Override public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome origin = viewPoint.getBiome(0, 0); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java index dfd54aa9c..6bd5c39c8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java @@ -5,19 +5,20 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; + public class BorderMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; private final ProbabilityCollection replace; private final String replaceTag; - + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { this.border = border; this.noiseSampler = noiseSampler; this.replace = replace; this.replaceTag = replaceTag; } - + @Override public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome origin = viewPoint.getBiome(0, 0); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java index 8bdb314b8..4712d41a7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,25 +1,27 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import java.util.Map; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Map; public class ReplaceListMutator implements BiomeMutator { private final Map> replace; private final NoiseSampler sampler; private final ProbabilityCollection replaceDefault; private final String defaultTag; - - public ReplaceListMutator(Map> replace, String defaultTag, ProbabilityCollection replaceDefault, NoiseSampler sampler) { + + public ReplaceListMutator(Map> replace, String defaultTag, + ProbabilityCollection replaceDefault, NoiseSampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; this.replaceDefault = replaceDefault; } - + @Override public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome center = viewPoint.getBiome(0, 0); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java index ec1c7437c..df77f796d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java @@ -5,17 +5,18 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; + public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; private final ProbabilityCollection replace; private final NoiseSampler sampler; - + public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; } - + @Override public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java index ac1c7c8a0..3ac06370c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java @@ -1,38 +1,39 @@ package com.dfsek.terra.addons.biome.pipeline.mutator; +import java.util.Objects; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Objects; public class SmoothMutator implements BiomeMutator { - + private final NoiseSampler sampler; - + public SmoothMutator(NoiseSampler sampler) { this.sampler = sampler; } - + @Override public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { TerraBiome top = viewPoint.getBiome(1, 0); TerraBiome bottom = viewPoint.getBiome(-1, 0); TerraBiome left = viewPoint.getBiome(0, 1); TerraBiome right = viewPoint.getBiome(0, -1); - - + + boolean vert = Objects.equals(top, bottom) && top != null; boolean horiz = Objects.equals(left, right) && left != null; - + if(vert && horiz) { return MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), 2) == 0 ? left : top; } - + if(vert) return top; if(horiz) return left; - + return viewPoint.getBiome(0, 0); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java index f1cf927c3..694a820cf 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.api.world.biome.TerraBiome; + public interface BiomeSource { TerraBiome getBiome(double x, double z, long seed); } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java index 1ae08b7b8..d7846a917 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java @@ -4,15 +4,16 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.TerraBiome; + public class NoiseSource implements BiomeSource { private final ProbabilityCollection biomes; private final NoiseSampler sampler; - + public NoiseSource(ProbabilityCollection biomes, NoiseSampler sampler) { this.biomes = biomes; this.sampler = sampler; } - + @Override public TerraBiome getBiome(double x, double z, long seed) { return biomes.get(sampler, x, z, seed); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java index 839febab5..6fe1eab4e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java @@ -4,23 +4,24 @@ import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.Stage; + public class ExpanderStage implements Stage { private final BiomeExpander expander; - + public ExpanderStage(BiomeExpander expander) { this.expander = expander; } - - @Override - public boolean isExpansion() { - return true; - } - + @Override public BiomeHolder apply(BiomeHolder in, long seed) { return in.expand(expander, seed); } - + + @Override + public boolean isExpansion() { + return true; + } + public enum Type { FRACTAL } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java index 4f5f6bf6e..e1b42fb3c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java @@ -4,25 +4,30 @@ import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.Stage; + public class MutatorStage implements Stage { private final BiomeMutator mutator; - + public MutatorStage(BiomeMutator mutator) { this.mutator = mutator; } - - @Override - public boolean isExpansion() { - return false; - } - + @Override public BiomeHolder apply(BiomeHolder in, long seed) { in.mutate(mutator, seed); return in; } - + + @Override + public boolean isExpansion() { + return false; + } + public enum Type { - REPLACE, REPLACE_LIST, BORDER, BORDER_LIST, SMOOTH + REPLACE, + REPLACE_LIST, + BORDER, + BORDER_LIST, + SMOOTH } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java index 2b171547f..694da0b8d 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -3,13 +3,14 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + public class SingleBiomeProvider implements BiomeProvider { private final TerraBiome biome; - + public SingleBiomeProvider(TerraBiome biome) { this.biome = biome; } - + @Override public TerraBiome getBiome(int x, int z, long seed) { return biome; diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java index 704a20d28..3f63b811a 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java @@ -1,6 +1,9 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -13,26 +16,27 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.util.function.Supplier; @Addon("biome-provider-single") @Author("Terra") @Version("1.0.0") public class SingleBiomeProviderAddon extends TerraAddon { - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; - + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; + @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); - providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); + }) + .failThrough(); } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java index bbb3f4f1e..034c7887b 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -2,14 +2,16 @@ package com.dfsek.terra.addons.biome.single; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + public class SingleBiomeProviderTemplate implements ObjectTemplate { @Value("biome") private @Meta TerraBiome biome; - + @Override public BiomeProvider get() { return new SingleBiomeProvider(biome); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java index ed14d2faf..b0c797800 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java @@ -3,26 +3,26 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.generator.Palette; -public class BiomePaletteTemplate implements ObjectTemplate { - @Value("palette") - private @Meta PaletteHolder palette; +public class BiomePaletteTemplate implements ObjectTemplate { @Value("slant") @Default - private @Meta SlantHolder slant = null; - + private final @Meta SlantHolder slant; + @Value("palette") + private @Meta PaletteHolder palette; @Value("ocean.level") private @Meta int seaLevel; - + @Value("ocean.palette") private @Meta Palette oceanPalette; - + @Override public PaletteInfo get() { return new PaletteInfo(palette, slant, oceanPalette, seaLevel); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index bd5acee77..1ad12108f 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -17,34 +17,36 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; + @Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") public class NoiseChunkGenerator3DAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); - event.getPack() - .applyLoader(SlantHolder.class, new SlantHolderLoader()) - .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - }) - .failThrough(); - + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", + pack -> new NoiseChunkGenerator3D(pack, main)); + event.getPack() + .applyLoader(SlantHolder.class, new SlantHolderLoader()) + .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + }) + .failThrough(); + main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); - } - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); + } + }) + .failThrough(); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java index 1b370cfeb..aa295094a 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; + public final class PaletteUtil { public static Palette getPalette(int x, int y, int z, GenerationSettings c, Sampler sampler, PaletteInfo paletteInfo) { SlantHolder slant = paletteInfo.getSlantHolder(); @@ -16,7 +17,7 @@ public final class PaletteUtil { return slant.getPalette(slope).getPalette(y); } } - + return paletteInfo.getPaletteHolder().getPalette(y); } } \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index fe9ea7d8e..f76391908 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -1,5 +1,12 @@ package com.dfsek.terra.addons.chunkgenerator.generation.generators; +import net.jafama.FastMath; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; @@ -16,32 +23,27 @@ import com.dfsek.terra.api.world.biome.GenerationSettings; 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.ChunkGenerator; import com.dfsek.terra.api.world.generator.GenerationStage; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; +import com.dfsek.terra.api.world.generator.Palette; +import com.dfsek.terra.api.world.generator.Sampler; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; public class NoiseChunkGenerator3D implements ChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; private final List generationStages = new ArrayList<>(); - + private final BlockState air; - + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; this.air = main.getWorldHandle().air(); c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c))); } - - @SuppressWarnings({"try"}) + + @SuppressWarnings("try") static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, TerraPlugin main) { try(ProfileFrame ignore = main.getProfiler().profile("biomes")) { int xOrig = (chunkX << 4); @@ -53,73 +55,64 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { int cx = xOrig + (x << 2); int cz = zOrig + (z << 2); TerraBiome b = grid.getBiome(cx, cz, seed); - + biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator().getBiomeNoise(), cx, 0, cz, world.getSeed())); } } } } - + @Override - public ConfigPack getConfigPack() { - return configPack; - } - - @Override - public TerraPlugin getMain() { - return main; - } - - @Override - @SuppressWarnings({"try"}) + @SuppressWarnings("try") public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_3d")) { BiomeProvider grid = world.getBiomeProvider(); - + int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); - + Sampler sampler = world.getConfig().getSamplerCache().getChunk(chunkX, chunkZ); - + long seed = world.getSeed(); - + for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { int paletteLevel = 0; - + int cx = xOrig + x; int cz = zOrig + z; - + TerraBiome biome = grid.getBiome(cx, cz, seed); - + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); - + if(paletteInfo == null) { main.logger().info("null palette: " + biome.getID()); } - + GenerationSettings generationSettings = biome.getGenerator(); - + int sea = paletteInfo.getSeaLevel(); Palette seaPalette = paletteInfo.getOcean(); - + boolean justSet = false; BlockState data = null; for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { if(sampler.sample(x, y, z) > 0) { justSet = true; - - data = PaletteUtil.getPalette(x, y, z, generationSettings, sampler, paletteInfo).get(paletteLevel, cx, y, cz, seed); + + data = PaletteUtil.getPalette(x, y, z, generationSettings, sampler, paletteInfo).get(paletteLevel, cx, y, cz, + seed); chunk.setBlock(x, y, z, data); - + paletteLevel++; } else if(y <= sea) { chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig, seed)); - + justSet = false; paletteLevel = 0; - } else { - + } else { + justSet = false; paletteLevel = 0; } @@ -129,47 +122,38 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { return chunk; } } - - private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, BlockState stairNew) { - - if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.WEST); - } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() - 0.55) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.NORTH); - } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() + 0.55) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.SOUTH); - } else if(sampler.sample(block.getX() + 0.55, block.getY(), block.getZ()) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.EAST); - } else stairNew = null; - if(stairNew != null) { - stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); - chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); - return true; - } - return false; - } - + @Override public void generateBiomes(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome) { biomes(world, chunkX, chunkZ, biome, main); } - + @Override public Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth) { return new Sampler3D(chunkX, chunkZ, provider, world, elevationSmooth); } - + + @Override + public ConfigPack getConfigPack() { + return configPack; + } + + @Override + public TerraPlugin getMain() { + return main; + } + @Override public List getGenerationStages() { return generationStages; } - + @Override public BlockState getBlock(World world, int x, int y, int z) { BiomeProvider provider = world.getBiomeProvider(); TerraBiome biome = provider.getBiome(x, z, world.getSeed()); Sampler sampler = world.getConfig().getSamplerCache().get(x, z); - + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(), sampler, paletteInfo); int fdX = FastMath.floorMod(x, 16); @@ -186,4 +170,23 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { return paletteInfo.getOcean().get(paletteInfo.getSeaLevel() - y, x, y, z, world.getSeed()); } else return air; } + + private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, BlockState stairNew) { + + if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { + stairNew.set(Properties.DIRECTION, Direction.WEST); + } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() - 0.55) > thresh) { + stairNew.set(Properties.DIRECTION, Direction.NORTH); + } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() + 0.55) > thresh) { + stairNew.set(Properties.DIRECTION, Direction.SOUTH); + } else if(sampler.sample(block.getX() + 0.55, block.getY(), block.getZ()) > thresh) { + stairNew.set(Properties.DIRECTION, Direction.EAST); + } else stairNew = null; + if(stairNew != null) { + stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); + chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); + return true; + } + return false; + } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java index a610f6f15..8773732df 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java @@ -1,16 +1,18 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import net.jafama.FastMath; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + 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.GenerationSettings; 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; -import java.util.Map; -import java.util.function.BiFunction; /** * Class to abstract away the Interpolators needed to generate a chunk.
@@ -19,7 +21,7 @@ import java.util.function.BiFunction; public class ChunkInterpolator2D implements ChunkInterpolator { private final Interpolator[][] interpGrid = new Interpolator[4][4]; private final BiFunction noiseGetter; - + /** * Instantiates a 3D ChunkInterpolator3D at a pair of chunk coordinates. * @@ -27,33 +29,36 @@ public class ChunkInterpolator2D implements ChunkInterpolator { * @param chunkZ Z coordinate of the chunk. * @param provider Biome Provider to use for biome fetching. */ - public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { + public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, + BiFunction noiseGetter) { this.noiseGetter = noiseGetter; int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; - + long seed = w.getSeed(); - + double[][] noiseStorage = new double[5][5]; - + for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); Map genMap = new HashMap<>(); - + int step = generationSettings.getBlendStep(); int blend = generationSettings.getBlendDistance(); - + for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent( + provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), + g -> new MutableInteger(0)).increment(); // Increment by 1 } } - + noiseStorage[x][z] = computeNoise(genMap, (x << 2) + xOrigin, 0, (z << 2) + zOrigin); } } - + for(int x = 0; x < 4; x++) { for(int z = 0; z < 4; z++) { interpGrid[x][z] = new Interpolator( @@ -64,27 +69,28 @@ public class ChunkInterpolator2D implements ChunkInterpolator { } } } - + private static int reRange(int value, int high) { return FastMath.max(FastMath.min(value, high), 0); } - + public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); } - + /** * Gets the noise at a pair of internal chunk coordinates. * * @param x The internal X coordinate (0-15). * @param z The internal Z coordinate (0-15). + * * @return double - The interpolated noise at the coordinates. */ @Override public double getNoise(double x, double y, double z) { return interpGrid[reRange(((int) x) / 4, 3)][reRange(((int) z) / 4, 3)].bilerp((x % 4) / 4, (z % 4) / 4); } - + public double getNoise(int x, int y, int z) { return interpGrid[x / 4][z / 4].bilerp((double) (x % 4) / 4, (double) (z % 4) / 4); } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index 982a76d7f..909500d09 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -1,16 +1,18 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import net.jafama.FastMath; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + 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.GenerationSettings; 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; -import java.util.Map; -import java.util.function.BiFunction; /** * Class to abstract away the Interpolators needed to generate a chunk.
@@ -19,10 +21,10 @@ import java.util.function.BiFunction; public class ChunkInterpolator3D implements ChunkInterpolator { private final Interpolator3[][][] interpGrid; private final BiFunction noiseGetter; - + private final int min; private final int max; - + /** * Instantiates a 3D ChunkInterpolator3D at a pair of chunk coordinates. * @@ -30,43 +32,46 @@ public class ChunkInterpolator3D implements ChunkInterpolator { * @param chunkZ Z coordinate of the chunk. * @param provider Biome Provider to use for biome fetching. */ - public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, BiFunction noiseGetter) { + public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, + BiFunction noiseGetter) { this.noiseGetter = noiseGetter; int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; - + this.max = w.getMaxHeight(); this.min = w.getMinHeight(); int range = max - min + 1; - + int size = range >> 2; - + interpGrid = new Interpolator3[4][size][4]; - + double[][][] noiseStorage = new double[5][5][size + 1]; - + long seed = w.getSeed(); - + for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); Map genMap = new HashMap<>(); - + int step = generationSettings.getBlendStep(); int blend = generationSettings.getBlendDistance(); - + for(int xi = -blend; xi <= blend; xi++) { for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent(provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), g -> new MutableInteger(0)).increment(); // Increment by 1 + genMap.computeIfAbsent( + provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), + g -> new MutableInteger(0)).increment(); // Increment by 1 } } - + for(int y = 0; y < size + 1; y++) { noiseStorage[x][z][y] = computeNoise(genMap, (x << 2) + xOrigin, (y << 2) + min, (z << 2) + zOrigin); } } } - + for(int x = 0; x < 4; x++) { for(int z = 0; z < 4; z++) { for(int y = 0; y < size; y++) { @@ -83,27 +88,30 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } } } - + private static int reRange(int value, int high) { return FastMath.max(FastMath.min(value, high), 0); } - + public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); } - + /** * Gets the noise at a pair of internal chunk coordinates. * * @param x The internal X coordinate (0-15). * @param z The internal Z coordinate (0-15). + * * @return double - The interpolated noise at the coordinates. */ @Override public double getNoise(double x, double y, double z) { - return interpGrid[reRange(((int) x) / 4, 3)][(FastMath.max(FastMath.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, 3)].trilerp((x % 4) / 4, (y % 4) / 4, (z % 4) / 4); + return interpGrid[reRange(((int) x) / 4, 3)][(FastMath.max(FastMath.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, + 3)].trilerp( + (x % 4) / 4, (y % 4) / 4, (z % 4) / 4); } - + public double getNoise(int x, int y, int z) { return interpGrid[x / 4][(y - min) / 4][z / 4].trilerp((double) (x % 4) / 4, (double) (y % 4) / 4, (double) (z % 4) / 4); } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java index 80ae9899d..e2b01942e 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java @@ -4,24 +4,25 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + public class ElevationInterpolator { private final double[][] values = new double[18][18]; - + public ElevationInterpolator(World world, int chunkX, int chunkZ, BiomeProvider provider, int smooth) { int xOrigin = chunkX << 4; int zOrigin = chunkZ << 4; - + long seed = world.getSeed(); - + GenerationSettings[][] gens = new GenerationSettings[18 + 2 * smooth][18 + 2 * smooth]; - + // Precompute generators. for(int x = -1 - smooth; x <= 16 + smooth; x++) { for(int z = -1 - smooth; z <= 16 + smooth; z++) { gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z, seed).getGenerator(); } } - + for(int x = -1; x <= 16; x++) { for(int z = -1; z <= 16; z++) { double noise = 0; @@ -37,7 +38,7 @@ public class ElevationInterpolator { } } } - + public double getElevation(int x, int z) { return values[x + 1][z + 1]; } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java index 37bc0eb76..d67ac6c10 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java @@ -5,7 +5,7 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; */ public class Interpolator { private final double v0, v1, v2, v3; - + /** * Constructs an interpolator with given values as vertices of a unit square. * @@ -20,24 +20,26 @@ public class Interpolator { this.v2 = v2; this.v3 = v3; } - + /** * 1D Linear interpolation between 2 points 1 unit apart. * * @param t - Distance from v0. Total distance between v0 and v1 is 1 unit. * @param v0 - Value at v0. * @param v1 - Value at v1. + * * @return double - The interpolated value. */ public static double lerp(double t, double v0, double v1) { return v0 + t * (v1 - v0); } - + /** * 2D Bilinear interpolation between 4 points on a unit square. * * @param s - X value * @param t - Z value + * * @return double - The interpolated value. */ public double bilerp(double s, double t) { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java index ddedc713b..1d80fb025 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java @@ -6,7 +6,7 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; public class Interpolator3 { private final Interpolator bottom; private final Interpolator top; - + /** * Constructs an interpolator with given values as vertices of a unit cube. * * @param _000 The value at (t, u, v) = (0, 0, 0). @@ -25,7 +25,7 @@ public class Interpolator3 { this.top = new Interpolator(_000, _010, _001, _011); this.bottom = new Interpolator(_100, _110, _101, _111); } - + public double trilerp(double x, double y, double z) { return Interpolator.lerp(x, top.bilerp(y, z), bottom.bilerp(y, z)); } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index d0092503c..1b7136b4b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -1,26 +1,30 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; +import net.jafama.FastMath; + import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; 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 net.jafama.FastMath; + public class Sampler3D implements Sampler { private final ChunkInterpolator3D interpolator; private final ElevationInterpolator elevationInterpolator; - + public Sampler3D(int x, int z, BiomeProvider provider, World world, int elevationSmooth) { - this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler().getNoiseSeeded(coord, world.getSeed())); + this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler() + .getNoiseSeeded(coord, + world.getSeed())); this.elevationInterpolator = new ElevationInterpolator(world, x, z, provider, elevationSmooth); } - + @Override public double sample(double x, double y, double z) { return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); } - + @Override public double sample(int x, int y, int z) { return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java index e6c009a55..55d2a2dac 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java @@ -2,21 +2,22 @@ package com.dfsek.terra.addons.chunkgenerator.palette; import com.dfsek.terra.api.world.generator.Palette; + public class PaletteHolder { private final Palette[] palettes; private final int offset; - + protected PaletteHolder(Palette[] palettes, int offset) { this.palettes = palettes; this.offset = offset; } - + public Palette getPalette(int y) { int index = y + offset; return index >= 0 - ? index < palettes.length - ? palettes[index] - : palettes[palettes.length - 1] - : palettes[0]; + ? index < palettes.length + ? palettes[index] + : palettes[palettes.length - 1] + : palettes[0]; } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java index 485c03c9d..61042145b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java @@ -1,24 +1,26 @@ package com.dfsek.terra.addons.chunkgenerator.palette; -import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; import java.util.Map; import java.util.TreeMap; +import com.dfsek.terra.api.world.generator.Palette; + + public class PaletteHolderBuilder { private final TreeMap paletteMap = new TreeMap<>(); - + public PaletteHolderBuilder add(int y, Palette palette) { paletteMap.put(y, palette); return this; } - + public PaletteHolder build() { - + int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); - + Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { Palette d = null; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java index 61286fe69..bf0bc3bb5 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java @@ -3,12 +3,14 @@ package com.dfsek.terra.addons.chunkgenerator.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.world.generator.Palette; import java.lang.reflect.AnnotatedType; import java.util.List; import java.util.Map; +import com.dfsek.terra.api.world.generator.Palette; + + public class PaletteHolderLoader implements TypeLoader { @SuppressWarnings("unchecked") @Override diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java index 109da179b..fd7b331b7 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java @@ -3,32 +3,33 @@ package com.dfsek.terra.addons.chunkgenerator.palette; import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.world.generator.Palette; + public class PaletteInfo implements Properties { private final PaletteHolder paletteHolder; private final SlantHolder slantHolder; private final Palette ocean; - + private final int seaLevel; - + public PaletteInfo(PaletteHolder paletteHolder, SlantHolder slantHolder, Palette ocean, int seaLevel) { this.paletteHolder = paletteHolder; this.slantHolder = slantHolder; this.ocean = ocean; this.seaLevel = seaLevel; } - + public Palette getOcean() { return ocean; } - + public PaletteHolder getPaletteHolder() { return paletteHolder; } - + public SlantHolder getSlantHolder() { return slantHolder; } - + public int getSeaLevel() { return seaLevel; } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java index 3b8e3fc73..0845604dc 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java @@ -3,19 +3,20 @@ package com.dfsek.terra.addons.chunkgenerator.palette; import java.util.TreeMap; + public class SlantHolder { private final TreeMap layers; private final double minSlope; - + public SlantHolder(TreeMap layers, double minSlope) { this.layers = layers; this.minSlope = minSlope; } - + public PaletteHolder getPalette(double slope) { return layers.floorEntry(slope).getValue(); } - + public double getMinSlope() { return minSlope; } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java index 6b7e0a8b3..74869b9dc 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; + @SuppressWarnings("unchecked") public class SlantHolderLoader implements TypeLoader { @Override @@ -16,13 +17,13 @@ public class SlantHolderLoader implements TypeLoader { List> layers = (List>) o; TreeMap slantLayers = new TreeMap<>(); double minThreshold = Double.MAX_VALUE; - + for(Map layer : layers) { double threshold = ((Number) layer.get("threshold")).doubleValue(); if(threshold < minThreshold) minThreshold = threshold; slantLayers.put(threshold, configLoader.loadType(PaletteHolder.class, layer.get("palette"))); } - + return new SlantHolder(slantLayers, minThreshold); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index 832b00ccd..ac7a72943 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -11,22 +11,23 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; + @Addon("config-biome") @Author("Terra") @Version("1.0.0") public class BiomeAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); - event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); + event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); + }) + .failThrough(); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index d6cdb8416..4b7702d09 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -2,6 +2,9 @@ package com.dfsek.terra.addons.biome; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeLoader; + +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; @@ -10,32 +13,16 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.function.Supplier; public class BiomeConfigType implements ConfigType { + public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() { + }; private final BiomeFactory factory; - - public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() {}; - + public BiomeConfigType(ConfigPack pack) { this.factory = new BiomeFactory(pack); } - - @Override - public BiomeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new BiomeTemplate(pack, main); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return BIOME_TYPE_TOKEN; - } - + @Override public Supplier> registrySupplier(ConfigPack pack) { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { @@ -46,4 +33,19 @@ public class BiomeConfigType implements ConfigType { return obj; }); } + + @Override + public BiomeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new BiomeTemplate(pack, main); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeKey() { + return BIOME_TYPE_TOKEN; + } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index 0283c1d96..8f791fd22 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -5,17 +5,22 @@ import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; + public class BiomeFactory implements ConfigFactory { private final ConfigPack pack; - + public BiomeFactory(ConfigPack pack) { this.pack = pack; } - + @Override public TerraBiome build(BiomeTemplate template, TerraPlugin main) { - UserDefinedGenerationSettings generator = new UserDefinedGenerationSettings(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), template.getElevationWeight(), - template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); + UserDefinedGenerationSettings generator = new UserDefinedGenerationSettings(template.getNoiseEquation(), + template.getElevationEquation(), + template.getCarvingEquation(), template.getBiomeNoise(), + template.getElevationWeight(), + template.getBlendDistance(), template.getBlendStep(), + template.getBlendWeight()); return new UserDefinedBiome(template.getVanilla(), generator, template); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 0137ababb..0d864b212 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -5,6 +5,14 @@ import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -15,196 +23,191 @@ import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.generator.Palette; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -@SuppressWarnings({"FieldMayBeFinal", "unused"}) +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTemplate { private final ConfigPack pack; - + @Value("id") @Final private @Meta String id; - + @Value("extends") @Final @Default private List extended = Collections.emptyList(); - + @Value("variables") @Default private @Meta Map variables = new HashMap<>(); - + @Value("beta.carving.equation") @Default private @Meta NoiseSampler carvingEquation = NoiseSampler.zero(); - + @Value("vanilla") private @Meta ProbabilityCollection vanilla; - + @Value("biome-noise") @Default private @Meta NoiseSampler biomeNoise = NoiseSampler.zero(); - + @Value("blend.distance") @Default private @Meta int blendDistance = 3; - + @Value("blend.weight") @Default private @Meta double blendWeight = 1; - + @Value("blend.step") @Default private @Meta int blendStep = 4; - + @Value("noise") private @Meta NoiseSampler noiseEquation; - + @Value("ocean.level") @Default private @Meta int seaLevel = 62; - + @Value("elevation.equation") @Default private @Meta NoiseSampler elevationEquation = NoiseSampler.zero(); - + @Value("elevation.weight") @Default private @Meta double elevationWeight = 1; - + @Value("slabs.enable") @Default private @Meta boolean doSlabs = false; - + @Value("slabs.threshold") @Default private @Meta double slabThreshold = 0.0075D; - + @Value("slabs.palettes") @Default private @Meta Map<@Meta BlockType, @Meta Palette> slabPalettes; - + @Value("slabs.stair-palettes") @Default private @Meta Map<@Meta BlockType, @Meta Palette> stairPalettes; - + @Value("interpolate-elevation") @Default private @Meta boolean interpolateElevation = true; - + @Value("color") @Final @Default private @Meta int color = 0; - + @Value("tags") @Default private @Meta Set<@Meta String> tags = new HashSet<>(); - + @Value("colors") @Default - private @Meta Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). - + private @Meta Map colors = new HashMap<>(); + // Plain ol' map, so platforms can decide what to do with colors (if anything). + public BiomeTemplate(ConfigPack pack, TerraPlugin main) { this.pack = pack; } - - public List getExtended() { - return extended; - } - - public Set getTags() { - return tags; - } - - public Map getColors() { - return colors; - } - - public double getBlendWeight() { - return blendWeight; - } - - public int getColor() { - return color; - } - - public int getBlendDistance() { - return blendDistance; - } - + public boolean interpolateElevation() { return interpolateElevation; } - - public double getSlabThreshold() { - return slabThreshold; - } - + public boolean doSlabs() { return doSlabs; } - - public Map getSlabPalettes() { - return slabPalettes; - } - - public Map getStairPalettes() { - return stairPalettes; - } - - public NoiseSampler getBiomeNoise() { - return biomeNoise; - } - - public NoiseSampler getElevationEquation() { - return elevationEquation; - } - - public NoiseSampler getCarvingEquation() { - return carvingEquation; - } - - public ConfigPack getPack() { - return pack; - } - - public int getSeaLevel() { - return seaLevel; - } - - public String getID() { - return id; - } - - public ProbabilityCollection getVanilla() { - return vanilla; - } - - public NoiseSampler getNoiseEquation() { - return noiseEquation; - } - - public double getElevationWeight() { - return elevationWeight; - } - - public int getBlendStep() { - return blendStep; - } - - public Map getVariables() { - return variables; - } - + @Override public boolean validate() throws ValidationException { color |= 0xff000000; // Alpha adjustment return true; } + + public List getExtended() { + return extended; + } + + public Set getTags() { + return tags; + } + + public Map getColors() { + return colors; + } + + public double getBlendWeight() { + return blendWeight; + } + + public int getColor() { + return color; + } + + public int getBlendDistance() { + return blendDistance; + } + + public double getSlabThreshold() { + return slabThreshold; + } + + public Map getSlabPalettes() { + return slabPalettes; + } + + public Map getStairPalettes() { + return stairPalettes; + } + + public NoiseSampler getBiomeNoise() { + return biomeNoise; + } + + public NoiseSampler getElevationEquation() { + return elevationEquation; + } + + public NoiseSampler getCarvingEquation() { + return carvingEquation; + } + + public ConfigPack getPack() { + return pack; + } + + public int getSeaLevel() { + return seaLevel; + } + + public String getID() { + return id; + } + + public ProbabilityCollection getVanilla() { + return vanilla; + } + + public NoiseSampler getNoiseEquation() { + return noiseEquation; + } + + public double getElevationWeight() { + return elevationWeight; + } + + public int getBlendStep() { + return blendStep; + } + + public Map getVariables() { + return variables; + } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java index 20acac0df..7a94513a1 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BlankFunction.java @@ -3,23 +3,24 @@ package com.dfsek.terra.addons.biome; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; + public class BlankFunction implements DynamicFunction { private final int args; - + public BlankFunction(int args) { this.args = args; } - - @Override - public int getArgNumber() { - return args; - } - + @Override public double eval(double... d) { return 0; } - + + @Override + public int getArgNumber() { + return args; + } + @Override public boolean isStateless() { return true; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java index 500753950..5440ed440 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java @@ -4,13 +4,14 @@ import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.api.world.biome.PaletteSettings; import com.dfsek.terra.api.world.generator.Palette; + public class PaletteSettingsImpl implements PaletteSettings { private final PaletteHolder palette; - + public PaletteSettingsImpl(PaletteHolder palette) { this.palette = palette; } - + @Override public Palette getPalette(int y) { return palette.getPalette(y); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java index a26bf5601..d10b7c70f 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java @@ -1,12 +1,13 @@ package com.dfsek.terra.addons.biome; +import java.util.Set; + import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Set; /** * Class representing a config-defined biome @@ -18,9 +19,9 @@ public class UserDefinedBiome implements TerraBiome { private final BiomeTemplate config; private final int color; private final Set tags; - + private final Context context = new Context(); - + public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerationSettings gen, BiomeTemplate config) { this.vanilla = vanilla; this.gen = gen; @@ -30,7 +31,12 @@ public class UserDefinedBiome implements TerraBiome { this.tags = config.getTags(); tags.add("BIOME:" + id); } - + + @Override + public String toString() { + return "{BIOME:" + getID() + "}"; + } + /** * Gets the Vanilla biomes to represent the custom biome. * @@ -40,36 +46,31 @@ public class UserDefinedBiome implements TerraBiome { public ProbabilityCollection getVanillaBiomes() { return vanilla; } - - @Override - public String getID() { - return id; - } - - public BiomeTemplate getConfig() { - return config; - } - + @Override public GenerationSettings getGenerator() { return gen; } - + @Override public int getColor() { return color; } - + @Override public Set getTags() { return tags; } - + @Override - public String toString() { - return "{BIOME:" + getID() + "}"; + public String getID() { + return id; } - + + public BiomeTemplate getConfig() { + return config; + } + @Override public Context getContext() { return context; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java index b9ad1dd46..dbc5607b0 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java @@ -3,65 +3,67 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.GenerationSettings; -public class UserDefinedGenerationSettings implements GenerationSettings { +public class UserDefinedGenerationSettings implements GenerationSettings { + private final NoiseSampler noise; private final NoiseSampler elevation; private final NoiseSampler carving; - + private final NoiseSampler biomeNoise; private final double elevationWeight; private final int blendDistance; private final int blendStep; private final double blendWeight; - - public UserDefinedGenerationSettings(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) { + + public UserDefinedGenerationSettings(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, + double elevationWeight, int blendDistance, int blendStep, double blendWeight) { this.noise = noise; this.elevation = elevation; this.carving = carving; - + this.biomeNoise = biomeNoise; this.elevationWeight = elevationWeight; this.blendDistance = blendDistance; this.blendStep = blendStep; this.blendWeight = blendWeight; } - + @Override public NoiseSampler getBaseSampler() { return noise; } - + @Override public NoiseSampler getElevationSampler() { return elevation; } - + @Override public NoiseSampler getCarver() { return carving; } - + @Override public int getBlendDistance() { return blendDistance; } - + @Override public double getWeight() { return blendWeight; } - + @Override public NoiseSampler getBiomeNoise() { return biomeNoise; } - + @Override public double getElevationWeight() { return elevationWeight; } - + @Override public int getBlendStep() { return blendStep; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index c639d772d..22c41ac88 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -1,19 +1,21 @@ package com.dfsek.terra.addons.biome.command.biome; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Consumer; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import org.jetbrains.annotations.NotNull; -import java.util.function.Consumer; /** * Runnable that locates a biome asynchronously */ public class AsyncBiomeFinder implements Runnable { - + protected final BiomeProvider provider; protected final TerraBiome target; protected final int startRadius; @@ -24,8 +26,9 @@ public class AsyncBiomeFinder implements Runnable { protected final TerraPlugin main; private final Consumer callback; protected int searchSize = 1; - - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + + public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, + Consumer callback, TerraPlugin main) { this.provider = provider; this.target = target; this.main = main; @@ -36,35 +39,23 @@ public class AsyncBiomeFinder implements Runnable { this.world = world; this.callback = callback; } - - /** - * Helper method to get biome at location - * - * @param x X coordinate - * @param z Z coordinate - * @return TerraBiome at coordinates - */ - public boolean isValid(int x, int z, TerraBiome target) { - int res = main.getTerraConfig().getBiomeSearchResolution(); - return getProvider().getBiome(x * res, z * res, world.getSeed()).equals(target); - } - + public Vector3 finalizeVector(Vector3 orig) { return orig.multiply(main.getTerraConfig().getBiomeSearchResolution()); } - + @Override public void run() { int x = centerX; int z = centerZ; - + x /= searchSize; z /= searchSize; - + int run = 1; boolean toggle = true; boolean found = false; - + main: for(int i = startRadius; i < maxRadius; i++) { for(int j = 0; j < run; j++) { @@ -89,23 +80,36 @@ public class AsyncBiomeFinder implements Runnable { Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; callback.accept(finalSpawn); } - + + /** + * Helper method to get biome at location + * + * @param x X coordinate + * @param z Z coordinate + * + * @return TerraBiome at coordinates + */ + public boolean isValid(int x, int z, TerraBiome target) { + int res = main.getTerraConfig().getBiomeSearchResolution(); + return getProvider().getBiome(x * res, z * res, world.getSeed()).equals(target); + } + public TerraBiome getTarget() { return target; } - + public World getWorld() { return world; } - + public BiomeProvider getProvider() { return provider; } - + public int getSearchSize() { return searchSize; } - + public void setSearchSize(int searchSize) { this.searchSize = searchSize; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index a5eebad2b..ee9dc3cd4 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -12,18 +12,11 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + @Command( subcommands = { - @Subcommand( - value = "info", - aliases = {"i"}, - clazz = BiomeInfoCommand.class - ), - @Subcommand( - value = "locate", - aliases = {"l"}, - clazz = BiomeLocateCommand.class - ) + @Subcommand(value = "info", aliases = "i", clazz = BiomeInfoCommand.class), + @Subcommand(value = "locate", aliases = "l", clazz = BiomeLocateCommand.class) }, usage = "/terra biome" ) @@ -32,11 +25,11 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomeCommand implements CommandTemplate { @Inject private TerraPlugin main; - + @Override public void execute(CommandSender sender) { Player player = (Player) sender; - + BiomeProvider provider = player.world().getBiomeProvider(); UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position(), player.world().getSeed()); sender.sendMessage("You are standing in " + biome.getID()); diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java index 76d840cea..029c72aae 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java @@ -11,27 +11,24 @@ import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.world.biome.TerraBiome; -@Command( - arguments = { - @Argument( - value = "biome", - tabCompleter = BiomeTabCompleter.class, - argumentParser = BiomeArgumentParser.class - ) - } -) + +@Command(arguments = @Argument( + value = "biome", + tabCompleter = BiomeTabCompleter.class, + argumentParser = BiomeArgumentParser.class +)) public class BiomeInfoCommand implements CommandTemplate { @ArgumentTarget("biome") private TerraBiome biome; - + @Override public void execute(CommandSender sender) { sender.sendMessage("Biome info for \"" + biome.getID() + "\"."); sender.sendMessage("Vanilla biome: " + biome.getVanillaBiomes()); - + if(biome instanceof UserDefinedBiome) { BiomeTemplate bio = ((UserDefinedBiome) biome).getConfig(); - + if(bio.getExtended().size() == 0) { sender.sendMessage("No Parent Biomes"); } else { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java index 5e46575f3..79ecb290a 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.biome.command.biome; +import java.util.Locale; + import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; import com.dfsek.terra.api.TerraPlugin; @@ -18,58 +20,58 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.Locale; @PlayerCommand @WorldCommand -@Command( - arguments = { - @Argument( - value = "biome", - tabCompleter = BiomeTabCompleter.class, - argumentParser = BiomeArgumentParser.class - ), - @Argument( - value = "radius", - required = false, - defaultValue = "1000", - argumentParser = IntegerArgumentParser.class - ) - }, - switches = { - @Switch( - value = "teleport", - aliases = {"t", "tp"} - ) - } -) +@Command(arguments = { + @Argument( + value = "biome", + tabCompleter = BiomeTabCompleter.class, + argumentParser = BiomeArgumentParser.class + ), + @Argument( + value = "radius", + required = false, + defaultValue = "1000", + argumentParser = IntegerArgumentParser.class + ) +}, switches = @Switch( + value = "teleport", + aliases = { "t", "tp" } +)) public class BiomeLocateCommand implements CommandTemplate { - + @ArgumentTarget("radius") private Integer radius; - + @ArgumentTarget("biome") private TerraBiome biome; - + @SwitchTarget("teleport") private boolean teleport; - + @Inject private TerraPlugin main; - + @Override public void execute(CommandSender sender) { - + Player player = (Player) sender; - - new Thread(new AsyncBiomeFinder(player.world().getBiomeProvider(), biome, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { + + new Thread(new AsyncBiomeFinder(player.world().getBiomeProvider(), biome, + player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), + player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage( + String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), + location.getBlockX(), location.getBlockZ(), + location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask( + () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else sender.sendMessage("Unable to locate biome \"" + biome.getID() + "\""); }, main), "Biome Location Thread").start(); - + } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java index 065a4eef8..9370ce76d 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java @@ -7,10 +7,11 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; + public class BiomeArgumentParser implements ArgumentParser { @Inject private TerraPlugin main; - + @Override public TerraBiome parse(CommandSender sender, String arg) { Player player = (Player) sender; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java index c0338ddbf..e1ceb9f58 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.biome.command.biome.tab; +import java.util.List; +import java.util.stream.Collectors; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; @@ -7,16 +10,15 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; -import java.util.List; -import java.util.stream.Collectors; public class BiomeTabCompleter implements TabCompleter { @Inject private TerraPlugin main; - + @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return player.world().getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList()); + return player.world().getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect( + Collectors.toList()); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java index 7b0a76b01..ca16479df 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java @@ -2,21 +2,22 @@ package com.dfsek.terra.addons.biome.holder; import com.dfsek.terra.api.world.generator.Palette; + public class PaletteHolder { private final Palette[] palettes; private final int offset; - + protected PaletteHolder(Palette[] palettes, int offset) { this.palettes = palettes; this.offset = offset; } - + public Palette getPalette(int y) { int index = y + offset; return index >= 0 - ? index < palettes.length - ? palettes[index] - : palettes[palettes.length - 1] - : palettes[0]; + ? index < palettes.length + ? palettes[index] + : palettes[palettes.length - 1] + : palettes[0]; } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java index 8cf93760d..7ed5a7825 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java @@ -1,24 +1,26 @@ package com.dfsek.terra.addons.biome.holder; -import com.dfsek.terra.api.world.generator.Palette; import net.jafama.FastMath; import java.util.Map; import java.util.TreeMap; +import com.dfsek.terra.api.world.generator.Palette; + + public class PaletteHolderBuilder { private final TreeMap paletteMap = new TreeMap<>(); - + public PaletteHolderBuilder add(int y, Palette palette) { paletteMap.put(y, palette); return this; } - + public PaletteHolder build() { - + int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); - + Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { Palette d = null; diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java index 332c0bb44..3effd7037 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java @@ -3,13 +3,14 @@ package com.dfsek.terra.addons.biome.holder; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.world.generator.Palette; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.List; import java.util.Map; +import com.dfsek.terra.api.world.generator.Palette; + + public class PaletteHolderLoader implements TypeLoader { @SuppressWarnings("unchecked") @Override diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index e5d1f2160..5b9794c90 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -1,13 +1,5 @@ package com.dfsek.terra.addons.carver; -import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -18,43 +10,60 @@ import java.util.Collections; import java.util.List; import java.util.Random; -public class CarverCache { +import com.dfsek.terra.addons.carver.carving.Worm; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +public class CarverCache { + private final LoadingCache> cache; private final UserDefinedCarver carver; - + public CarverCache(World w, TerraPlugin main, UserDefinedCarver carver) { this.carver = carver; cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getCarverCacheSize()) - .build(new CacheLoader<>() { - @Override - public List load(@NotNull Long key) { - int chunkX = (int) (key >> 32); - int chunkZ = (int) key.longValue(); - BiomeProvider provider = w.getBiomeProvider(); - if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { - long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); - Random r = new Random(seed); - Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); - List points = new ArrayList<>(); - for(int i = 0; i < carving.getLength(); i++) { - carving.step(); - TerraBiome biome = provider.getBiome(carving.getRunning(), w.getSeed()); + .build(new CacheLoader<>() { + @Override + public List load(@NotNull Long key) { + int chunkX = (int) (key >> 32); + int chunkZ = (int) key.longValue(); + BiomeProvider provider = w.getBiomeProvider(); + if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random( + PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, + w.getSeed() + CarverCache.this.carver.hashCode())))) { + long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); + Random r = new Random(seed); + Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), + CarverCache.this.carver.getConfig() + .getHeight() + .get(r), + (chunkZ << 4) + r.nextInt(16))); + List points = new ArrayList<>(); + for(int i = 0; i < carving.getLength(); i++) { + carving.step(); + TerraBiome biome = provider.getBiome(carving.getRunning(), w.getSeed()); /* - if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop if we enter a biome this carver is not present in + if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop + if we enter a biome this carver is not present in return Collections.emptyList(); } */ - points.add(carving.getPoint()); - } - return points; - } - return Collections.emptyList(); - } - }); + points.add(carving.getPoint()); + } + return points; + } + return Collections.emptyList(); + } + }); } - + public List getPoints(int chunkX, int chunkZ) { return cache.getUnchecked(MathUtil.squash(chunkX, chunkZ)); } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java index 47a64eb2b..32cba0c18 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java @@ -3,30 +3,33 @@ package com.dfsek.terra.addons.carver; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.exception.LoadException; + +import java.util.Arrays; +import java.util.List; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.MathUtil; -import java.util.Arrays; -import java.util.List; public class CarverFactory implements ConfigFactory { private final ConfigPack pack; - + public CarverFactory(ConfigPack pack) { this.pack = pack; } - + @Override public UserDefinedCarver build(CarverTemplate config, TerraPlugin main) throws LoadException { - double[] start = new double[] {config.getStartX(), config.getStartY(), config.getStartZ()}; - double[] mutate = new double[] {config.getMutateX(), config.getMutateY(), config.getMutateZ()}; + double[] start = { config.getStartX(), config.getStartY(), config.getStartZ() }; + double[] mutate = { config.getMutateX(), config.getMutateY(), config.getMutateZ() }; List radius = Arrays.asList(config.getRadMX(), config.getRadMY(), config.getRadMZ()); long hash = MathUtil.hashToLong(config.getID()); UserDefinedCarver carver; try { - carver = new UserDefinedCarver(config.getHeight(), config.getLength(), start, mutate, radius, new Scope(), hash, config.getCutTop(), config.getCutBottom(), config, main); + carver = new UserDefinedCarver(config.getHeight(), config.getLength(), start, mutate, radius, new Scope(), hash, + config.getCutTop(), config.getCutBottom(), config, main); } catch(ParseException e) { throw new LoadException("Unable to parse radius equations", e); } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index 6ebf2f49a..8920ebff8 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -1,52 +1,54 @@ package com.dfsek.terra.addons.carver; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import net.jafama.FastMath; import java.util.Map; import java.util.TreeMap; -@SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + +@SuppressWarnings({ "unchecked", "rawtypes", "RedundantSuppression" }) public class CarverPalette { private final boolean blacklist; private final MaterialSet replace; private final TreeMap> map = new TreeMap<>(); private ProbabilityCollection[] layers; private int offset = 0; - + public CarverPalette(MaterialSet replaceable, boolean blacklist) { this.blacklist = blacklist; this.replace = replaceable; } - + public CarverPalette add(ProbabilityCollection collection, int y) { map.put(y, collection); return this; } - + public ProbabilityCollection get(int y) { int index = y + offset; return index >= 0 - ? index < layers.length - ? layers[index] - : layers[layers.length - 1] - : layers[0]; + ? index < layers.length + ? layers[index] + : layers[layers.length - 1] + : layers[0]; } - + public boolean canReplace(BlockType material) { return blacklist != replace.contains(material); } - + /** * Build the palette to an array. */ public void build() { int min = FastMath.min(map.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(map.keySet().stream().max(Integer::compareTo).orElse(255), 255); - + layers = new ProbabilityCollection[map.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { ProbabilityCollection d = null; diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index 1ae81d0e2..b1f20f6f3 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -4,6 +4,10 @@ package com.dfsek.terra.addons.carver; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; + +import java.util.HashMap; +import java.util.Map; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; @@ -11,176 +15,174 @@ import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; -import java.util.HashMap; -import java.util.Map; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class CarverTemplate implements AbstractableTemplate { @Value("id") @Final private String id; - + @Value("step") @Default private @Meta int step = 2; - + @Value("recalculate-magnitude") @Default private @Meta double recaclulateMagnitude = 4; - + @Value("recalculate-direction") @Default private @Meta Range recalc = new ConstantRange(8, 10); - + @Value("length") private @Meta Range length; - + @Value("start.x") private @Meta double startX; - + @Value("start.y") private @Meta double startY; - + @Value("start.z") private @Meta double startZ; - + @Value("start.radius.x") private @Meta String radMX; - + @Value("start.radius.y") private @Meta String radMY; - + @Value("start.radius.z") private @Meta String radMZ; - + @Value("start.height") private @Meta Range height; - + @Value("cut.bottom") @Default private @Meta int cutBottom = 0; - + @Value("cut.top") @Default private @Meta int cutTop = 0; - + @Value("mutate.x") private @Meta double mutateX; - + @Value("mutate.y") private @Meta double mutateY; - + @Value("mutate.z") private @Meta double mutateZ; - + @Value("palette.top") private @Meta CarverPalette top; - + @Value("palette.bottom") private @Meta CarverPalette bottom; - + @Value("palette.outer") private @Meta CarverPalette outer; - + @Value("palette.inner") private @Meta CarverPalette inner; - + @Value("shift") @Default private @Meta Map<@Meta BlockType, @Meta MaterialSet> shift = new HashMap<>(); - + @Value("update") @Default private @Meta MaterialSet update = new MaterialSet(); - + public String getID() { return id; } - + public int getStep() { return step; } - + public Range getLength() { return length; } - + public double getStartX() { return startX; } - + public double getStartY() { return startY; } - + public double getStartZ() { return startZ; } - + public String getRadMX() { return radMX; } - + public String getRadMY() { return radMY; } - + public String getRadMZ() { return radMZ; } - + public Range getHeight() { return height; } - + public int getCutBottom() { return cutBottom; } - + public int getCutTop() { return cutTop; } - + public double getMutateX() { return mutateX; } - + public double getMutateY() { return mutateY; } - + public double getMutateZ() { return mutateZ; } - + public CarverPalette getTop() { return top; } - + public CarverPalette getBottom() { return bottom; } - + public CarverPalette getOuter() { return outer; } - + public CarverPalette getInner() { return inner; } - + public Map getShift() { return shift; } - + public MaterialSet getUpdate() { return update; } - + public Range getRecalc() { return recalc; } - + public double getRecaclulateMagnitude() { return recaclulateMagnitude; } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index bf9398586..8380421ac 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -1,5 +1,11 @@ package com.dfsek.terra.addons.carver; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -11,20 +17,17 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GenerationStage; -import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; public class CavePopulator implements GenerationStage, Chunkified { - private static final Map shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. + private static final Map shiftStorage = new HashMap<>(); + // Persist BlockData created for shifts, to avoid re-calculating each time. private final TerraPlugin main; - + public CavePopulator(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { @@ -32,7 +35,7 @@ public class CavePopulator implements GenerationStage, Chunkified { Random random = PopulationUtil.getRandom(chunk); WorldConfig config = world.getConfig(); if(config.disableCarving()) return; - + for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { CarverTemplate template = c.getConfig(); Map shiftCandidate = new HashMap<>(); @@ -43,25 +46,29 @@ public class CavePopulator implements GenerationStage, Chunkified { switch(type) { case CENTER: if(template.getInner().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), + template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case WALL: if(template.getOuter().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), + template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case TOP: if(template.getTop().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), + template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; case BOTTOM: if(template.getBottom().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); + chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), + template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); } break; @@ -73,16 +80,19 @@ public class CavePopulator implements GenerationStage, Chunkified { Vector3 mut = l.clone(); BlockState orig = chunk.getBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); do mut.subtract(0, 1, 0); - while(mut.getY() > world.getMinHeight() && chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches(orig)); + while(mut.getY() > world.getMinHeight() && chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches( + orig)); try { - if(template.getShift().get(entry.getValue().getBlockType()).contains(chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { - chunk.setBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); + if(template.getShift().get(entry.getValue().getBlockType()).contains( + chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { + chunk.setBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), + shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); } } catch(NullPointerException ignored) { } } } - + } } } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 7270e4f53..6d62b4fa7 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -4,13 +4,6 @@ import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.terra.addons.carver.carving.Carver; -import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.List; @@ -19,6 +12,15 @@ import java.util.Random; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; +import com.dfsek.terra.addons.carver.carving.Carver; +import com.dfsek.terra.addons.carver.carving.Worm; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; + + public class UserDefinedCarver extends Carver { private final double[] start; // 0, 1, 2 = x, y, z. private final double[] mutate; // 0, 1, 2 = x, y, z. 3 = radius. @@ -30,14 +32,15 @@ public class UserDefinedCarver extends Carver { private final Expression xRad; private final Expression yRad; private final Expression zRad; - + private final Map cacheMap = new ConcurrentHashMap<>(); private final TerraPlugin main; private double step = 2; private Range recalc = new ConstantRange(8, 10); private double recalcMagnitude = 3; - - public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, int topCut, int bottomCut, CarverTemplate config, TerraPlugin main) throws ParseException { + + public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, + int topCut, int bottomCut, CarverTemplate config, TerraPlugin main) throws ParseException { super(height.getMin(), height.getMax()); this.length = length; this.start = start; @@ -47,41 +50,27 @@ public class UserDefinedCarver extends Carver { this.bottomCut = bottomCut; this.config = config; this.main = main; - + Parser p = new Parser(); - + Scope s = new Scope().withParent(parent); - - + + s.addInvocationVariable("x"); s.addInvocationVariable("y"); s.addInvocationVariable("z"); - + s.addInvocationVariable("length"); s.addInvocationVariable("position"); s.addInvocationVariable("seed"); - - + + xRad = p.parse(radii.get(0), s); yRad = p.parse(radii.get(1), s); zRad = p.parse(radii.get(2), s); - + } - - @Override - public Worm getWorm(long l, Vector3 vector) { - Random r = new Random(l + hash); - return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut, l); - } - - public void setStep(double step) { - this.step = step; - } - - public void setRecalc(Range recalc) { - this.recalc = recalc; - } - + @Override public void carve(int chunkX, int chunkZ, World w, BiConsumer consumer) { synchronized(cacheMap) { @@ -91,7 +80,8 @@ public class UserDefinedCarver extends Carver { for(int z = chunkZ - carvingRadius; z <= chunkZ + carvingRadius; z++) { cache.getPoints(x, z).forEach(point -> { Vector3 origin = point.getOrigin(); - if(FastMath.floorDiv(origin.getBlockX(), 16) != chunkX && FastMath.floorDiv(origin.getBlockZ(), 16) != chunkZ) // We only want to carve this chunk. + if(FastMath.floorDiv(origin.getBlockX(), 16) != chunkX && FastMath.floorDiv(origin.getBlockZ(), 16) != + chunkZ) // We only want to carve this chunk. return; point.carve(chunkX, chunkZ, consumer, w); }); @@ -99,24 +89,39 @@ public class UserDefinedCarver extends Carver { } } } - - public void setRecalcMagnitude(double recalcMagnitude) { - this.recalcMagnitude = recalcMagnitude; + + @Override + public Worm getWorm(long l, Vector3 vector) { + Random r = new Random(l + hash); + return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut, l); } - + @Override public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { - /*BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)).getConfig(); + /*BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)) + .getConfig(); if(conf.getCarvers().get(this) != null) { return new Random(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); }*/ return false; } - + + public void setRecalc(Range recalc) { + this.recalc = recalc; + } + + public void setRecalcMagnitude(double recalcMagnitude) { + this.recalcMagnitude = recalcMagnitude; + } + + public void setStep(double step) { + this.step = step; + } + public CarverTemplate getConfig() { return config; } - + private class UserDefinedWorm extends Worm { private final Vector3 direction; private final Vector3 origin; @@ -124,41 +129,44 @@ public class UserDefinedCarver extends Carver { private int steps; private int nextDirection = 0; private double[] currentRotation = new double[3]; - + public UserDefinedWorm(int length, Random r, Vector3 origin, int topCut, int bottomCut, long seed) { super(length, r, origin); this.origin = origin; this.seed = seed; super.setTopCut(topCut); super.setBottomCut(bottomCut); - direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); - double[] args = {origin.getX(), origin.getY(), origin.getZ(), length, 0, seed}; - setRadius(new int[] {(int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args))}); + direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], + (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); + double[] args = { origin.getX(), origin.getY(), origin.getZ(), length, 0, seed }; + setRadius(new int[]{ (int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args)) }); } - - @Override - public WormPoint getPoint() { - return new WormPoint(getRunning().clone(), getRadius(), config.getCutTop(), config.getCutBottom()); - } - + @Override public void step() { if(steps == nextDirection) { direction.rotateAroundX(FastMath.toRadians((getRandom().nextGaussian()) * mutate[0] * recalcMagnitude)); direction.rotateAroundY(FastMath.toRadians((getRandom().nextGaussian()) * mutate[1] * recalcMagnitude)); direction.rotateAroundZ(FastMath.toRadians((getRandom().nextGaussian()) * mutate[2] * recalcMagnitude)); - currentRotation = new double[] {(getRandom().nextGaussian()) * mutate[0], + currentRotation = new double[]{ + (getRandom().nextGaussian()) * mutate[0], (getRandom().nextGaussian()) * mutate[1], - (getRandom().nextGaussian()) * mutate[2]}; + (getRandom().nextGaussian()) * mutate[2] + }; nextDirection += recalc.get(getRandom()); } steps++; - double[] args = {origin.getX(), origin.getY(), origin.getZ(), getLength(), steps, seed}; - setRadius(new int[] {(int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args))}); + double[] args = { origin.getX(), origin.getY(), origin.getZ(), getLength(), steps, seed }; + setRadius(new int[]{ (int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args)) }); direction.rotateAroundX(FastMath.toRadians(currentRotation[0] * mutate[0])); direction.rotateAroundY(FastMath.toRadians(currentRotation[1] * mutate[1])); direction.rotateAroundZ(FastMath.toRadians(currentRotation[2] * mutate[2])); getRunning().add(direction); } + + @Override + public WormPoint getPoint() { + return new WormPoint(getRunning().clone(), getRadius(), config.getCutTop(), config.getCutBottom()); + } } } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java index 3759ff174..15f4687c2 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java @@ -1,38 +1,43 @@ package com.dfsek.terra.addons.carver.carving; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.Random; import java.util.function.BiConsumer; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; + + public abstract class Carver { private final int minY; private final int maxY; private final double sixtyFourSq = FastMath.pow(64, 2); private int carvingRadius = 4; - + public Carver(int minY, int maxY) { this.minY = minY; this.maxY = maxY; } - + public abstract void carve(int chunkX, int chunkZ, World w, BiConsumer consumer); - + public int getCarvingRadius() { return carvingRadius; } - + public void setCarvingRadius(int carvingRadius) { this.carvingRadius = carvingRadius; } - + public abstract Worm getWorm(long seed, Vector3 l); - + public abstract boolean isChunkCarved(World w, int chunkX, int chunkZ, Random r); - + public enum CarvingType { - CENTER, WALL, TOP, BOTTOM + CENTER, + WALL, + TOP, + BOTTOM } } diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java index 00d1fc0f2..727bce285 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java @@ -1,12 +1,14 @@ package com.dfsek.terra.addons.carver.carving; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.World; import net.jafama.FastMath; import java.util.Random; import java.util.function.BiConsumer; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; + + public abstract class Worm { private final Random r; private final Vector3 origin; @@ -14,78 +16,73 @@ public abstract class Worm { private final int length; private int topCut = 0; private int bottomCut = 0; - private int[] radius = new int[] {0, 0, 0}; - + private int[] radius = { 0, 0, 0 }; + public Worm(int length, Random r, Vector3 origin) { this.r = r; this.length = length; this.origin = origin; this.running = origin; } - + + public abstract void step(); + public void setBottomCut(int bottomCut) { this.bottomCut = bottomCut; } - + public void setTopCut(int topCut) { this.topCut = topCut; } - + public Vector3 getOrigin() { return origin; } - + public int getLength() { return length; } - + public Vector3 getRunning() { return running; } - + public WormPoint getPoint() { return new WormPoint(running, radius, topCut, bottomCut); } - + public int[] getRadius() { return radius; } - + public void setRadius(int[] radius) { this.radius = radius; } - + public Random getRandom() { return r; } - - public abstract void step(); - + + public static class WormPoint { private final Vector3 origin; private final int topCut; private final int bottomCut; private final int[] rad; - + public WormPoint(Vector3 origin, int[] rad, int topCut, int bottomCut) { this.origin = origin; this.rad = rad; this.topCut = topCut; this.bottomCut = bottomCut; } - + private static double ellipseEquation(int x, int y, int z, double xr, double yr, double zr) { - return (FastMath.pow2(x) / FastMath.pow2(xr + 0.5D)) + (FastMath.pow2(y) / FastMath.pow2(yr + 0.5D)) + (FastMath.pow2(z) / FastMath.pow2(zr + 0.5D)); + return (FastMath.pow2(x) / FastMath.pow2(xr + 0.5D)) + (FastMath.pow2(y) / FastMath.pow2(yr + 0.5D)) + (FastMath.pow2(z) / + FastMath.pow2( + zr + 0.5D)); } - - public Vector3 getOrigin() { - return origin; - } - - public int getRadius(int index) { - return rad[index]; - } - + public void carve(int chunkX, int chunkZ, BiConsumer consumer, World world) { int xRad = getRadius(0); int yRad = getRadius(1); @@ -101,8 +98,10 @@ public abstract class Worm { if(position.getY() < world.getMinHeight() || position.getY() > world.getMaxHeight()) continue; double eq = ellipseEquation(x, y, z, xRad, yRad, zRad); if(eq <= 1 && - y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { - consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), Carver.CarvingType.CENTER); + y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { + consumer.accept( + new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), + Carver.CarvingType.CENTER); } else if(eq <= 1.5) { Carver.CarvingType type = Carver.CarvingType.WALL; if(y <= -yRad - 1 + bottomCut) { @@ -110,11 +109,21 @@ public abstract class Worm { } else if(y >= yRad + 1 - topCut) { type = Carver.CarvingType.TOP; } - consumer.accept(new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), type); + consumer.accept( + new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), + type); } } } } } + + public Vector3 getOrigin() { + return origin; + } + + public int getRadius(int index) { + return rad[index]; + } } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 07fb8295c..6c4538fb8 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -1,6 +1,9 @@ package com.dfsek.terra.addons.feature.distributor; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + import com.dfsek.terra.addons.feature.distributor.config.AndDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.OrDistributorTemplate; @@ -19,31 +22,32 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.function.Supplier; @Addon("config-distributors") @Version("1.0.0") @Author("Terra") public class DistributorAddon extends TerraAddon { - public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; + public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() { + }; @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); - distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); - distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); - distributorRegistry.register("AND", AndDistributorTemplate::new); - distributorRegistry.register("OR", OrDistributorTemplate::new); - - event.getPack() - .applyLoader(Point.class, PointTemplate::new); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry( + DISTRIBUTOR_TOKEN); + distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); + distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); + distributorRegistry.register("AND", AndDistributorTemplate::new); + distributorRegistry.register("OR", OrDistributorTemplate::new); + + event.getPack() + .applyLoader(Point.class, PointTemplate::new); + }) + .failThrough(); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java index cbc0c1ba5..55d973f3f 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java @@ -4,16 +4,18 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; -import java.util.List; public class AndDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("distributors") private @Meta List<@Meta Distributor> distributors; - - + + @Override public Distributor get() { Distributor current = distributors.remove(0); @@ -22,7 +24,7 @@ public class AndDistributorTemplate implements ObjectTemplate, Vali } return current; } - + @Override public boolean validate() throws ValidationException { if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java index 1982d71b2..67cf37ee9 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java @@ -3,19 +3,20 @@ package com.dfsek.terra.addons.feature.distributor.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; -public class NoiseDistributorTemplate implements ObjectTemplate { - @Value("distribution") - private @Meta NoiseSampler noise; +public class NoiseDistributorTemplate implements ObjectTemplate { @Value("threshold") @Default - private @Meta double threshold = 0; - + private final @Meta double threshold = 0; + @Value("distribution") + private @Meta NoiseSampler noise; + @Override public Distributor get() { return new NoiseDistributor(noise, threshold); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java index 292ebffbe..3a8aa26c3 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java @@ -4,16 +4,18 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; -import java.util.List; public class OrDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("distributors") private @Meta List<@Meta Distributor> distributors; - - + + @Override public Distributor get() { Distributor current = distributors.remove(0); @@ -22,7 +24,7 @@ public class OrDistributorTemplate implements ObjectTemplate, Valid } return current; } - + @Override public boolean validate() throws ValidationException { if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java index 5def1904b..da61112a7 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java @@ -2,17 +2,19 @@ package com.dfsek.terra.addons.feature.distributor.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.Set; + import com.dfsek.terra.addons.feature.distributor.distributors.PointSetDistributor; import com.dfsek.terra.addons.feature.distributor.util.Point; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Distributor; -import java.util.Set; public class PointSetDistributorTemplate implements ObjectTemplate { @Value("points") private @Meta Set<@Meta Point> points; - + @Override public Distributor get() { return new PointSetDistributor(points); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java index 876beb2aa..8303c2288 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java @@ -3,15 +3,17 @@ package com.dfsek.terra.addons.feature.distributor.distributors; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Distributor; + public class NoiseDistributor implements Distributor { private final NoiseSampler sampler; - + private final double threshold; + public NoiseDistributor(NoiseSampler sampler, double threshold) { this.sampler = sampler; this.threshold = threshold; } - + @Override public boolean matches(int x, int z, long seed) { return sampler.getNoiseSeeded(seed, x, z) > threshold; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java index 78f514513..5508ebe8f 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java @@ -1,17 +1,18 @@ package com.dfsek.terra.addons.feature.distributor.distributors; +import java.util.Set; + import com.dfsek.terra.addons.feature.distributor.util.Point; import com.dfsek.terra.api.structure.feature.Distributor; -import java.util.Set; public class PointSetDistributor implements Distributor { private final Set points; - + public PointSetDistributor(Set points) { this.points = points; } - + @Override public boolean matches(int x, int z, long seed) { return points.contains(new Point(x, z)); diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java index cd7063db2..973f1c8d1 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java @@ -3,28 +3,28 @@ package com.dfsek.terra.addons.feature.distributor.util; public class Point { private final int x; private final int z; - + private final int hash; - + public Point(int x, int z) { this.x = x; this.z = z; this.hash = 31 * x + z; } - + public int getX() { return x; } - + public int getZ() { return z; } - + @Override public int hashCode() { return hash; } - + @Override public boolean equals(Object obj) { if(!(obj instanceof Point)) return false; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java index cd208a059..864b5168f 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java @@ -2,15 +2,17 @@ package com.dfsek.terra.addons.feature.distributor.util; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; + public class PointTemplate implements ObjectTemplate { @Value("x") private @Meta int x; - + @Value("z") private @Meta int z; - + @Override public Point get() { return new Point(x, z); diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java index c3c5cae2d..8fe4eab9e 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java @@ -8,30 +8,32 @@ import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.World; + public class ConfiguredFeature implements Feature { private final ProbabilityCollection structures; - + private final NoiseSampler structureSelector; private final Distributor distributor; private final Locator locator; - - public ConfiguredFeature(ProbabilityCollection structures, NoiseSampler structureSelector, Distributor distributor, Locator locator) { + + public ConfiguredFeature(ProbabilityCollection structures, NoiseSampler structureSelector, Distributor distributor, + Locator locator) { this.structures = structures; this.structureSelector = structureSelector; this.distributor = distributor; this.locator = locator; } - + @Override public Structure getStructure(World world, int x, int y, int z) { return structures.get(structureSelector, x, y, z, world.getSeed()); } - + @Override public Distributor getDistributor() { return distributor; } - + @Override public Locator getLocator() { return locator; diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 871476727..da464a4c6 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -9,19 +9,20 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; + @Addon("config-feature") @Version("1.0.0") @Author("Terra") public class FeatureAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 2)) + .failThrough(); } } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java index 7a02bd640..7ba0f5e86 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.feature; +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; @@ -8,30 +10,30 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.structure.feature.Feature; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.function.Supplier; public class FeatureConfigType implements ConfigType { - public static final TypeKey FEATURE_TYPE_KEY = new TypeKey<>() {}; - + public static final TypeKey FEATURE_TYPE_KEY = new TypeKey<>() { + }; + private final FeatureFactory factory = new FeatureFactory(); - - @Override - public FeatureTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new FeatureTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return FEATURE_TYPE_KEY; - } - + @Override public Supplier> registrySupplier(ConfigPack pack) { return pack.getRegistryFactory()::create; } + + @Override + public FeatureTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new FeatureTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeKey() { + return FEATURE_TYPE_KEY; + } } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java index 83f07ecc5..121a196ec 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java @@ -1,10 +1,12 @@ package com.dfsek.terra.addons.feature; import com.dfsek.tectonic.exception.LoadException; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.feature.Feature; + public class FeatureFactory implements ConfigFactory { @Override public Feature build(FeatureTemplate config, TerraPlugin main) throws LoadException { diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java index 7deaaa2fc..1357987a2 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.feature; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; + import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @@ -11,40 +11,41 @@ import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.collection.ProbabilityCollection; + public class FeatureTemplate implements AbstractableTemplate { @Value("id") @Final private String id; - + @Value("distributor") private @Meta Distributor distributor; - + @Value("locator") private @Meta Locator locator; - + @Value("structures.distribution") private @Meta NoiseSampler structureNoise; - + @Value("structures.structures") private @Meta ProbabilityCollection structures; - + @Override public String getID() { return id; } - + public Distributor getDistributor() { return distributor; } - + public Locator getLocator() { return locator; } - + public NoiseSampler getStructureNoise() { return structureNoise; } - + public ProbabilityCollection getStructures() { return structures; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index e696ab249..8048e6595 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -11,22 +11,23 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; + @Addon("config-flora") @Author("Terra") @Version("0.1.0") public class FloraAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); - event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); + event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); + }) + .failThrough(); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index c17a604ba..77c2eaf7c 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.flora; +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; @@ -8,30 +10,29 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.Flora; -import java.util.function.Supplier; public class FloraConfigType implements ConfigType { + public static final TypeKey FLORA_TYPE_TOKEN = new TypeKey<>() { + }; private final FloraFactory factory = new FloraFactory(); - - public static final TypeKey FLORA_TYPE_TOKEN = new TypeKey<>(){}; - - @Override - public FloraTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new FloraTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return FLORA_TYPE_TOKEN; - } - + @Override public Supplier> registrySupplier(ConfigPack pack) { return pack.getRegistryFactory()::create; } + + @Override + public FloraTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new FloraTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeKey() { + return FLORA_TYPE_TOKEN; + } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index e04f6cd0b..88b6ebcd9 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -5,9 +5,12 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Flora; + public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution()); + return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), + config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), + config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution()); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index dad47d26b..f58d64341 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -3,6 +3,9 @@ package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; + +import java.util.List; + import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -10,108 +13,107 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.MaterialSet; -import java.util.List; -@SuppressWarnings({"FieldMayBeFinal", "unused"}) +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class FloraTemplate implements AbstractableTemplate { @Value("id") @Final private String id; - + @Value("spawnable") private @Meta MaterialSet spawnable; - + @Value("spawn-blacklist") @Default private @Meta boolean spawnBlacklist = false; - - + + @Value("replaceable") @Default private @Meta MaterialSet replaceable = MaterialSet.empty(); - + @Value("irrigable") @Default - private @Meta MaterialSet irrigable = null; - + private @Meta MaterialSet irrigable; + @Value("rotatable") @Default private @Meta MaterialSet rotatable = MaterialSet.empty(); - + @Value("physics") @Default private @Meta boolean doPhysics = false; - + @Value("ceiling") @Default private @Meta boolean ceiling = false; - + @Value("search") @Default private TerraFlora.@Meta Search search = TerraFlora.Search.UP; - + @Value("max-placements") @Default private @Meta int maxPlacements = -1; - + @Value("irrigable-offset") @Default private @Meta int irrigableOffset; - + @Value("layers") private @Meta List<@Meta BlockLayer> layers; - + @Value("layer-distribution") private @Meta NoiseSampler noiseDistribution; - - public NoiseSampler getNoiseDistribution() { - return noiseDistribution; - } - - public List getLayers() { - return layers; - } - - public int getIrrigableOffset() { - return irrigableOffset; - } - - public TerraFlora.Search getSearch() { - return search; - } - - public int getMaxPlacements() { - return maxPlacements; - } - - public MaterialSet getReplaceable() { - return replaceable; - } - - public MaterialSet getSpawnable() { - return spawnable; - } - - public MaterialSet getIrrigable() { - return irrigable; - } - - public String getID() { - return id; - } - + public boolean doPhysics() { return doPhysics; } - + + public NoiseSampler getNoiseDistribution() { + return noiseDistribution; + } + + public List getLayers() { + return layers; + } + + public int getIrrigableOffset() { + return irrigableOffset; + } + + public TerraFlora.Search getSearch() { + return search; + } + + public int getMaxPlacements() { + return maxPlacements; + } + + public MaterialSet getReplaceable() { + return replaceable; + } + + public MaterialSet getSpawnable() { + return spawnable; + } + + public MaterialSet getIrrigable() { + return irrigable; + } + + public String getID() { + return id; + } + public boolean isCeiling() { return ceiling; } - + public boolean isSpawnBlacklist() { return spawnBlacklist; } - + public MaterialSet getRotatable() { return rotatable; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java index 184a6fb3d..13673d93f 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java @@ -2,18 +2,20 @@ package com.dfsek.terra.addons.flora.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; + public class BlockLayerTemplate implements ObjectTemplate { @Value("layers") private @Meta int layers; - + @Value("materials") private @Meta ProbabilityCollection data; - + @Override public BlockLayer get() { return new BlockLayer(layers, data); diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java index 7ebb1adcb..75b16529a 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java @@ -3,19 +3,20 @@ package com.dfsek.terra.addons.flora.flora.gen; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.collection.ProbabilityCollection; + public class BlockLayer { private final int layers; private final ProbabilityCollection blocks; - + public BlockLayer(int layers, ProbabilityCollection blocks) { this.layers = layers; this.blocks = blocks; } - + public int getLayers() { return layers; } - + public ProbabilityCollection getBlocks() { return blocks; } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java index 6563f09ef..eb778728a 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java @@ -1,6 +1,12 @@ package com.dfsek.terra.addons.flora.flora.gen; -import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; +import net.jafama.FastMath; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.List; +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; @@ -13,38 +19,35 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.World; -import net.jafama.FastMath; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; -import java.util.Random; public class TerraFlora implements Flora { private final List> layers; private final boolean physics; private final boolean ceiling; - + private final MaterialSet irrigable; - + private final MaterialSet spawnable; private final MaterialSet replaceable; - + private final MaterialSet testRotation; - + private final int maxPlacements; - + private final Search search; - + private final boolean spawnBlacklist; - + private final int irrigableOffset; - + private final TerraPlugin main; - + private final NoiseSampler distribution; - - public TerraFlora(List layers, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, int irrigableOffset, TerraPlugin main, NoiseSampler distribution) { + + public TerraFlora(List layers, boolean physics, boolean ceiling, MaterialSet irrigable, MaterialSet spawnable, + MaterialSet replaceable, MaterialSet testRotation, int maxPlacements, Search search, boolean spawnBlacklist, + int irrigableOffset, TerraPlugin main, NoiseSampler distribution) { this.physics = physics; this.testRotation = testRotation; this.spawnBlacklist = spawnBlacklist; @@ -57,7 +60,7 @@ public class TerraFlora implements Flora { this.irrigableOffset = irrigableOffset; this.main = main; this.distribution = distribution; - + this.layers = new ArrayList<>(); layers.forEach(layer -> { for(int i = 0; i < layer.getLayers(); i++) { @@ -65,7 +68,35 @@ public class TerraFlora implements Flora { } }); } - + + @Override + public boolean plant(Vector3 location, World world) { + boolean doRotation = testRotation.size() > 0; + int size = layers.size(); + int c = ceiling ? -1 : 1; + + EnumSet faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : EnumSet.noneOf(Direction.class); + if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. + + for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor + int lvl = (FastMath.abs(i)); + BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), + location.getZ(), world.getSeed()).clone(); + if(doRotation) { + Direction oneFace = new ArrayList<>(faces).get( + new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. + + data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) + .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) + .setIfPresent(Properties.SOUTH, faces.contains(Direction.SOUTH)) + .setIfPresent(Properties.EAST, faces.contains(Direction.EAST)) + .setIfPresent(Properties.WEST, faces.contains(Direction.WEST)); + } + world.setBlockData(location.clone().add(0, i + c, 0), data, physics); + } + return true; + } + @Override public List getValidSpawnsAt(Chunk chunk, int x, int z, Range range) { int size = layers.size(); @@ -76,14 +107,17 @@ public class TerraFlora implements Flora { for(int y : range) { if(y > 255 || y < 0) continue; current = current.add(0, search.equals(Search.UP) ? 1 : -1, 0); - if((spawnBlacklist != spawnable.contains(chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated(current.clone().add(cx, irrigableOffset, cz), chunk.getWorld()) && valid(size, current.clone().add(cx, 0, cz), chunk.getWorld())) { + if((spawnBlacklist != spawnable.contains( + chunk.getBlock(current.getBlockX(), current.getBlockY(), current.getBlockZ()).getBlockType())) && isIrrigated( + current.clone().add(cx, irrigableOffset, cz), chunk.getWorld()) && valid(size, current.clone().add(cx, 0, cz), + chunk.getWorld())) { blocks.add(current.clone()); if(maxPlacements > 0 && blocks.size() >= maxPlacements) break; } } return blocks; } - + private boolean valid(int size, Vector3 block, World world) { for(int i = 0; i < size; i++) { // Down if ceiling, up if floor if(block.getY() + 1 > 255 || block.getY() < 0) return false; @@ -92,45 +126,25 @@ public class TerraFlora implements Flora { } return true; } - + + private void test(EnumSet faces, Direction f, Vector3 b, World world) { + if(testRotation.contains( + world.getBlockData(b.getBlockX() + f.getModX(), b.getBlockY() + f.getModY(), b.getBlockZ() + f.getModZ()).getBlockType())) + faces.add(f); + } + private boolean isIrrigated(Vector3 b, World world) { if(irrigable == null) return true; return irrigable.contains(world.getBlockData(b.getBlockX() + 1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX() - 1, b.getBlockY(), b.getBlockZ()).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() + 1).getBlockType()) - || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() - 1).getBlockType()); + || irrigable.contains(world.getBlockData(b.getBlockX() - 1, b.getBlockY(), b.getBlockZ()).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() + 1).getBlockType()) + || irrigable.contains(world.getBlockData(b.getBlockX(), b.getBlockY(), b.getBlockZ() - 1).getBlockType()); } - + private ProbabilityCollection getStateCollection(int layer) { - return layers.get(FastMath.max(FastMath.min(layer, layers.size()-1), 0)); + return layers.get(FastMath.max(FastMath.min(layer, layers.size() - 1), 0)); } - - @Override - public boolean plant(Vector3 location, World world) { - boolean doRotation = testRotation.size() > 0; - int size = layers.size(); - int c = ceiling ? -1 : 1; - - EnumSet faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : EnumSet.noneOf(Direction.class); - if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. - - for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor - int lvl = (FastMath.abs(i)); - BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), location.getZ(), world.getSeed()).clone(); - if(doRotation) { - Direction oneFace = new ArrayList<>(faces).get(new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. - - data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) - .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) - .setIfPresent(Properties.SOUTH, faces.contains(Direction.SOUTH)) - .setIfPresent(Properties.EAST, faces.contains(Direction.EAST)) - .setIfPresent(Properties.WEST, faces.contains(Direction.WEST)); - } - world.setBlockData(location.clone().add(0, i + c, 0), data, physics); - } - return true; - } - + private EnumSet getFaces(Vector3 b, World world) { EnumSet faces = EnumSet.noneOf(Direction.class); test(faces, Direction.NORTH, b, world); @@ -139,12 +153,7 @@ public class TerraFlora implements Flora { test(faces, Direction.WEST, b, world); return faces; } - - private void test(EnumSet faces, Direction f, Vector3 b, World world) { - if(testRotation.contains(world.getBlockData(b.getBlockX() + f.getModX(), b.getBlockY() + f.getModY(), b.getBlockZ() + f.getModZ()).getBlockType())) - faces.add(f); - } - + public enum Search { UP, DOWN diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 46a9f62e4..9e8458c63 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -1,6 +1,9 @@ package com.dfsek.terra.addons.feature.locator; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + import com.dfsek.terra.addons.feature.locator.config.AndLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.NoiseLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.OrLocatorTemplate; @@ -27,44 +30,45 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.function.Supplier; @Addon("config-locators") @Version("1.0.0") @Author("Terra") public class LocatorAddon extends TerraAddon { - - public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() {}; - public static final TypeKey>> PATTERN_TOKEN = new TypeKey<>() {}; + + public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() { + }; + public static final TypeKey>> PATTERN_TOKEN = new TypeKey<>() { + }; @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); - locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); - locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); - locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); - locatorRegistry.register("NOISE", NoiseLocatorTemplate::new); - - locatorRegistry.register("AND", AndLocatorTemplate::new); - locatorRegistry.register("OR", OrLocatorTemplate::new); - }) - .then(event -> { - CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); - patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new); - patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new); - patternRegistry.register("MATCH", SingleBlockMatchPatternTemplate::new); - patternRegistry.register("MATCH_SET", BlockSetMatchPatternTemplate::new); - - patternRegistry.register("AND", AndPatternTemplate::new); - patternRegistry.register("OR", OrPatternTemplate::new); - patternRegistry.register("NOT", NotPatternTemplate::new); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); + locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); + locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); + locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); + locatorRegistry.register("NOISE", NoiseLocatorTemplate::new); + + locatorRegistry.register("AND", AndLocatorTemplate::new); + locatorRegistry.register("OR", OrLocatorTemplate::new); + }) + .then(event -> { + CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); + patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new); + patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new); + patternRegistry.register("MATCH", SingleBlockMatchPatternTemplate::new); + patternRegistry.register("MATCH_SET", BlockSetMatchPatternTemplate::new); + + patternRegistry.register("AND", AndPatternTemplate::new); + patternRegistry.register("OR", OrPatternTemplate::new); + patternRegistry.register("NOT", NotPatternTemplate::new); + }) + .failThrough(); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java index a26486370..404c38a8a 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java @@ -4,16 +4,17 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + +import java.util.List; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; -import java.util.List; public class AndLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("locators") private @Meta List<@Meta Locator> locators; - + @Override public Locator get() { Locator current = locators.remove(0); @@ -22,7 +23,7 @@ public class AndLocatorTemplate implements ObjectTemplate, ValidatedCon } return current; } - + @Override public boolean validate() throws ValidationException { if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java index 835dbdd34..ca0f33137 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java @@ -2,17 +2,19 @@ package com.dfsek.terra.addons.feature.locator.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.addons.feature.locator.locators.NoiseLocator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.Locator; -import java.util.List; public class NoiseLocatorTemplate implements ObjectTemplate { @Value("samplers") private @Meta List<@Meta NoiseSampler> samplers; - + @Override public Locator get() { return new NoiseLocator(samplers); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java index 2ea4c6641..38e0d660c 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java @@ -4,15 +4,17 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; -import java.util.List; public class OrLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("locators") private @Meta List<@Meta Locator> locators; - + @Override public Locator get() { Locator current = locators.remove(0); @@ -21,7 +23,7 @@ public class OrLocatorTemplate implements ObjectTemplate, ValidatedConf } return current; } - + @Override public boolean validate() throws ValidationException { if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java index cdf926843..c27054675 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java @@ -2,19 +2,21 @@ package com.dfsek.terra.addons.feature.locator.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.feature.locator.locators.PatternLocator; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; + public class PatternLocatorTemplate implements ObjectTemplate { @Value("range") private @Meta Range range; - + @Value("pattern") private @Meta Pattern pattern; - + @Override public Locator get() { return new PatternLocator(pattern, range); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java index 543ce5ca8..347294d3f 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java @@ -2,19 +2,20 @@ package com.dfsek.terra.addons.feature.locator.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.feature.locator.locators.RandomLocator; -import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; + public class RandomLocatorTemplate implements ObjectTemplate { @Value("height") private @Meta Range height; - + @Value("amount") private @Meta Range amount; - + @Override public Locator get() { return new RandomLocator(height, amount); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java index 731cc68a8..2fb6cd3e3 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java @@ -2,22 +2,24 @@ package com.dfsek.terra.addons.feature.locator.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; + public class SurfaceLocatorTemplate implements ObjectTemplate { private final TerraPlugin main; - + @Value("range") private @Meta Range range; - + public SurfaceLocatorTemplate(TerraPlugin main) { this.main = main; } - + @Override public Locator get() { return new SurfaceLocator(range, main); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java index d54e4c49c..dfd65ec38 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java @@ -2,17 +2,19 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; + public class AirMatchPatternTemplate implements ObjectTemplate { @Value("offset") private @Meta Range offset; - - + + @Override public Pattern get() { return new MatchPattern(offset, BlockState::isAir); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java index af3ae0564..78ff11428 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java @@ -4,15 +4,17 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.config.meta.Meta; -import java.util.List; public class AndPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("patterns") private @Meta List<@Meta Pattern> patterns; - + @Override public Pattern get() { Pattern current = patterns.remove(0); @@ -21,7 +23,7 @@ public class AndPatternTemplate implements ObjectTemplate, ValidatedCon } return current; } - + @Override public boolean validate() throws ValidationException { if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java index 83c9e429d..6f15ac36d 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java @@ -2,19 +2,21 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; + public class BlockSetMatchPatternTemplate implements ObjectTemplate { @Value("blocks") private @Meta MaterialSet blocks; - + @Value("offset") private @Meta Range offset; - + @Override public Pattern get() { return new MatchPattern(offset, blockState -> blocks.contains(blockState.getBlockType())); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java index 310ccfd02..fcf40e57b 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java @@ -2,13 +2,15 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.config.meta.Meta; + public class NotPatternTemplate implements ObjectTemplate { @Value("pattern") private @Meta Pattern pattern; - + @Override public Pattern get() { return pattern.not(); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java index 538629e98..5e1369724 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java @@ -4,15 +4,17 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.List; + import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.config.meta.Meta; -import java.util.List; public class OrPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { @Value("patterns") private @Meta List<@Meta Pattern> patterns; - + @Override public Pattern get() { Pattern current = patterns.remove(0); @@ -21,7 +23,7 @@ public class OrPatternTemplate implements ObjectTemplate, ValidatedConf } return current; } - + @Override public boolean validate() throws ValidationException { if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java index 2a40ce285..782d0ca5d 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java @@ -2,20 +2,22 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; + public class SingleBlockMatchPatternTemplate implements ObjectTemplate { @Value("block") private @Meta BlockState block; - + @Value("offset") private @Meta Range offset; - - + + @Override public Pattern get() { return new MatchPattern(offset, block::matches); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java index 800def8ef..eebb03197 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java @@ -2,14 +2,16 @@ package com.dfsek.terra.addons.feature.locator.config.pattern; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; + import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; +import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.util.Range; + public class SolidMatchPatternTemplate implements ObjectTemplate { @Value("offset") private Range offset; - + @Override public Pattern get() { return new MatchPattern(offset, blockState -> blockState.getBlockType().isSolid()); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java index addeaa10b..b88ad0295 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java @@ -1,31 +1,33 @@ package com.dfsek.terra.addons.feature.locator.locators; +import net.jafama.FastMath; + +import java.util.List; + import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.world.Column; -import net.jafama.FastMath; -import java.util.List; public class NoiseLocator implements Locator { private final List samplers; - + public NoiseLocator(List samplers) { this.samplers = samplers; } - + @Override public BinaryColumn getSuitableCoordinates(Column column) { BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); - + long seed = column.getWorld().getSeed(); samplers.forEach(sampler -> { int y = FastMath.floorToInt(sampler.getNoiseSeeded(seed, column.getX(), column.getX())); if(y >= column.getMaxY() || y < column.getMinY()) return; results.set(y); }); - + return results; } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java index 64dcc7bbb..a5faddf4c 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java @@ -6,26 +6,24 @@ import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; -import java.util.ArrayList; -import java.util.List; public class PatternLocator implements Locator { private final Pattern pattern; private final Range search; - + public PatternLocator(Pattern pattern, Range search) { this.pattern = pattern; this.search = search; } - + @Override public BinaryColumn getSuitableCoordinates(Column column) { BinaryColumn locations = new BinaryColumn(column.getMinY(), column.getMaxY()); - + for(int y : search) { if(pattern.matches(y, column)) locations.set(y); } - + return locations; } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java index 7dd0672b2..78df7b875 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java @@ -1,39 +1,38 @@ package com.dfsek.terra.addons.feature.locator.locators; +import java.util.Random; + import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; public class RandomLocator implements Locator { private final Range height; - + private final Range points; - + public RandomLocator(Range height, Range points) { this.height = height; this.points = points; } - + @Override public BinaryColumn getSuitableCoordinates(Column column) { long seed = column.getWorld().getSeed(); seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); - + Random r = new Random(seed); - + int size = points.get(r); - + BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); for(int i = 0; i < size; i++) { results.set(height.get(r)); } - + return results; } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java index 85da18385..79810c8a3 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -7,23 +7,22 @@ import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; -import java.util.Collections; public class SurfaceLocator implements Locator { private final Range search; - + private final BlockState air; - + public SurfaceLocator(Range search, TerraPlugin main) { this.search = search; this.air = main.getWorldHandle().air(); } - + @Override public BinaryColumn getSuitableCoordinates(Column column) { BinaryColumn location = new BinaryColumn(column.getMinY(), column.getMaxY()); for(int y : search) { - if(column.getBlock(y).matches(air) && !column.getBlock(y-1).matches(air)) { + if(column.getBlock(y).matches(air) && !column.getBlock(y - 1).matches(air)) { location.set(y); return location; } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java index da85e8605..d305d64d8 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java @@ -1,21 +1,21 @@ package com.dfsek.terra.addons.feature.locator.patterns; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; +import java.util.function.Predicate; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.Column; -import java.util.function.Predicate; public class MatchPattern implements Pattern { private final Range range; private final Predicate matches; - + public MatchPattern(Range range, Predicate matches) { this.range = range; this.matches = matches; } - + @Override public boolean matches(int y, Column column) { for(int i : range) { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java index a5937b770..2aae3af0d 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java @@ -2,17 +2,18 @@ package com.dfsek.terra.addons.feature.locator.patterns; import com.dfsek.terra.api.world.Column; + public interface Pattern { boolean matches(int y, Column column); - + default Pattern and(Pattern that) { return (y, column) -> this.matches(y, column) && that.matches(y, column); } - + default Pattern or(Pattern that) { return (y, column) -> this.matches(y, column) || that.matches(y, column); } - + default Pattern not() { return (y, column) -> !this.matches(y, column); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index ae0656575..0b39cc1dd 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -1,6 +1,11 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Supplier; + import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; @@ -37,70 +42,69 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Supplier; @Addon("config-noise-function") @Author("Terra") @Version("1.0.0") public class NoiseAddon extends TerraAddon { + public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { + }; @Inject private TerraPlugin plugin; - - public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() {}; - + @Override public void initialize() { plugin.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN); - event.getPack() - .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) - .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); - - noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); - noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); - noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); - - noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); - - noiseRegistry.register("DOMAIN_WARP", DomainWarpTemplate::new); - - noiseRegistry.register("FBM", BrownianMotionTemplate::new); - noiseRegistry.register("PING_PONG", PingPongTemplate::new); - noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - - noiseRegistry.register("OPEN_SIMPLEX_2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register("OPEN_SIMPLEX_2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - noiseRegistry.register("GABOR", GaborNoiseTemplate::new); - - - noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUE_CUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - - noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - - noiseRegistry.register("WHITE_NOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - - noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); - - noiseRegistry.register("KERNEL", KernelTemplate::new); - - Map packFunctions = new HashMap<>(); - noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); - - - NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); - event.loadTemplate(template); - packFunctions.putAll(template.getNoiseBuilderMap()); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( + NOISE_SAMPLER_TOKEN); + event.getPack() + .applyLoader(CellularSampler.DistanceFunction.class, + (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) + .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) + .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); + + noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); + noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); + noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); + + noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); + + noiseRegistry.register("DOMAIN_WARP", DomainWarpTemplate::new); + + noiseRegistry.register("FBM", BrownianMotionTemplate::new); + noiseRegistry.register("PING_PONG", PingPongTemplate::new); + noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); + + noiseRegistry.register("OPEN_SIMPLEX_2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); + noiseRegistry.register("OPEN_SIMPLEX_2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); + noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); + noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.register("GABOR", GaborNoiseTemplate::new); + + + noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); + noiseRegistry.register("VALUE_CUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + + noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); + + noiseRegistry.register("WHITE_NOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); + noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + + noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); + + noiseRegistry.register("KERNEL", KernelTemplate::new); + + Map packFunctions = new HashMap<>(); + noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); + + + NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); + event.loadTemplate(template); + packFunctions.putAll(template.getNoiseBuilderMap()); + }) + .failThrough(); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index 9bff92dbd..e8e733d25 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -2,15 +2,17 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; + +import java.util.Map; + import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.api.config.meta.Meta; -import java.util.Map; public class NoiseConfigPackTemplate implements ConfigTemplate { @Value("noise") private @Meta Map noiseBuilderMap; - + public Map getNoiseBuilderMap() { return noiseBuilderMap; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java index 7fdc5d393..20e922fed 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java @@ -2,26 +2,28 @@ package com.dfsek.terra.addons.noise.config; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + public class DimensionApplicableNoiseSampler implements ObjectTemplate { @Value("dimensions") private @Meta int dimensions; - + @Value(".") private @Meta NoiseSampler sampler; - - public int getDimensions() { - return dimensions; - } - - public NoiseSampler getSampler() { - return sampler; - } - + @Override public DimensionApplicableNoiseSampler get() { return this; } + + public int getDimensions() { + return dimensions; + } + + public NoiseSampler getSampler() { + return sampler; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java index 0305197a0..9fe96b1ed 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java @@ -2,22 +2,24 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class DomainWarpTemplate extends SamplerTemplate { @Value("warp") private @Meta NoiseSampler warp; - + @Value("function") private @Meta NoiseSampler function; - + @Value("amplitude") @Default private @Meta double amplitude = 1; - + @Override public NoiseSampler get() { return new DomainWarpedSampler(function, warp, amplitude); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java index 54f88a18d..79cbc0078 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java @@ -2,28 +2,30 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.config.meta.Meta; import java.util.List; +import com.dfsek.terra.api.config.meta.Meta; + + @SuppressWarnings("unused") public class FunctionTemplate implements ObjectTemplate { @Value("arguments") private List args; - + @Value("function") private @Meta String function; - - public List getArgs() { - return args; - } - - public String getFunction() { - return function; - } - + @Override public FunctionTemplate get() { return this; } + + public List getArgs() { + return args; + } + + public String getFunction() { + return function; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java index dd541873f..f0e37eb69 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java @@ -1,24 +1,26 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Value; + +import java.awt.image.BufferedImage; + import com.dfsek.terra.addons.noise.samplers.ImageSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.awt.image.BufferedImage; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class ImageSamplerTemplate extends SamplerTemplate { - + @Value("image") private @Meta BufferedImage image; - + @Value("frequency") private @Meta double frequency; - + @Value("channel") private ImageSampler.@Meta Channel channel; - + @Override public NoiseSampler get() { return new ImageSampler(image, channel, frequency); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java index 173ce0f1c..0bb4e3544 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java @@ -2,60 +2,61 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; + +import java.util.List; + import com.dfsek.terra.addons.noise.samplers.KernelSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.List; - -@SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class KernelTemplate extends SamplerTemplate implements ValidatedConfigTemplate { +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) +public class KernelTemplate extends SamplerTemplate { + @Value("kernel") private @Meta List<@Meta List<@Meta Double>> kernel; - + @Value("factor") @Default private @Meta double factor = 1; - + @Value("function") private @Meta NoiseSampler function; - + @Value("frequency") @Default private @Meta double frequency = 1; - + @Override public NoiseSampler get() { double[][] k = new double[kernel.size()][kernel.get(0).size()]; - + for(int x = 0; x < kernel.size(); x++) { for(int y = 0; y < kernel.get(x).size(); y++) { k[x][y] = kernel.get(x).get(y) * factor; } } - + KernelSampler sampler = new KernelSampler(k, function); sampler.setFrequency(frequency); return sampler; } - + @Override public boolean validate() throws ValidationException { - + if(kernel.isEmpty()) throw new ValidationException("Kernel must not be empty."); - + int len = kernel.get(0).size(); - + if(len == 0) throw new ValidationException("Kernel row must contain data."); - + for(int i = 0; i < kernel.size(); i++) { if(kernel.get(i).size() != len) throw new ValidationException("Kernel row " + i + " size mismatch. Expected " + len + ", found " + kernel.get(i).size()); } - + return super.validate(); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java index 319d85ed1..b281f1d77 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java @@ -5,22 +5,24 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + @SuppressWarnings("FieldMayBeFinal") public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { @Value("dimensions") @Default private @Meta int dimensions = 2; - - public int getDimensions() { - return dimensions; - } - + @Override public boolean validate() throws ValidationException { if(dimensions != 2 && dimensions != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions); return true; } + + public int getDimensions() { + return dimensions; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java index 728ee7254..1162be34b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java @@ -2,30 +2,32 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { @Value("distance") @Default private CellularSampler.@Meta DistanceFunction cellularDistanceFunction = CellularSampler.DistanceFunction.EuclideanSq; - + @Value("return") @Default private CellularSampler.@Meta ReturnType cellularReturnType = CellularSampler.ReturnType.Distance; - + @Value("jitter") @Default private @Meta double cellularJitter = 1.0D; - - + + @Value("lookup") @Default private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); - + @Override public NoiseSampler get() { CellularSampler sampler = new CellularSampler(); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java index dd3311737..87eb684db 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java @@ -2,17 +2,19 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + @SuppressWarnings("FieldMayBeFinal") public class ConstantNoiseTemplate extends SamplerTemplate { @Value("value") @Default private @Meta double value = 0d; - + @Override public NoiseSampler get() { return new ConstantSampler(value); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 2db025d2f..58ad1ab07 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -6,8 +6,12 @@ import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.exception.ValidationException; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; @@ -18,33 +22,29 @@ import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -@SuppressWarnings({"FieldMayBeFinal", "unused"}) -public class ExpressionFunctionTemplate extends SamplerTemplate implements ValidatedConfigTemplate { +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) +public class ExpressionFunctionTemplate extends SamplerTemplate { private final Map otherFunctions; @Value("variables") @Default private @Meta Map vars = new HashMap<>(); - + @Value("expression") private @Meta String equation; - + @Value("functions") @Default private @Meta LinkedHashMap functions = new LinkedHashMap<>(); - + @Value("functions") @Default private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); - + public ExpressionFunctionTemplate(Map otherFunctions) { this.otherFunctions = otherFunctions; } - + @Override public NoiseSampler get() { try { @@ -54,7 +54,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate generateFunctions() throws ParseException { Map noiseFunctionMap = new HashMap<>(); - + for(Map.Entry entry : expressions.entrySet()) { noiseFunctionMap.put(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), new Parser(), new Scope())); } - + otherFunctions.forEach((id, function) -> { if(function.getDimensions() == 2) { noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); }); - + functions.forEach((id, function) -> { if(function.getDimensions() == 2) { noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); }); - + return noiseFunctionMap; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java index c9bc2e52f..0fa207a0d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java @@ -2,31 +2,33 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.samplers.noise.GaborNoiseSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") @Default - private @Meta double rotation = 0.25; - + private final @Meta double rotation = 0.25; + @Value("isotropic") @Default - private @Meta boolean isotropic = true; - + private final @Meta boolean isotropic = true; + @Value("deviation") @Default - private @Meta double deviation = 1.0; - + private final @Meta double deviation = 1.0; + @Value("impulses") @Default - private @Meta double impulses = 64d; - + private final @Meta double impulses = 64d; + @Value("frequency_0") @Default - private @Meta double f0 = 0.625; - + private final @Meta double f0 = 0.625; + @Override public NoiseSampler get() { GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler(); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java index d5807cd8a..4ce1a07dc 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java @@ -2,17 +2,18 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public abstract class NoiseTemplate extends SamplerTemplate { @Value("frequency") @Default protected @Meta double frequency = 0.02d; - + @Value("salt") @Default protected @Meta long salt = 0; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java index 915b06dcc..455f8642a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java @@ -1,18 +1,18 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import java.util.function.Supplier; + import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.function.Function; -import java.util.function.Supplier; public class SimpleNoiseTemplate extends NoiseTemplate { private final Supplier samplerSupplier; - + public SimpleNoiseTemplate(Supplier samplerSupplier) { this.samplerSupplier = samplerSupplier; } - + @Override public NoiseSampler get() { NoiseFunction sampler = samplerSupplier.get(); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java index 3a3ce6c9d..801aed0a5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.terra.addons.noise.samplers.noise.fractal.BrownianMotionSampler; import com.dfsek.terra.api.noise.NoiseSampler; + public class BrownianMotionTemplate extends FractalTemplate { @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java index 521fe9ac9..e92228663 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java @@ -2,28 +2,30 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + public abstract class FractalTemplate extends SamplerTemplate { @Value("octaves") @Default protected @Meta int octaves = 3; - + @Value("gain") @Default protected @Meta double fractalGain = 0.5D; - + @Value("lacunarity") @Default protected @Meta double fractalLacunarity = 2.0D; - + @Value("weighted-strength") @Default protected @Meta double weightedStrength = 0.0D; - + @Value("function") protected @Meta NoiseSampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java index 618fc19c9..145aeea32 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java @@ -2,16 +2,18 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.samplers.noise.fractal.PingPongSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class PingPongTemplate extends FractalTemplate { @Value("ping-pong") @Default private @Meta double pingPong = 2.0D; - + @Override public NoiseSampler get() { PingPongSampler sampler = new PingPongSampler(function); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java index 85c69a4b1..70d606ed0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.terra.addons.noise.samplers.noise.fractal.RidgedFractalSampler; import com.dfsek.terra.api.noise.NoiseSampler; + public class RidgedFractalTemplate extends FractalTemplate { @Override public NoiseSampler get() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java index 030550888..4e8287a0f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java @@ -1,18 +1,20 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.normalizer.ClampNormalizer; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class ClampNormalizerTemplate extends NormalizerTemplate { @Value("max") private @Meta double max; - + @Value("min") private @Meta double min; - + @Override public NoiseSampler get() { return new ClampNormalizer(function, min, max); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java index 99d316813..171123493 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java @@ -1,18 +1,20 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.normalizer.LinearNormalizer; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class LinearNormalizerTemplate extends NormalizerTemplate { @Value("max") private @Meta double max; - + @Value("min") private @Meta double min; - + @Override public NoiseSampler get() { return new LinearNormalizer(function, min, max); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java index 16d3c8194..c55647f90 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java @@ -2,22 +2,24 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.normalizer.NormalNormalizer; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class NormalNormalizerTemplate extends NormalizerTemplate { @Value("mean") private @Meta double mean; - + @Value("standard-deviation") private @Meta double stdDev; - + @Value("groups") @Default private @Meta int groups = 16384; - + @Override public NoiseSampler get() { return new NormalNormalizer(function, groups, mean, stdDev); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java index 3ddbf9829..1d435acd6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java @@ -1,11 +1,13 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.annotations.Value; + import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.normalizer.Normalizer; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; + public abstract class NormalizerTemplate extends SamplerTemplate { @Value("function") protected @Meta NoiseSampler function; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java index 3bce239c1..b8c093585 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java @@ -1,18 +1,20 @@ package com.dfsek.terra.addons.noise.normalizer; -import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; +import com.dfsek.terra.api.noise.NoiseSampler; + + public class ClampNormalizer extends Normalizer { private final double min; private final double max; - + public ClampNormalizer(NoiseSampler sampler, double min, double max) { super(sampler); this.min = min; this.max = max; } - + @Override public double normalize(double in) { return FastMath.max(FastMath.min(in, max), min); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java index faaa5c587..3d355045a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java @@ -2,19 +2,20 @@ package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; + /** * Normalizer to linearly scale data's range. */ public class LinearNormalizer extends Normalizer { private final double min; private final double max; - + public LinearNormalizer(NoiseSampler sampler, double min, double max) { super(sampler); this.min = min; this.max = max; } - + @Override public double normalize(double in) { return (in - min) * (2 / (max - min)) - 1; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java index d56ac8a82..16dda5430 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java @@ -1,25 +1,27 @@ package com.dfsek.terra.addons.noise.normalizer; +import net.jafama.FastMath; + import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; -import net.jafama.FastMath; + /** * Normalizer to redistribute normally distributed data to a continuous distribution via an automatically generated lookup table. */ public class NormalNormalizer extends Normalizer { - + private final double[] lookup; - + public NormalNormalizer(NoiseSampler sampler, int buckets, double mean, double standardDeviation) { super(sampler); this.lookup = new double[buckets]; - + for(int i = 0; i < buckets; i++) { lookup[i] = MathUtil.normalInverse((double) i / buckets, mean, standardDeviation); } } - + @Override public double normalize(double in) { int start = 0; @@ -34,12 +36,12 @@ public class NormalNormalizer extends Normalizer { } double left = FastMath.abs(lookup[start] - in); double right = FastMath.abs(lookup[end] - in); - + double fin; if(left <= right) { fin = (double) start / (lookup.length); } else fin = (double) end / (lookup.length); - + return (fin - 0.5) * 2; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java index 08cc87eda..c99a54a83 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java @@ -2,20 +2,21 @@ package com.dfsek.terra.addons.noise.normalizer; import com.dfsek.terra.api.noise.NoiseSampler; + public abstract class Normalizer implements NoiseSampler { private final NoiseSampler sampler; - + public Normalizer(NoiseSampler sampler) { this.sampler = sampler; } - + public abstract double normalize(double in); - + @Override public double getNoiseSeeded(long seed, double x, double y) { return normalize(sampler.getNoiseSeeded(seed, x, y)); } - + @Override public double getNoiseSeeded(long seed, double x, double y, double z) { return normalize(sampler.getNoiseSeeded(seed, x, y, z)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index d7d99aeb5..aa60d1f0f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -6,44 +6,45 @@ import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.dynamic.Context; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; + import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; public class UserDefinedFunction implements DynamicFunction { private final Expression expression; private final int args; - + protected UserDefinedFunction(Expression expression, int args) { this.expression = expression; this.args = args; } - + public static UserDefinedFunction newInstance(FunctionTemplate template, Parser parser, Scope parent) throws ParseException { - + Scope functionScope = new Scope().withParent(parent); - + template.getArgs().forEach(functionScope::addInvocationVariable); - + return new UserDefinedFunction(parser.parse(template.getFunction(), functionScope), template.getArgs().size()); } - + @Override public double eval(double... args) { return expression.evaluate(args); } - + @Override public double eval(Context context, double... args) { return expression.evaluate(context, args); } - - @Override - public boolean isStateless() { - return true; - } - + @Override public int getArgNumber() { return args; } + + @Override + public boolean isStateless() { + return true; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java index f12c1576e..63460be9f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java @@ -2,32 +2,32 @@ package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.paralithic.functions.dynamic.Context; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; -import com.dfsek.terra.addons.noise.util.HashMapDoubleDouble; + import com.dfsek.terra.api.noise.NoiseSampler; public class NoiseFunction2 implements DynamicFunction { private final NoiseSampler gen; - + public NoiseFunction2(NoiseSampler gen) { this.gen = gen; } - - @Override - public int getArgNumber() { - return 2; - } - + @Override public double eval(double... args) { throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); } - + @Override public double eval(Context context, double... args) { return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1]); } - + + @Override + public int getArgNumber() { + return 2; + } + @Override public boolean isStateless() { return false; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java index 827eb6596..62d7c5b08 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java @@ -2,30 +2,32 @@ package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.paralithic.functions.dynamic.Context; import com.dfsek.paralithic.functions.dynamic.DynamicFunction; + import com.dfsek.terra.api.noise.NoiseSampler; + public class NoiseFunction3 implements DynamicFunction { private final NoiseSampler gen; - + public NoiseFunction3(NoiseSampler gen) { this.gen = gen; } - - @Override - public int getArgNumber() { - return 3; - } - + @Override public double eval(double... args) { throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); } - + @Override public double eval(Context context, double... args) { return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1], args[2]); } - + + @Override + public int getArgNumber() { + return 3; + } + @Override public boolean isStateless() { return false; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java index bc490d1c4..8f4bb2bf1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java @@ -2,13 +2,14 @@ package com.dfsek.terra.addons.noise.paralithic.noise; import com.dfsek.paralithic.functions.dynamic.Context; + public class SeedContext implements Context { private final long seed; - + public SeedContext(long seed) { this.seed = seed; } - + public long getSeed() { return seed; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java index eca97002c..7574f8938 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java @@ -2,31 +2,32 @@ package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; + public class DomainWarpedSampler implements NoiseSampler { private final NoiseSampler function; private final NoiseSampler warp; private final double amplitude; - + public DomainWarpedSampler(NoiseSampler function, NoiseSampler warp, double amplitude) { this.function = function; this.warp = warp; this.amplitude = amplitude; } - + @Override public double getNoiseSeeded(long seed, double x, double y) { return function.getNoiseSeeded(seed++, - x + warp.getNoiseSeeded(seed++, x, y) * amplitude, - y + warp.getNoiseSeeded(seed, x, y) * amplitude - ); + x + warp.getNoiseSeeded(seed++, x, y) * amplitude, + y + warp.getNoiseSeeded(seed, x, y) * amplitude + ); } - + @Override public double getNoiseSeeded(long seed, double x, double y, double z) { return function.getNoiseSeeded(seed++, - x + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, - y + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, - z + warp.getNoiseSeeded(seed, x, y, z) * amplitude - ); + x + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, + y + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, + z + warp.getNoiseSeeded(seed, x, y, z) * amplitude + ); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java index d48dc2c26..2c64a954d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java @@ -1,60 +1,68 @@ package com.dfsek.terra.addons.noise.samplers; -import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; import java.awt.image.BufferedImage; +import com.dfsek.terra.api.noise.NoiseSampler; + + public class ImageSampler implements NoiseSampler { private final BufferedImage image; private final Channel channel; - + private final double frequency; - + public ImageSampler(BufferedImage image, Channel channel, double frequency) { this.image = image; this.channel = channel; this.frequency = frequency; } - + @Override public double getNoiseSeeded(long seed, double x, double y) { - return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * 2; + return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), + FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * + 2; } - + @Override public double getNoiseSeeded(long seed, double x, double y, double z) { return getNoiseSeeded(seed, x, y); } - + public enum Channel { RED { @Override public int getChannel(int mashed) { return (mashed >> 16) & 0xff; } - }, GREEN { + }, + GREEN { @Override public int getChannel(int mashed) { return (mashed >> 8) & 0xff; } - }, BLUE { + }, + BLUE { @Override public int getChannel(int mashed) { return mashed & 0xff; } - }, GRAYSCALE { + }, + GRAYSCALE { @Override public int getChannel(int mashed) { return (RED.getChannel(mashed) + GREEN.getChannel(mashed) + BLUE.getChannel(mashed)) / 3; } - }, ALPHA { + }, + ALPHA { @Override public int getChannel(int mashed) { return (mashed >> 24) & 0xff; } }; - + public abstract int getChannel(int mashed); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java index b30e16510..23266b3dc 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java @@ -2,48 +2,49 @@ package com.dfsek.terra.addons.noise.samplers; import com.dfsek.terra.api.noise.NoiseSampler; + public class KernelSampler implements NoiseSampler { private final double[][] kernel; private final NoiseSampler in; private double frequency = 1; - + public KernelSampler(double[][] kernel, NoiseSampler in) { this.kernel = kernel; this.in = in; } - + + public void setFrequency(double frequency) { + this.frequency = frequency; + } + @Override public double getNoiseSeeded(long seed, double x, double y) { x *= frequency; y *= frequency; double accumulator = 0; - + for(int kx = 0; kx < kernel.length; kx++) { for(int ky = 0; ky < kernel[kx].length; ky++) { accumulator += in.getNoiseSeeded(seed, x + kx, y + ky) * kernel[kx][ky]; } } - + return accumulator; } - + @Override public double getNoiseSeeded(long seed, double x, double y, double z) { x *= frequency; y *= frequency; z *= frequency; double accumulator = 0; - + for(int kx = 0; kx < kernel.length; kx++) { for(int ky = 0; ky < kernel[kx].length; ky++) { accumulator += in.getNoiseSeeded(seed, x + kx, y, z + ky) * kernel[kx][ky]; } } - + return accumulator; } - - public void setFrequency(double frequency) { - this.frequency = frequency; - } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 83f972d7b..5f8de8bde 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; + /** * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. */ @@ -117,7 +118,7 @@ public class CellularSampler extends NoiseFunction { -0.1842489331d, -0.9777375055d, -0.1004076743d, 0, 0.0775473789d, -0.9111505856d, 0.4047110257d, 0, 0.1399838409d, 0.7601631212d, -0.6344734459d, 0, 0.4484419361d, -0.845289248d, 0.2904925424d, 0 }; - + private static final double[] RAND_VECS_2D = { -0.2700222198d, -0.9628540911d, 0.3863092627d, -0.9223693152d, 0.04444859006d, -0.999011673d, -0.5992523158d, -0.8005602176d, -0.7819280288d, 0.6233687174d, 0.9464672271d, 0.3227999196d, -0.6514146797d, -0.7587218957d, 0.9378472289d, 0.347048376d, @@ -183,70 +184,70 @@ public class CellularSampler extends NoiseFunction { -0.6995302564d, 0.7146029809d, 0.5263414922d, -0.85027327d, -0.5395221479d, 0.841971408d, 0.6579370318d, 0.7530729462d, 0.01426758847d, -0.9998982128d, -0.6734383991d, 0.7392433447d, 0.639412098d, -0.7688642071d, 0.9211571421d, 0.3891908523d, -0.146637214d, -0.9891903394d, -0.782318098d, 0.6228791163d, -0.5039610839d, -0.8637263605d, -0.7743120191d, -0.6328039957d, - }; - - + }; + + private DistanceFunction distanceFunction = DistanceFunction.EuclideanSq; private ReturnType returnType = ReturnType.Distance; private double jitterModifier = 1.0; - + private NoiseSampler noiseLookup; - + public CellularSampler() { noiseLookup = new OpenSimplex2Sampler(); } - + public void setDistanceFunction(DistanceFunction distanceFunction) { this.distanceFunction = distanceFunction; } - + public void setJitterModifier(double jitterModifier) { this.jitterModifier = jitterModifier; } - + public void setNoiseLookup(NoiseSampler noiseLookup) { this.noiseLookup = noiseLookup; } - + public void setReturnType(ReturnType returnType) { this.returnType = returnType; } - + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; int xr = fastRound(x); int yr = fastRound(y); - + double distance0 = Double.MAX_VALUE; double distance1 = Double.MAX_VALUE; double distance2 = Double.MAX_VALUE; - + int closestHash = 0; - + double cellularJitter = 0.43701595 * jitterModifier; - + int xPrimed = (xr - 1) * PRIME_X; int yPrimedBase = (yr - 1) * PRIME_Y; - + Vector2 center = new Vector2(x, y); - + switch(distanceFunction) { default: case Euclidean: case EuclideanSq: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int hash = hash(seed, xPrimed, yPrimed); int idx = hash & (255 << 1); - + double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - + double newDistance = vecX * vecX + vecY * vecY; - + distance1 = fastMax(fastMin(distance1, newDistance), distance0); if(newDistance < distance0) { distance0 = newDistance; @@ -267,16 +268,16 @@ public class CellularSampler extends NoiseFunction { case Manhattan: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int hash = hash(seed, xPrimed, yPrimed); int idx = hash & (255 << 1); - + double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - + double newDistance = fastAbs(vecX) + fastAbs(vecY); - + distance1 = fastMax(fastMin(distance1, newDistance), distance0); if(newDistance < distance0) { distance0 = newDistance; @@ -297,16 +298,16 @@ public class CellularSampler extends NoiseFunction { case Hybrid: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int hash = hash(seed, xPrimed, yPrimed); int idx = hash & (255 << 1); - + double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - + double newDistance = (fastAbs(vecX) + fastAbs(vecY)) + (vecX * vecX + vecY * vecY); - + distance1 = fastMax(fastMin(distance1, newDistance), distance0); if(newDistance < distance0) { distance0 = newDistance; @@ -325,14 +326,14 @@ public class CellularSampler extends NoiseFunction { } break; } - + if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { distance0 = fastSqrt(distance0); if(returnType != ReturnType.CellValue) { distance1 = fastSqrt(distance1); } } - + switch(returnType) { case CellValue: return closestHash * (1 / 2147483648.0); @@ -364,46 +365,46 @@ public class CellularSampler extends NoiseFunction { return 0; } } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; int xr = fastRound(x); int yr = fastRound(y); int zr = fastRound(z); - + double distance0 = Double.MAX_VALUE; double distance1 = Double.MAX_VALUE; double distance2 = Double.MAX_VALUE; int closestHash = 0; - + double cellularJitter = 0.39614353 * jitterModifier; - + int xPrimed = (xr - 1) * PRIME_X; int yPrimedBase = (yr - 1) * PRIME_Y; int zPrimedBase = (zr - 1) * PRIME_Z; - + Vector3 center = new Vector3(x, y, z); - + switch(distanceFunction) { case Euclidean: case EuclideanSq: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int zPrimed = zPrimedBase; - + for(int zi = zr - 1; zi <= zr + 1; zi++) { int hash = hash(seed, xPrimed, yPrimed, zPrimed); int idx = hash & (255 << 2); - + double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - + double newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; - + if(newDistance < distance0) { distance0 = newDistance; closestHash = hash; @@ -426,20 +427,20 @@ public class CellularSampler extends NoiseFunction { case Manhattan: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int zPrimed = zPrimedBase; - + for(int zi = zr - 1; zi <= zr + 1; zi++) { int hash = hash(seed, xPrimed, yPrimed, zPrimed); int idx = hash & (255 << 2); - + double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - + double newDistance = fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ); - + if(newDistance < distance0) { distance0 = newDistance; closestHash = hash; @@ -462,21 +463,21 @@ public class CellularSampler extends NoiseFunction { case Hybrid: for(int xi = xr - 1; xi <= xr + 1; xi++) { int yPrimed = yPrimedBase; - + for(int yi = yr - 1; yi <= yr + 1; yi++) { int zPrimed = zPrimedBase; - + for(int zi = zr - 1; zi <= zr + 1; zi++) { int hash = hash(seed, xPrimed, yPrimed, zPrimed); int idx = hash & (255 << 2); - + double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - + double newDistance = (fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ)) + - (vecX * vecX + vecY * vecY + vecZ * vecZ); - + (vecX * vecX + vecY * vecY + vecZ * vecZ); + distance1 = fastMax(fastMin(distance1, newDistance), distance0); if(newDistance < distance0) { distance0 = newDistance; @@ -500,14 +501,14 @@ public class CellularSampler extends NoiseFunction { default: break; } - + if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { distance0 = fastSqrt(distance0); if(returnType != ReturnType.CellValue) { distance1 = fastSqrt(distance1); } } - + switch(returnType) { case CellValue: return closestHash * (1 / 2147483648.0); @@ -539,15 +540,15 @@ public class CellularSampler extends NoiseFunction { return 0; } } - + public enum DistanceFunction { Euclidean, EuclideanSq, Manhattan, Hybrid } - - + + public enum ReturnType { CellValue, Distance, diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java index 10833d194..eaea1382d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java @@ -5,16 +5,16 @@ package com.dfsek.terra.addons.noise.samplers.noise; */ public class ConstantSampler extends NoiseFunction { private final double constant; - + public ConstantSampler(double constant) { this.constant = constant; } - + @Override public double getNoiseRaw(long seed, double x, double y) { return constant; } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { return constant; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java index 469deec60..01011f58e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java @@ -5,37 +5,39 @@ import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; -import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; import java.util.Map; +import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; + + /** * NoiseSampler implementation using a Paralithic expression. */ public class ExpressionFunction extends NoiseFunction { private final Expression expression; - + public ExpressionFunction(Map functions, String eq, Map vars) throws ParseException { Parser p = new Parser(); Scope scope = new Scope(); - + scope.addInvocationVariable("x"); scope.addInvocationVariable("y"); scope.addInvocationVariable("z"); - + vars.forEach(scope::create); - + functions.forEach(p::registerFunction); - + expression = p.parse(eq, scope); frequency = 1; } - + @Override public double getNoiseRaw(long seed, double x, double y) { return expression.evaluate(new SeedContext(seed), x, 0, y); } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { return expression.evaluate(new SeedContext(seed), x, y, z); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java index 00f1bde3d..fbe7afdae 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.noise.samplers.noise; -import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; import net.jafama.FastMath; +import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; + + public class GaborNoiseSampler extends NoiseFunction { private final WhiteNoiseSampler rand; private double k = 1.0; @@ -13,58 +15,21 @@ public class GaborNoiseSampler extends NoiseFunction { private boolean isotropic = true; private double impulsesPerKernel = 64d; private double impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); - private double impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; private double g = FastMath.exp(-impulsesPerCell); - - + + public GaborNoiseSampler() { rand = new WhiteNoiseSampler(); } - - public void setIsotropic(boolean isotropic) { - this.isotropic = isotropic; - } - - public void setImpulsesPerKernel(double impulsesPerKernel) { - this.impulsesPerKernel = impulsesPerKernel; - recalculateRadiusAndDensity(); - } - - public void setA(double a) { - this.a = a; - recalculateRadiusAndDensity(); - } - - public void setFrequency0(double f0) { - this.f0 = f0; - } - - public void setRotation(double omega0) { - this.omega0 = Math.PI * omega0; - } - - public void setDeviation(double k) { - this.k = k; - } - + private void recalculateRadiusAndDensity() { kernelRadius = (FastMath.sqrt(-FastMath.log(0.05) / Math.PI) / this.a); impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; g = FastMath.exp(-impulsesPerCell); } - - @Override - public double getNoiseRaw(long seed, double x, double z) { - return gaborNoise(seed, x, z); - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return gaborNoise(seed, x, z); - } - + private double gaborNoise(long seed, double x, double y) { x /= kernelRadius; y /= kernelRadius; @@ -80,25 +45,63 @@ public class GaborNoiseSampler extends NoiseFunction { } return noise; } - + private double calculateCell(long seed, int xi, int yi, double x, double y) { long mashedSeed = murmur64(31L * xi + yi) + seed; - + double gaussianSource = (rand.getNoiseRaw(mashedSeed++) + 1) / 2; int impulses = 0; while(gaussianSource > g) { impulses++; gaussianSource *= (rand.getNoiseRaw(mashedSeed++) + 1) / 2; } - + double noise = 0; for(int i = 0; i < impulses; i++) { - noise += rand.getNoiseRaw(mashedSeed++) * gabor(isotropic ? (rand.getNoiseRaw(mashedSeed++) + 1) * Math.PI : omega0, x * kernelRadius, y * kernelRadius); + noise += rand.getNoiseRaw(mashedSeed++) * gabor(isotropic ? (rand.getNoiseRaw(mashedSeed++) + 1) * Math.PI : omega0, + x * kernelRadius, y * kernelRadius); } return noise; } - + private double gabor(double omega_0, double x, double y) { - return k * (FastMath.exp(-Math.PI * (a * a) * (x * x + y * y)) * fastCos(2 * Math.PI * f0 * (x * fastCos(omega_0) + y * fastSin(omega_0)))); + return k * (FastMath.exp(-Math.PI * (a * a) * (x * x + y * y)) * fastCos(2 * Math.PI * f0 * (x * fastCos(omega_0) + y * fastSin( + omega_0)))); + } + + public void setA(double a) { + this.a = a; + recalculateRadiusAndDensity(); + } + + public void setDeviation(double k) { + this.k = k; + } + + public void setFrequency0(double f0) { + this.f0 = f0; + } + + public void setImpulsesPerKernel(double impulsesPerKernel) { + this.impulsesPerKernel = impulsesPerKernel; + recalculateRadiusAndDensity(); + } + + public void setIsotropic(boolean isotropic) { + this.isotropic = isotropic; + } + + public void setRotation(double omega0) { + this.omega0 = Math.PI * omega0; + } + + @Override + public double getNoiseRaw(long seed, double x, double z) { + return gaborNoise(seed, x, z); + } + + @Override + public double getNoiseRaw(long seed, double x, double y, double z) { + return gaborNoise(seed, x, z); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index c5b20abe6..d3b6a3045 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -1,8 +1,10 @@ package com.dfsek.terra.addons.noise.samplers.noise; -import com.dfsek.terra.api.noise.NoiseSampler; import net.jafama.FastMath; +import com.dfsek.terra.api.noise.NoiseSampler; + + @SuppressWarnings("ManualMinMaxCalculation") public abstract class NoiseFunction implements NoiseSampler { // Hashing @@ -12,90 +14,84 @@ public abstract class NoiseFunction implements NoiseSampler { static final int precision = 100; static final int modulus = 360 * precision; static final double[] sin = new double[360 * 100]; // lookup table - static { for(int i = 0; i < sin.length; i++) { sin[i] = (float) Math.sin((double) (i) / (precision)); } } - protected double frequency = 0.02d; - protected long salt; - - public void setSalt(long salt) { - this.salt = salt; - } - + public NoiseFunction() { this.salt = 0; } - + protected static int fastFloor(double f) { return f >= 0 ? (int) f : (int) f - 1; } - + protected static int hash(int seed, int xPrimed, int yPrimed, int zPrimed) { int hash = seed ^ xPrimed ^ yPrimed ^ zPrimed; - + hash *= 0x27d4eb2d; return hash; } - + protected static int hash(int seed, int xPrimed, int yPrimed) { int hash = seed ^ xPrimed ^ yPrimed; - + hash *= 0x27d4eb2d; return hash; } - + protected static int fastRound(double f) { return f >= 0 ? (int) (f + 0.5f) : (int) (f - 0.5); } - + protected static double lerp(double a, double b, double t) { return a + t * (b - a); } - + protected static double interpHermite(double t) { return t * t * (3 - 2 * t); } - + protected static double interpQuintic(double t) { return t * t * t * (t * (t * 6 - 15) + 10); } - + protected static double cubicLerp(double a, double b, double c, double d, double t) { double p = (d - c) - (a - b); return t * t * t * p + t * t * ((a - b) - p) + t * (c - a) + b; } - + protected static double fastMin(double a, double b) { return a < b ? a : b; } - + protected static double fastMax(double a, double b) { return a > b ? a : b; } - + protected static double fastAbs(double f) { return f < 0 ? -f : f; } - + protected static double fastSqrt(double f) { return FastMath.sqrt(f); } - + protected static int fastCeil(double f) { int i = (int) f; if(i < f) i++; return i; } - + /** * Murmur64 hashing function * * @param h Input value + * * @return Hashed value */ protected static long murmur64(long h) { @@ -106,38 +102,42 @@ public abstract class NoiseFunction implements NoiseSampler { h ^= h >>> 33; return h; } - - private static double sinLookup(int a) { - return a >= 0 ? sin[a % (modulus)] : -sin[-a % (modulus)]; - } - + protected static double fastSin(double a) { return sinLookup((int) (a * precision + 0.5f)); } - + protected static double fastCos(double a) { return sinLookup((int) ((a + Math.PI / 2) * precision + 0.5f)); } - + + private static double sinLookup(int a) { + return a >= 0 ? sin[a % (modulus)] : -sin[-a % (modulus)]; + } + + public void setSalt(long salt) { + this.salt = salt; + } + public double getFrequency() { return frequency; } - + public void setFrequency(double frequency) { this.frequency = frequency; } - + @Override public double getNoiseSeeded(long seed, double x, double y) { return getNoiseRaw(seed + salt, x * frequency, y * frequency); } - + @Override public double getNoiseSeeded(long seed, double x, double y, double z) { return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency); } - + public abstract double getNoiseRaw(long seed, double x, double y); - + public abstract double getNoiseRaw(long seed, double x, double y, double z); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java index 556c1dd61..f7e636ae6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -2,45 +2,46 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; + public class BrownianMotionSampler extends FractalNoiseFunction { public BrownianMotionSampler(NoiseSampler input) { super(input); } - + @Override public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = input.getNoiseSeeded(seed++, x, y); sum += noise * amp; amp *= lerp(1.0, fastMin(noise + 1, 2) * 0.5, weightedStrength); - + x *= lacunarity; y *= lacunarity; amp *= gain; } - + return sum; } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = input.getNoiseSeeded(seed++, x, y, z); sum += noise * amp; amp *= lerp(1.0, (noise + 1) * 0.5, weightedStrength); - + x *= lacunarity; y *= lacunarity; z *= lacunarity; amp *= gain; } - + return sum; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java index 32b110610..0f3455c72 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.api.noise.NoiseSampler; + public abstract class FractalNoiseFunction extends NoiseFunction { protected final NoiseSampler input; protected double fractalBounding = 1 / 1.75; @@ -10,16 +11,12 @@ public abstract class FractalNoiseFunction extends NoiseFunction { protected double gain = 0.5; protected double lacunarity = 2.0d; protected double weightedStrength = 0.0d; - + public FractalNoiseFunction(NoiseSampler input) { this.input = input; frequency = 1; } - - public void setWeightedStrength(double weightedStrength) { - this.weightedStrength = weightedStrength; - } - + protected void calculateFractalBounding() { double gain = fastAbs(this.gain); double amp = gain; @@ -30,18 +27,22 @@ public abstract class FractalNoiseFunction extends NoiseFunction { } fractalBounding = 1 / ampFractal; } - - public void setOctaves(int octaves) { - this.octaves = octaves; - calculateFractalBounding(); - } - + public void setGain(double gain) { this.gain = gain; calculateFractalBounding(); } - + public void setLacunarity(double lacunarity) { this.lacunarity = lacunarity; } + + public void setOctaves(int octaves) { + this.octaves = octaves; + calculateFractalBounding(); + } + + public void setWeightedStrength(double weightedStrength) { + this.weightedStrength = weightedStrength; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java index 72db1b168..3c712db61 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java @@ -2,57 +2,58 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; + public class PingPongSampler extends FractalNoiseFunction { private double pingPongStrength = 2.0; - + public PingPongSampler(NoiseSampler input) { super(input); } - - + + private static double pingPong(double t) { t -= (int) (t * 0.5f) << 1; return t < 1 ? t : 2 - t; } - + public void setPingPongStrength(double strength) { this.pingPongStrength = strength; } - + @Override public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = pingPong((input.getNoiseSeeded(seed++, x, y) + 1) * pingPongStrength); sum += (noise - 0.5) * 2 * amp; amp *= lerp(1.0, noise, weightedStrength); - + x *= lacunarity; y *= lacunarity; amp *= gain; } - + return sum; } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = pingPong((input.getNoiseSeeded(seed++, x, y, z) + 1) * pingPongStrength); sum += (noise - 0.5) * 2 * amp; amp *= lerp(1.0, noise, weightedStrength); - + x *= lacunarity; y *= lacunarity; z *= lacunarity; amp *= gain; } - + return sum; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java index f316cb6f2..6c6f53592 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -2,46 +2,47 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; -public class RidgedFractalSampler extends FractalNoiseFunction { +public class RidgedFractalSampler extends FractalNoiseFunction { + public RidgedFractalSampler(NoiseSampler input) { super(input); } - + @Override public double getNoiseRaw(long seed, double x, double y) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = fastAbs(input.getNoiseSeeded(seed++, x, y)); sum += (noise * -2 + 1) * amp; amp *= lerp(1.0, 1 - noise, weightedStrength); - + x *= lacunarity; y *= lacunarity; amp *= gain; } - + return sum; } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { double sum = 0; double amp = fractalBounding; - + for(int i = 0; i < octaves; i++) { double noise = fastAbs(input.getNoiseSeeded(seed++, x, y, z)); sum += (noise * -2 + 1) * amp; amp *= lerp(1.0, 1 - noise, weightedStrength); - + x *= lacunarity; y *= lacunarity; z *= lacunarity; amp *= gain; } - + return sum; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java index 154015af2..159dfffc0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java @@ -2,16 +2,17 @@ package com.dfsek.terra.addons.noise.samplers.noise.random; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; + /** * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. */ public class GaussianNoiseSampler extends NoiseFunction { private final WhiteNoiseSampler whiteNoiseSampler; // Back with a white noise sampler. - + public GaussianNoiseSampler() { whiteNoiseSampler = new WhiteNoiseSampler(); } - + @Override public double getNoiseRaw(long seed, double x, double y) { double v1, v2, s; @@ -23,7 +24,7 @@ public class GaussianNoiseSampler extends NoiseFunction { double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s) / s); return v1 * multiplier; } - + @Override public double getNoiseRaw(long seed, double x, double y, double z) { double v1, v2, s; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java index 8486ec12f..8ec5d0d2b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -2,50 +2,52 @@ package com.dfsek.terra.addons.noise.samplers.noise.random; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; + /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. */ public class WhiteNoiseSampler extends NoiseFunction { - private static final long POSITIVE_POW1 = 0b01111111111L << 52; // Bits that when applied to the exponent/sign section of a double, produce a positive number with a power of 1. - + private static final long POSITIVE_POW1 = 0b01111111111L << 52; + // Bits that when applied to the exponent/sign section of a double, produce a positive number with a power of 1. + public WhiteNoiseSampler() { } - - public double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return (getNoiseUnmapped(seed, x, y) - 1.5) * 2; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return (getNoiseUnmapped(seed, x, y, z) - 1.5) * 2; - } - - public double getNoiseUnmapped(long seed, double x, double y, double z) { - long base = ((randomBits(seed, x, y, z)) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent - return Double.longBitsToDouble(base); - } - - public double getNoiseUnmapped(long seed, double x, double y) { - long base = (randomBits(seed, x, y) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent - return Double.longBitsToDouble(base); - } - + public long randomBits(long seed, double x, double y, double z) { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = (((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed) + Double.doubleToRawLongBits(z); return murmur64(hash); } - + public long randomBits(long seed, double x, double y) { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = ((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed; return murmur64(hash); } + + public double getNoiseRaw(long seed) { + return (Double.longBitsToDouble((murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; + } + + @Override + public double getNoiseRaw(long seed, double x, double y) { + return (getNoiseUnmapped(seed, x, y) - 1.5) * 2; + } + + @Override + public double getNoiseRaw(long seed, double x, double y, double z) { + return (getNoiseUnmapped(seed, x, y, z) - 1.5) * 2; + } + + public double getNoiseUnmapped(long seed, double x, double y, double z) { + long base = ((randomBits(seed, x, y, z)) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent + return Double.longBitsToDouble(base); + } + + public double getNoiseUnmapped(long seed, double x, double y) { + long base = (randomBits(seed, x, y) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent + return Double.longBitsToDouble(base); + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index eb9a152f4..24c36cb34 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -9,38 +9,38 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; // 2D OpenSimplex2S case is a modified 2D simplex noise. - + final double SQRT3 = 1.7320508075688772935274463415059; final double G2 = (3 - SQRT3) / 6; - + final double F2 = 0.5f * (SQRT3 - 1); double s = (x + y) * F2; x += s; y += s; - - + + int i = fastFloor(x); int j = fastFloor(y); double xi = x - i; double yi = y - j; - + i *= PRIME_X; j *= PRIME_Y; int i1 = i + PRIME_X; int j1 = j + PRIME_Y; - + double t = (xi + yi) * G2; double x0 = xi - t; double y0 = yi - t; - + double a0 = (2.0 / 3.0) - x0 * x0 - y0 * y0; double value = (a0 * a0) * (a0 * a0) * gradCoord(seed, i, j, x0, y0); - + double a1 = 2 * (1 - 2 * G2) * (1 / G2 - 2) * t + ((-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a0); double x1 = x0 - (1 - 2 * G2); double y1 = y0 - (1 - 2 * G2); value += (a1 * a1) * (a1 * a1) * gradCoord(seed, i1, j1, x1, y1); - + // Nested conditionals were faster than compact bit logic/arithmetic. double xmyi = xi - yi; if(t > G2) { @@ -59,7 +59,7 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j + PRIME_Y, x2, y2); } } - + if(yi - xmyi > 1) { double x3 = x0 + (3 * G2 - 1); double y3 = y0 + (3 * G2 - 2); @@ -91,7 +91,7 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + PRIME_X, j, x2, y2); } } - + if(yi < xmyi) { double x2 = x0 - G2; double y2 = y0 - (G2 - 1); @@ -108,10 +108,10 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { } } } - + return value * 18.24196194486065; } - + @Override @SuppressWarnings("NumericOverflow") public double getNoiseRaw(long sl, double x, double y, double z) { @@ -122,59 +122,62 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { x = r - x; y = r - y; z = r - z; - - + + int i = fastFloor(x); int j = fastFloor(y); int k = fastFloor(z); double xi = x - i; double yi = y - j; double zi = z - k; - + i *= PRIME_X; j *= PRIME_Y; k *= PRIME_Z; int seed2 = seed + 1293373; - + int xNMask = (int) (-0.5 - xi); int yNMask = (int) (-0.5 - yi); int zNMask = (int) (-0.5 - zi); - + double x0 = xi + xNMask; double y0 = yi + yNMask; double z0 = zi + zNMask; double a0 = 0.75 - x0 * x0 - y0 * y0 - z0 * z0; - double value = (a0 * a0) * (a0 * a0) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, y0, - z0); - + double value = (a0 * a0) * (a0 * a0) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, + y0, + z0); + double x1 = xi - 0.5; double y1 = yi - 0.5; double z1 = zi - 0.5; double a1 = 0.75 - x1 * x1 - y1 * y1 - z1 * z1; value += (a1 * a1) * (a1 * a1) * gradCoord(seed2, i + PRIME_X, j + PRIME_Y, k + PRIME_Z, x1, y1, z1); - + double xAFlipMask0 = ((xNMask | 1) << 1) * x1; double yAFlipMask0 = ((yNMask | 1) << 1) * y1; double zAFlipMask0 = ((zNMask | 1) << 1) * z1; double xAFlipMask1 = (-2 - (xNMask << 2)) * x1 - 1.0; double yAFlipMask1 = (-2 - (yNMask << 2)) * y1 - 1.0; double zAFlipMask1 = (-2 - (zNMask << 2)) * z1 - 1.0; - + boolean skip5 = false; double a2 = xAFlipMask0 + a0; if(a2 > 0) { double x2 = x0 - (xNMask | 1); - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x2, y0, - z0); + value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x2, + y0, + z0); } else { double a3 = yAFlipMask0 + zAFlipMask0 + a0; if(a3 > 0) { double y3 = y0 - (yNMask | 1); double z3 = z0 - (zNMask | 1); - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), x0, - y3, z3); + value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), + x0, + y3, z3); } - + double a4 = xAFlipMask1 + a1; if(a4 > 0) { double x4 = (xNMask | 1) + x1; @@ -182,22 +185,24 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { skip5 = true; } } - + boolean skip9 = false; double a6 = yAFlipMask0 + a0; if(a6 > 0) { double y6 = y0 - (yNMask | 1); - value += (a6 * a6) * (a6 * a6) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, y6, - z0); + value += (a6 * a6) * (a6 * a6) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, + y6, + z0); } else { double a7 = xAFlipMask0 + zAFlipMask0 + a0; if(a7 > 0) { double x7 = x0 - (xNMask | 1); double z7 = z0 - (zNMask | 1); - value += (a7 * a7) * (a7 * a7) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), x7, - y0, z7); + value += (a7 * a7) * (a7 * a7) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), + x7, + y0, z7); } - + double a8 = yAFlipMask1 + a1; if(a8 > 0) { double y8 = (yNMask | 1) + y1; @@ -205,22 +210,24 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { skip9 = true; } } - + boolean skipD = false; double aA = zAFlipMask0 + a0; if(aA > 0) { double zA = z0 - (zNMask | 1); - value += (aA * aA) * (aA * aA) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), x0, y0, - zA); + value += (aA * aA) * (aA * aA) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), x0, + y0, + zA); } else { double aB = xAFlipMask0 + yAFlipMask0 + a0; if(aB > 0) { double xB = x0 - (xNMask | 1); double yB = y0 - (yNMask | 1); - value += (aB * aB) * (aB * aB) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), xB, - yB, z0); + value += (aB * aB) * (aB * aB) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), + xB, + yB, z0); } - + double aC = zAFlipMask1 + a1; if(aC > 0) { double zC = (zNMask | 1) + z1; @@ -228,37 +235,38 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { skipD = true; } } - + if(!skip5) { double a5 = yAFlipMask1 + zAFlipMask1 + a1; if(a5 > 0) { double y5 = (yNMask | 1) + y1; double z5 = (zNMask | 1) + z1; value += (a5 * a5) * (a5 * a5) * gradCoord(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + (zNMask & (PRIME_Z << 1)), - x1, y5, z5); + x1, y5, z5); } } - + if(!skip9) { double a9 = xAFlipMask1 + zAFlipMask1 + a1; if(a9 > 0) { double x9 = (xNMask | 1) + x1; double z9 = (zNMask | 1) + z1; - value += (a9 * a9) * (a9 * a9) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + (zNMask & (PRIME_Z << 1)), x9, - y1, z9); + value += (a9 * a9) * (a9 * a9) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + (zNMask & (PRIME_Z << 1)), + x9, + y1, z9); } } - + if(!skipD) { double aD = xAFlipMask1 + yAFlipMask1 + a1; if(aD > 0) { double xD = (xNMask | 1) + x1; double yD = (yNMask | 1) + y1; value += (aD * aD) * (aD * aD) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z, - xD, yD, z1); + xD, yD, z1); } } - + return value * 9.046026385208288; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index c4379b212..410176b2e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -5,39 +5,39 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; */ public class OpenSimplex2Sampler extends SimplexStyleSampler { private static final double SQRT3 = 1.7320508075688772935274463415059; - + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; // 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex. final double G2 = (3 - SQRT3) / 6; - + final double F2 = 0.5f * (SQRT3 - 1); double s = (x + y) * F2; x += s; y += s; - - + + int i = fastFloor(x); int j = fastFloor(y); double xi = x - i; double yi = y - j; - + double t = (xi + yi) * G2; double x0 = xi - t; double y0 = yi - t; - + i *= PRIME_X; j *= PRIME_Y; - + double n0, n1, n2; - + double a = 0.5 - x0 * x0 - y0 * y0; if(a <= 0) n0 = 0; else { n0 = (a * a) * (a * a) * gradCoord(seed, i, j, x0, y0); } - + double c = 2 * (1 - 2 * G2) * (1 / G2 - 2) * t + ((-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a); if(c <= 0) n2 = 0; else { @@ -45,7 +45,7 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { double y2 = y0 + (2 * G2 - 1); n2 = (c * c) * (c * c) * gradCoord(seed, i + PRIME_X, j + PRIME_Y, x2, y2); } - + if(y0 > x0) { double x1 = x0 + G2; double y1 = y0 + (G2 - 1); @@ -63,10 +63,10 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { n1 = (b * b) * (b * b) * gradCoord(seed, i + PRIME_X, j, x1, y1); } } - + return (n0 + n1 + n2) * 99.83685446303647f; } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; @@ -76,35 +76,35 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { x = r - x; y = r - y; z = r - z; - - + + int i = fastRound(x); int j = fastRound(y); int k = fastRound(z); double x0 = x - i; double y0 = y - j; double z0 = z - k; - + int xNSign = (int) (-1.0 - x0) | 1; int yNSign = (int) (-1.0 - y0) | 1; int zNSign = (int) (-1.0 - z0) | 1; - + double ax0 = xNSign * -x0; double ay0 = yNSign * -y0; double az0 = zNSign * -z0; - + i *= PRIME_X; j *= PRIME_Y; k *= PRIME_Z; - + double value = 0; double a = (0.6f - x0 * x0) - (y0 * y0 + z0 * z0); - + for(int l = 0; ; l++) { if(a > 0) { value += (a * a) * (a * a) * gradCoord(seed, i, j, k, x0, y0, z0); } - + if(ax0 >= ay0 && ax0 >= az0) { double b = a + ax0 + ax0; if(b > 1) { @@ -124,30 +124,30 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { value += (b * b) * (b * b) * gradCoord(seed, i, j, k - zNSign * PRIME_Z, x0, y0, z0 + zNSign); } } - + if(l == 1) break; - + ax0 = 0.5 - ax0; ay0 = 0.5 - ay0; az0 = 0.5 - az0; - + x0 = xNSign * ax0; y0 = yNSign * ay0; z0 = zNSign * az0; - + a += (0.75 - ax0) - (ay0 + az0); - + i += (xNSign >> 1) & PRIME_X; j += (yNSign >> 1) & PRIME_Y; k += (zNSign >> 1) & PRIME_Z; - + xNSign = -xNSign; yNSign = -yNSign; zNSign = -zNSign; - + seed = ~seed; } - + return value * 32.69428253173828125; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java index 044029a39..047e02ce5 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java @@ -9,59 +9,59 @@ public class PerlinSampler extends SimplexStyleSampler { int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); - + double xd0 = x - x0; double yd0 = y - y0; double xd1 = xd0 - 1; double yd1 = yd0 - 1; - + double xs = interpQuintic(xd0); double ys = interpQuintic(yd0); - + x0 *= PRIME_X; y0 *= PRIME_Y; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; - + double xf0 = lerp(gradCoord(seed, x0, y0, xd0, yd0), gradCoord(seed, x1, y0, xd1, yd0), xs); double xf1 = lerp(gradCoord(seed, x0, y1, xd0, yd1), gradCoord(seed, x1, y1, xd1, yd1), xs); - + return lerp(xf0, xf1, ys) * 1.4247691104677813; } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); int z0 = fastFloor(z); - + double xd0 = x - x0; double yd0 = y - y0; double zd0 = z - z0; double xd1 = xd0 - 1; double yd1 = yd0 - 1; double zd1 = zd0 - 1; - + double xs = interpQuintic(xd0); double ys = interpQuintic(yd0); double zs = interpQuintic(zd0); - + x0 *= PRIME_X; y0 *= PRIME_Y; z0 *= PRIME_Z; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; int z1 = z0 + PRIME_Z; - + double xf00 = lerp(gradCoord(seed, x0, y0, z0, xd0, yd0, zd0), gradCoord(seed, x1, y0, z0, xd1, yd0, zd0), xs); double xf10 = lerp(gradCoord(seed, x0, y1, z0, xd0, yd1, zd0), gradCoord(seed, x1, y1, z0, xd1, yd1, zd0), xs); double xf01 = lerp(gradCoord(seed, x0, y0, z1, xd0, yd0, zd1), gradCoord(seed, x1, y0, z1, xd1, yd0, zd1), xs); double xf11 = lerp(gradCoord(seed, x0, y1, z1, xd0, yd1, zd1), gradCoord(seed, x1, y1, z1, xd1, yd1, zd1), xs); - + double yf0 = lerp(xf00, xf10, ys); double yf1 = lerp(xf01, xf11, ys); - + return lerp(yf0, yf1, zs) * 0.964921414852142333984375; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java index 045441534..dfaaf5bc6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java @@ -4,66 +4,66 @@ public class SimplexSampler extends SimplexStyleSampler { private static final Double2[] GRAD_2D = { new Double2(-1, -1), new Double2(1, -1), new Double2(-1, 1), new Double2(1, 1), new Double2(0, -1), new Double2(-1, 0), new Double2(0, 1), new Double2(1, 0), - }; + }; private static final Double3[] GRAD_3D = { new Double3(1, 1, 0), new Double3(-1, 1, 0), new Double3(1, -1, 0), new Double3(-1, -1, 0), new Double3(1, 0, 1), new Double3(-1, 0, 1), new Double3(1, 0, -1), new Double3(-1, 0, -1), new Double3(0, 1, 1), new Double3(0, -1, 1), new Double3(0, 1, -1), new Double3(0, -1, -1), new Double3(1, 1, 0), new Double3(0, -1, 1), new Double3(-1, 1, 0), new Double3(0, -1, -1), - }; - + }; + private static final double F2 = 1.0 / 2.0; private static final double F3 = (1.0 / 3.0); private static final double G2 = 1.0 / 4.0; private static final double G3 = (1.0 / 6.0); private static final double G33 = G3 * 3 - 1; - + private static final int X_PRIME = 1619; private static final int Y_PRIME = 31337; private static final int Z_PRIME = 6971; - - + + private static double gradCoord3D(int seed, int x, int y, int z, double xd, double yd, double zd) { int hash = seed; hash ^= X_PRIME * x; hash ^= Y_PRIME * y; hash ^= Z_PRIME * z; - + hash = hash * hash * hash * 60493; hash = (hash >> 13) ^ hash; - + Double3 g = GRAD_3D[hash & 15]; - + return xd * g.x + yd * g.y + zd * g.z; } - + private static double gradCoord2D(int seed, int x, int y, double xd, double yd) { int hash = seed; hash ^= X_PRIME * x; hash ^= Y_PRIME * y; - + hash = hash * hash * hash * 60493; hash = (hash >> 13) ^ hash; - + Double2 g = GRAD_2D[hash & 7]; - + return xd * g.x + yd * g.y; } - + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; double t = (x + y) * F2; int i = fastFloor(x + t); int j = fastFloor(y + t); - + t = (i + j) * G2; double X0 = i - t; double Y0 = j - t; - + double x0 = x - X0; double y0 = y - Y0; - + int i1, j1; if(x0 > y0) { i1 = 1; @@ -72,14 +72,14 @@ public class SimplexSampler extends SimplexStyleSampler { i1 = 0; j1 = 1; } - + double x1 = x0 - i1 + G2; double y1 = y0 - j1 + G2; double x2 = x0 - 1 + F2; double y2 = y0 - 1 + F2; - + double n0, n1, n2; - + t = 0.5 - x0 * x0 - y0 * y0; if(t < 0) { n0 = 0; @@ -87,7 +87,7 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n0 = t * t * gradCoord2D(seed, i, j, x0, y0); } - + t = 0.5 - x1 * x1 - y1 * y1; if(t < 0) { n1 = 0; @@ -95,7 +95,7 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n1 = t * t * gradCoord2D(seed, i + i1, j + j1, x1, y1); } - + t = 0.5 - x2 * x2 - y2 * y2; if(t < 0) { n2 = 0; @@ -103,10 +103,10 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n2 = t * t * gradCoord2D(seed, i + 1, j + 1, x2, y2); } - + return 50 * (n0 + n1 + n2); } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; @@ -114,15 +114,15 @@ public class SimplexSampler extends SimplexStyleSampler { int i = fastFloor(x + t); int j = fastFloor(y + t); int k = fastFloor(z + t); - + t = (i + j + k) * G3; double x0 = x - (i - t); double y0 = y - (j - t); double z0 = z - (k - t); - + int i1, j1, k1; int i2, j2, k2; - + if(x0 >= y0) { if(y0 >= z0) { i1 = 1; @@ -173,7 +173,7 @@ public class SimplexSampler extends SimplexStyleSampler { k2 = 0; } } - + double x1 = x0 - i1 + G3; double y1 = y0 - j1 + G3; double z1 = z0 - k1 + G3; @@ -183,16 +183,16 @@ public class SimplexSampler extends SimplexStyleSampler { double x3 = x0 + G33; double y3 = y0 + G33; double z3 = z0 + G33; - + double n0, n1, n2, n3; - + t = 0.6 - x0 * x0 - y0 * y0 - z0 * z0; if(t < 0) n0 = 0; else { t *= t; n0 = t * t * gradCoord3D(seed, i, j, k, x0, y0, z0); } - + t = 0.6 - x1 * x1 - y1 * y1 - z1 * z1; if(t < 0) { n1 = 0; @@ -200,7 +200,7 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n1 = t * t * gradCoord3D(seed, i + i1, j + j1, k + k1, x1, y1, z1); } - + t = 0.6 - x2 * x2 - y2 * y2 - z2 * z2; if(t < 0) { n2 = 0; @@ -208,7 +208,7 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n2 = t * t * gradCoord3D(seed, i + i2, j + j2, k + k2, x2, y2, z2); } - + t = 0.6 - x3 * x3 - y3 * y3 - z3 * z3; if(t < 0) { n3 = 0; @@ -216,22 +216,23 @@ public class SimplexSampler extends SimplexStyleSampler { t *= t; n3 = t * t * gradCoord3D(seed, i + 1, j + 1, k + 1, x3, y3, z3); } - + return 32 * (n0 + n1 + n2 + n3); } - + private static class Double2 { public final double x, y; - + public Double2(double x, double y) { this.x = x; this.y = y; } } - + + private static class Double3 { public final double x, y, z; - + public Double3(double x, double y, double z) { this.x = x; this.y = y; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java index f6183e1ec..d924f2833 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; + /** * Abstract NoiseSampler implementation for simplex-style noise functions. */ @@ -50,8 +51,8 @@ public abstract class SimplexStyleSampler extends NoiseFunction { 0.38268343236509d, 0.923879532511287d, 0.923879532511287d, 0.38268343236509d, 0.923879532511287d, -0.38268343236509d, 0.38268343236509d, -0.923879532511287d, -0.38268343236509d, -0.923879532511287d, -0.923879532511287d, -0.38268343236509d, -0.923879532511287d, 0.38268343236509d, -0.38268343236509d, 0.923879532511287d, - }; - + }; + protected static final double[] GRADIENTS_3D = { 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, @@ -70,27 +71,27 @@ public abstract class SimplexStyleSampler extends NoiseFunction { 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, 1, 1, 0, 0, 0, -1, 1, 0, -1, 1, 0, 0, 0, -1, -1, 0 }; - + protected static double gradCoord(int seed, int xPrimed, int yPrimed, double xd, double yd) { int hash = hash(seed, xPrimed, yPrimed); hash ^= hash >> 15; hash &= 127 << 1; - + double xg = GRADIENTS_2_D[hash]; double yg = GRADIENTS_2_D[hash | 1]; - + return xd * xg + yd * yg; } - + protected static double gradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, double xd, double yd, double zd) { int hash = hash(seed, xPrimed, yPrimed, zPrimed); hash ^= hash >> 15; hash &= 63 << 2; - + double xg = GRADIENTS_3D[hash]; double yg = GRADIENTS_3D[hash | 1]; double zg = GRADIENTS_3D[hash | 2]; - + return xd * xg + yd * yg + zd * zg; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java index 3f19dc41e..d490126f1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java @@ -6,10 +6,10 @@ public class ValueCubicSampler extends ValueStyleNoise { int seed = (int) sl; int x1 = fastFloor(x); int y1 = fastFloor(y); - + double xs = x - x1; double ys = y - y1; - + x1 *= PRIME_X; y1 *= PRIME_Y; int x0 = x1 - PRIME_X; @@ -18,34 +18,34 @@ public class ValueCubicSampler extends ValueStyleNoise { int y2 = y1 + PRIME_Y; int x3 = x1 + (PRIME_X << 1); int y3 = y1 + (PRIME_Y << 1); - + return cubicLerp( cubicLerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), valCoord(seed, x2, y0), valCoord(seed, x3, y0), - xs), + xs), cubicLerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), valCoord(seed, x2, y1), valCoord(seed, x3, y1), - xs), + xs), cubicLerp(valCoord(seed, x0, y2), valCoord(seed, x1, y2), valCoord(seed, x2, y2), valCoord(seed, x3, y2), - xs), + xs), cubicLerp(valCoord(seed, x0, y3), valCoord(seed, x1, y3), valCoord(seed, x2, y3), valCoord(seed, x3, y3), - xs), + xs), ys) * (1 / (1.5 * 1.5)); } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; int x1 = fastFloor(x); int y1 = fastFloor(y); int z1 = fastFloor(z); - + double xs = x - x1; double ys = y - y1; double zs = z - z1; - + x1 *= PRIME_X; y1 *= PRIME_Y; z1 *= PRIME_Z; - + int x0 = x1 - PRIME_X; int y0 = y1 - PRIME_Y; int z0 = z1 - PRIME_Z; @@ -55,47 +55,47 @@ public class ValueCubicSampler extends ValueStyleNoise { int x3 = x1 + (PRIME_X << 1); int y3 = y1 + (PRIME_Y << 1); int z3 = z1 + (PRIME_Z << 1); - + return cubicLerp( cubicLerp( cubicLerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), valCoord(seed, x2, y0, z0), - valCoord(seed, x3, y0, z0), xs), + valCoord(seed, x3, y0, z0), xs), cubicLerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), valCoord(seed, x2, y1, z0), - valCoord(seed, x3, y1, z0), xs), + valCoord(seed, x3, y1, z0), xs), cubicLerp(valCoord(seed, x0, y2, z0), valCoord(seed, x1, y2, z0), valCoord(seed, x2, y2, z0), - valCoord(seed, x3, y2, z0), xs), + valCoord(seed, x3, y2, z0), xs), cubicLerp(valCoord(seed, x0, y3, z0), valCoord(seed, x1, y3, z0), valCoord(seed, x2, y3, z0), - valCoord(seed, x3, y3, z0), xs), + valCoord(seed, x3, y3, z0), xs), ys), cubicLerp( cubicLerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), valCoord(seed, x2, y0, z1), - valCoord(seed, x3, y0, z1), xs), + valCoord(seed, x3, y0, z1), xs), cubicLerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), valCoord(seed, x2, y1, z1), - valCoord(seed, x3, y1, z1), xs), + valCoord(seed, x3, y1, z1), xs), cubicLerp(valCoord(seed, x0, y2, z1), valCoord(seed, x1, y2, z1), valCoord(seed, x2, y2, z1), - valCoord(seed, x3, y2, z1), xs), + valCoord(seed, x3, y2, z1), xs), cubicLerp(valCoord(seed, x0, y3, z1), valCoord(seed, x1, y3, z1), valCoord(seed, x2, y3, z1), - valCoord(seed, x3, y3, z1), xs), + valCoord(seed, x3, y3, z1), xs), ys), cubicLerp( cubicLerp(valCoord(seed, x0, y0, z2), valCoord(seed, x1, y0, z2), valCoord(seed, x2, y0, z2), - valCoord(seed, x3, y0, z2), xs), + valCoord(seed, x3, y0, z2), xs), cubicLerp(valCoord(seed, x0, y1, z2), valCoord(seed, x1, y1, z2), valCoord(seed, x2, y1, z2), - valCoord(seed, x3, y1, z2), xs), + valCoord(seed, x3, y1, z2), xs), cubicLerp(valCoord(seed, x0, y2, z2), valCoord(seed, x1, y2, z2), valCoord(seed, x2, y2, z2), - valCoord(seed, x3, y2, z2), xs), + valCoord(seed, x3, y2, z2), xs), cubicLerp(valCoord(seed, x0, y3, z2), valCoord(seed, x1, y3, z2), valCoord(seed, x2, y3, z2), - valCoord(seed, x3, y3, z2), xs), + valCoord(seed, x3, y3, z2), xs), ys), cubicLerp( cubicLerp(valCoord(seed, x0, y0, z3), valCoord(seed, x1, y0, z3), valCoord(seed, x2, y0, z3), - valCoord(seed, x3, y0, z3), xs), + valCoord(seed, x3, y0, z3), xs), cubicLerp(valCoord(seed, x0, y1, z3), valCoord(seed, x1, y1, z3), valCoord(seed, x2, y1, z3), - valCoord(seed, x3, y1, z3), xs), + valCoord(seed, x3, y1, z3), xs), cubicLerp(valCoord(seed, x0, y2, z3), valCoord(seed, x1, y2, z3), valCoord(seed, x2, y2, z3), - valCoord(seed, x3, y2, z3), xs), + valCoord(seed, x3, y2, z3), xs), cubicLerp(valCoord(seed, x0, y3, z3), valCoord(seed, x1, y3, z3), valCoord(seed, x2, y3, z3), - valCoord(seed, x3, y3, z3), xs), + valCoord(seed, x3, y3, z3), xs), ys), zs) * (1 / (1.5 * 1.5 * 1.5)); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java index 1258c9a00..15c200633 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java @@ -6,47 +6,47 @@ public class ValueSampler extends ValueStyleNoise { int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); - + double xs = interpHermite(x - x0); double ys = interpHermite(y - y0); - + x0 *= PRIME_X; y0 *= PRIME_Y; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; - + double xf0 = lerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), xs); double xf1 = lerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), xs); - + return lerp(xf0, xf1, ys); } - + @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; int x0 = fastFloor(x); int y0 = fastFloor(y); int z0 = fastFloor(z); - + double xs = interpHermite(x - x0); double ys = interpHermite(y - y0); double zs = interpHermite(z - z0); - + x0 *= PRIME_X; y0 *= PRIME_Y; z0 *= PRIME_Z; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; int z1 = z0 + PRIME_Z; - + double xf00 = lerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), xs); double xf10 = lerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), xs); double xf01 = lerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), xs); double xf11 = lerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), xs); - + double yf0 = lerp(xf00, xf10, ys); double yf1 = lerp(xf01, xf11, ys); - + return lerp(yf0, yf1, zs); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java index 8ed8f263c..74804a00b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java @@ -2,19 +2,20 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; -public abstract class ValueStyleNoise extends NoiseFunction { +public abstract class ValueStyleNoise extends NoiseFunction { + protected static double valCoord(int seed, int xPrimed, int yPrimed) { int hash = hash(seed, xPrimed, yPrimed); - + hash *= hash; hash ^= hash << 19; return hash * (1 / 2147483648.0); } - + protected static double valCoord(int seed, int xPrimed, int yPrimed, int zPrimed) { int hash = hash(seed, xPrimed, yPrimed, zPrimed); - + hash *= hash; hash ^= hash << 19; return hash * (1 / 2147483648.0); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java index 104e7fe38..8e0def4ca 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java @@ -35,6 +35,7 @@ package com.dfsek.terra.addons.noise.util; import java.io.Serializable; + public abstract class HashIntrinsic implements Serializable { public static final int FLOAT_EXP_BIT_MASK = 2139095040; public static final int FLOAT_SIGNIF_BIT_MASK = 8388607; @@ -48,7 +49,7 @@ public abstract class HashIntrinsic implements Serializable { protected int threshold; protected float loadFactor; protected int capMinus1; - + protected HashIntrinsic(int initialCapacity, float loadFactor) { if(initialCapacity <= 0) { throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); @@ -56,11 +57,11 @@ public abstract class HashIntrinsic implements Serializable { if(initialCapacity > 1073741824) { initialCapacity = 1073741824; } - + int capacity; for(capacity = 1; capacity < initialCapacity; capacity <<= 1) { } - + this.capMinus1 = capacity - 1; this.loadFactor = loadFactor; this.threshold = (int) ((float) capacity * loadFactor); @@ -68,51 +69,51 @@ public abstract class HashIntrinsic implements Serializable { throw new IllegalArgumentException("Illegal load factor: " + loadFactor); } } - - protected static int hashCodeLong(long value) { - return (int) (value ^ value >>> 32); - } - - protected static int hashCodeFloat(float value) { - return floatToIntBits(value); - } - - protected static int hashCodeDouble(double value) { - long bits = doubleToLongBits(value); - return (int) (bits ^ bits >>> 32); - } - + public static int floatToIntBits(float value) { int result = Float.floatToRawIntBits(value); if((result & 2139095040) == 2139095040 && (result & 8388607) != 0) { result = 2143289344; } - + return result; } - + public static long doubleToLongBits(double value) { long result = Double.doubleToRawLongBits(value); if((result & 9218868437227405312L) == 9218868437227405312L && (result & 4503599627370495L) != 0L) { result = 9221120237041090560L; } - + return result; } - + + protected static int hashCodeLong(long value) { + return (int) (value ^ value >>> 32); + } + + protected static int hashCodeFloat(float value) { + return floatToIntBits(value); + } + + protected static int hashCodeDouble(double value) { + long bits = doubleToLongBits(value); + return (int) (bits ^ bits >>> 32); + } + protected static int tableIndex(int hc, int lm1) { hc ^= hc >>> 20 ^ hc >>> 12; hc ^= hc >>> 7 ^ hc >>> 4; return hc & lm1; } - + public int size() { return this.size; } - + + public abstract void clear(); + public boolean isEmpty() { return this.size == 0; } - - public abstract void clear(); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java index 9172c656b..d91193d92 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java @@ -36,35 +36,36 @@ package com.dfsek.terra.addons.noise.util; import java.io.Serializable; import java.util.NoSuchElementException; + public class HashMapDoubleDouble extends HashIntrinsic { private static final long serialVersionUID = 2109458761298324234L; private HashMapDoubleDouble.Entry[] table; - + public HashMapDoubleDouble(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor); this.table = this.createTable(this.capMinus1 + 1); } - + public HashMapDoubleDouble(int initialCapacity) { this(initialCapacity, 0.75F); } - + public HashMapDoubleDouble() { this(16, 0.75F); } - + public final boolean contains(double key) { int i = tableIndex(hashCodeDouble(key), this.capMinus1); - + for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { if(e.key == key) { return true; } } - + return false; } - + public boolean containsValue(double value) { for(int i = 0; i < this.table.length; ++i) { for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { @@ -73,37 +74,25 @@ public class HashMapDoubleDouble extends HashIntrinsic { } } } - + return false; } - + public double get(double key) { int i = tableIndex(hashCodeDouble(key), this.capMinus1); - + for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { if(key == e.key) { return e.value; } } - + return 4.9E-324D; } - - public HashMapDoubleDouble.Entry getEntry(double key) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { - if(key == e.key) { - return e; - } - } - - return null; - } - + public double put(double key, double value) { int i = tableIndex(hashCodeDouble(key), this.capMinus1); - + for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { if(key == e.key) { double oldValue = e.value; @@ -111,20 +100,11 @@ public class HashMapDoubleDouble extends HashIntrinsic { return oldValue; } } - + this.addEntry(key, value, i); return 4.9E-324D; } - - private void addEntry(double key, double value, int index) { - HashMapDoubleDouble.Entry e = this.table[index]; - this.table[index] = new HashMapDoubleDouble.Entry(key, value, e); - if(this.size++ >= this.threshold) { - this.resize(2 * this.table.length); - } - - } - + public void resize(int newCapacity) { int oldCapacity = this.table.length; if(oldCapacity == 1073741824) { @@ -137,30 +117,11 @@ public class HashMapDoubleDouble extends HashIntrinsic { this.threshold = (int) ((float) newCapacity * this.loadFactor); } } - - private void transfer(HashMapDoubleDouble.Entry[] newTable) { - for(int j = 0; j < this.table.length; ++j) { - HashMapDoubleDouble.Entry e = this.table[j]; - if(e != null) { - this.table[j] = null; - - HashMapDoubleDouble.Entry next; - do { - next = e.next; - int i = tableIndex(hashCodeDouble(e.key), this.capMinus1); - e.next = newTable[i]; - newTable[i] = e; - e = next; - } while(next != null); - } - } - - } - + public final HashMapDoubleDouble.Entry remove(double key) { int i = tableIndex(hashCodeDouble(key), this.capMinus1); HashMapDoubleDouble.Entry prev = this.table[i]; - + HashMapDoubleDouble.Entry e; HashMapDoubleDouble.Entry next; for(e = prev; e != null; e = next) { @@ -172,112 +133,152 @@ public class HashMapDoubleDouble extends HashIntrinsic { } else { prev.next = next; } - + return e; } - + prev = e; } - + return e; } - + public void clear() { for(int i = 0; i < this.table.length; ++i) { this.table[i] = null; } - + this.size = 0; } - - private HashMapDoubleDouble.Entry[] createTable(int capacity) { - return new HashMapDoubleDouble.Entry[capacity]; - } - + public long memoryEstimate(int ptrsize) { return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (long) (this.size * 64 / 4); } - + public HashMapDoubleDouble.Iterator iterator() { return new HashMapDoubleDouble.Iterator(); } - + + private void addEntry(double key, double value, int index) { + HashMapDoubleDouble.Entry e = this.table[index]; + this.table[index] = new HashMapDoubleDouble.Entry(key, value, e); + if(this.size++ >= this.threshold) { + this.resize(2 * this.table.length); + } + + } + + private void transfer(HashMapDoubleDouble.Entry[] newTable) { + for(int j = 0; j < this.table.length; ++j) { + HashMapDoubleDouble.Entry e = this.table[j]; + if(e != null) { + this.table[j] = null; + + HashMapDoubleDouble.Entry next; + do { + next = e.next; + int i = tableIndex(hashCodeDouble(e.key), this.capMinus1); + e.next = newTable[i]; + newTable[i] = e; + e = next; + } while(next != null); + } + } + + } + + private HashMapDoubleDouble.Entry[] createTable(int capacity) { + return new HashMapDoubleDouble.Entry[capacity]; + } + + public HashMapDoubleDouble.Entry getEntry(double key) { + int i = tableIndex(hashCodeDouble(key), this.capMinus1); + + for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { + if(key == e.key) { + return e; + } + } + + return null; + } + + public static class Entry implements Serializable { private static final long serialVersionUID = 7972173983741231238L; private final double key; private double value; private HashMapDoubleDouble.Entry next; - + public Entry(double key, double val, HashMapDoubleDouble.Entry n) { this.key = key; this.value = val; this.next = n; } - - public final double getKey() { - return this.key; - } - - public final double getValue() { - return this.value; - } - + public final double setValue(double newValue) { double oldValue = this.value; this.value = newValue; return oldValue; } - + + public final double getKey() { + return this.key; + } + + public final double getValue() { + return this.value; + } + + public final int hashCode() { + return hashCodeDouble(key) + hashCodeDouble(value); + } + public final boolean equals(Object o) { HashMapDoubleDouble.Entry e = (HashMapDoubleDouble.Entry) o; return this.key == e.key && this.value == e.value; } - + public final String toString() { return this.key + " = " + this.value; } - - public final int hashCode() { - return hashCodeDouble(key) + hashCodeDouble(value); - } } - + + public class Iterator { HashMapDoubleDouble.Entry next; int index; HashMapDoubleDouble.Entry current; - + Iterator() { if(HashMapDoubleDouble.this.size > 0) { - while(this.index < HashMapDoubleDouble.this.table.length && (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { + while(this.index < HashMapDoubleDouble.this.table.length && + (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { } } - + } - - public final boolean hasNext() { - return this.next != null; - } - + public HashMapDoubleDouble.Entry nextEntry() { HashMapDoubleDouble.Entry e = this.next; if(e == null) { throw new NoSuchElementException(); } else { if((this.next = e.next) == null) { - while(this.index < HashMapDoubleDouble.this.table.length && (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { + while(this.index < HashMapDoubleDouble.this.table.length && + (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { } } - + this.current = e; return e; } } - + public double next() { return this.nextEntry().value; } - + public void remove() { if(this.current == null) { throw new IllegalStateException(); @@ -287,5 +288,9 @@ public class HashMapDoubleDouble extends HashIntrinsic { HashMapDoubleDouble.this.remove(k); } } + + public final boolean hasNext() { + return this.next != null; + } } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 692506afa..47d55dc34 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -17,16 +17,16 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; public class OreAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); + }) + .failThrough(); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index 36ffa5785..52897d14c 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.ore; +import java.util.function.Supplier; + import com.dfsek.terra.addons.ore.ores.Ore; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; @@ -8,29 +10,29 @@ import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.function.Supplier; public class OreConfigType implements ConfigType { + public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>() { + }; private final OreFactory factory = new OreFactory(); - public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>(){}; - - @Override - public OreTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new OreTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return ORE_TYPE_TOKEN; - } - + @Override public Supplier> registrySupplier(ConfigPack pack) { return pack.getRegistryFactory()::create; } + + @Override + public OreTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new OreTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeKey() { + return ORE_TYPE_TOKEN; + } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java index 010ffa867..ae83e74d0 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigFactory; + public class OreFactory implements ConfigFactory { @Override public Ore build(OreTemplate config, TerraPlugin main) { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index f6146fdd0..8d1900765 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.ore; +import org.jetbrains.annotations.NotNull; + +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; @@ -7,23 +11,21 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStage; -import org.jetbrains.annotations.NotNull; -import java.util.Random; public class OrePopulator implements GenerationStage { private final TerraPlugin main; - + public OrePopulator(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { try(ProfileFrame ignore = main.getProfiler().profile("ore")) { if(world.getConfig().disableOres()) return; - + for(int cx = -1; cx <= 1; cx++) { for(int cz = -1; cz <= 1; cz++) { Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); @@ -38,7 +40,8 @@ public class OrePopulator implements GenerationStage { try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { int amount = orePair.getRight().getAmount().get(random); for(int i = 0; i < amount; i++) { - Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get(random), random.nextInt(16) + 16 * finalCz); + Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get + (random), random.nextInt(16) + 16 * finalCz); orePair.getLeft().generate(location, chunk, random); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java index 764ddc19e..fbbfa14d9 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java @@ -3,6 +3,10 @@ package com.dfsek.terra.addons.ore; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; + +import java.util.HashMap; +import java.util.Map; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.AbstractableTemplate; @@ -10,68 +14,66 @@ import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; -import java.util.HashMap; -import java.util.Map; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class OreTemplate implements AbstractableTemplate { @Value("id") @Final private String id; - + @Value("material") private @Meta BlockState material; - + @Value("material-overrides") @Default private @Meta Map<@Meta BlockType, @Meta BlockState> materials = new HashMap<>(); - + @Value("replace") private @Meta MaterialSet replaceable; - + @Value("physics") @Default private @Meta boolean physics = false; - + @Value("size") private @Meta Range size; - + @Value("deform") @Default private @Meta double deform = 0.75D; - + @Value("deform-frequency") @Default private @Meta double deformFrequency = 0.1D; - - public double getDeform() { - return deform; - } - - public double getDeformFrequency() { - return deformFrequency; - } - - public Range getSize() { - return size; - } - - public BlockState getMaterial() { - return material; - } - - public MaterialSet getReplaceable() { - return replaceable; - } - + public boolean doPhysics() { return physics; } - + + public double getDeform() { + return deform; + } + + public double getDeformFrequency() { + return deformFrequency; + } + + public Range getSize() { + return size; + } + + public BlockState getMaterial() { + return material; + } + + public MaterialSet getReplaceable() { + return replaceable; + } + public String getID() { return id; } - + public Map getMaterialOverrides() { return materials; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index b6583b752..60f83afb0 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.ore.ores; +import java.util.Map; +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -7,17 +10,15 @@ import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import java.util.Map; -import java.util.Random; public abstract class Ore { - + private final BlockState material; private final MaterialSet replaceable; private final boolean applyGravity; private final Map materials; protected TerraPlugin main; - + public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main, Map materials) { this.material = material; this.replaceable = replaceable; @@ -25,17 +26,17 @@ public abstract class Ore { this.main = main; this.materials = materials; } - + public abstract void generate(Vector3 origin, Chunk c, Random r); - + public BlockState getMaterial(BlockType replace) { return materials.getOrDefault(replace, material); } - + public MaterialSet getReplaceable() { return replaceable; } - + public boolean isApplyGravity() { return applyGravity; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java index 4238c3d5d..2f23ddadb 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java @@ -2,19 +2,20 @@ package com.dfsek.terra.addons.ore.ores; import com.dfsek.terra.api.util.Range; + public class OreConfig { private final Range amount; private final Range height; - + public OreConfig(Range amount, Range height) { this.amount = amount; this.height = height; } - + public Range getAmount() { return amount; } - + public Range getHeight() { return height; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java index 1509e1df3..18344605c 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java @@ -1,45 +1,46 @@ package com.dfsek.terra.addons.ore.ores; -import com.dfsek.terra.api.util.generic.pair.ImmutablePair; - import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; +import com.dfsek.terra.api.util.generic.pair.ImmutablePair; + + /** * Holds ordered list of ores mapped to their configs. */ public class OreHolder { private final List entries = new ArrayList<>(); - + public void forEach(BiConsumer> consumer) { entries.forEach(entry -> consumer.accept(entry.getId(), ImmutablePair.of(entry.getOre(), entry.getConfig()))); } - + public OreHolder add(Ore ore, OreConfig config, String id) { entries.add(new Entry(ore, config, id)); return this; } - + private static final class Entry { private final Ore ore; private final OreConfig config; private final String id; - + private Entry(Ore ore, OreConfig config, String id) { this.ore = ore; this.config = config; this.id = id; } - + public OreConfig getConfig() { return config; } - + public Ore getOre() { return ore; } - + public String getId() { return id; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 030bf4858..bdaba124e 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -1,5 +1,10 @@ package com.dfsek.terra.addons.ore.ores; +import net.jafama.FastMath; + +import java.util.Map; +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -7,59 +12,56 @@ import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; -import net.jafama.FastMath; - -import java.util.Map; -import java.util.Random; public class VanillaOre extends Ore { private final Range sizeRange; - - public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, TerraPlugin main, Map materials) { + + public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, TerraPlugin main, + Map materials) { super(material, replaceable, applyGravity, main, materials); this.sizeRange = size; } - + @Override public void generate(Vector3 location, Chunk chunk, Random random) { double size = sizeRange.get(random); - + int centerX = location.getBlockX(); int centerZ = location.getBlockZ(); int centerY = location.getBlockY(); - - + + double f = random.nextFloat() * Math.PI; - + double fS = FastMath.sin(f) * size / 8.0F; double fC = FastMath.cos(f) * size / 8.0F; - + double d1 = centerX + 8 + fS; double d2 = centerX + 8 - fS; double d3 = centerZ + 8 + fC; double d4 = centerZ + 8 - fC; - + double d5 = centerY + random.nextInt(3) - 2D; double d6 = centerY + random.nextInt(3) - 2D; - + for(int i = 0; i < size; i++) { double iFactor = i / size; - + double d10 = random.nextDouble() * size / 16.0D; double d11 = (FastMath.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - + int xStart = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor - d11 / 2.0D)); int yStart = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor - d11 / 2.0D)); int zStart = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor - d11 / 2.0D)); - + int xEnd = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor + d11 / 2.0D)); int yEnd = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor + d11 / 2.0D)); int zEnd = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor + d11 / 2.0D)); - + for(int x = xStart; x <= xEnd; x++) { double d13 = (x + 0.5D - (d1 + (d2 - d1) * iFactor)) / (d11 / 2.0D); - + if(d13 * d13 < 1.0D) { for(int y = yStart; y <= yEnd; y++) { double d14 = (y + 0.5D - (d5 + (d6 - d5) * iFactor)) / (d11 / 2.0D); @@ -67,7 +69,7 @@ public class VanillaOre extends Ore { for(int z = zStart; z <= zEnd; z++) { double d15 = (z + 0.5D - (d3 + (d4 - d3) * iFactor)) / (d11 / 2.0D); if(x > 15 || z > 15 || y > 255 || x < 0 || z < 0 || y < 0) continue; - + BlockType type = chunk.getBlock(x, y, z).getBlockType(); if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(type)) { chunk.setBlock(x, y, z, getMaterial(type), isApplyGravity()); diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 66ae41d57..acfcb5df9 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -11,22 +11,23 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; + @Addon("config-palette") @Author("Terra") @Version("1.0.0") public class PaletteAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); - event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); + event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); + }) + .failThrough(); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 97d4c81fa..59dc7a9c5 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -2,6 +2,9 @@ package com.dfsek.terra.addons.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeLoader; + +import java.util.function.Supplier; + import com.dfsek.terra.addons.palette.palette.PaletteImpl; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; @@ -11,42 +14,42 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.generator.Palette; -import java.util.function.Supplier; public class PaletteConfigType implements ConfigType { + public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>() { + }; private final PaletteFactory factory = new PaletteFactory(); private final TerraPlugin main; - - public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>(){}; - + public PaletteConfigType(TerraPlugin main) { this.main = main; } - - @Override - public PaletteTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new PaletteTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return PALETTE_TYPE_TOKEN; - } - + @Override public Supplier> registrySupplier(ConfigPack pack) { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(((String) c).startsWith("BLOCK:")) - return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. + return new PaletteImpl.Singleton( + main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. Palette obj = registry.get((String) c); if(obj == null) throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); return obj; }); } + + @Override + public PaletteTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new PaletteTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public TypeKey getTypeKey() { + return PALETTE_TYPE_TOKEN; + } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index f64eb7931..694246491 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -6,6 +6,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.generator.Palette; + public class PaletteFactory implements ConfigFactory { @Override public Palette build(PaletteTemplate config, TerraPlugin main) { diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index 6b0f778a8..8224f2de5 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -3,34 +3,36 @@ package com.dfsek.terra.addons.palette; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; + +import java.util.List; + import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.List; -@SuppressWarnings({"FieldMayBeFinal", "unused"}) +@SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class PaletteTemplate implements AbstractableTemplate { @Value("noise") @Default private @Meta NoiseSampler noise = NoiseSampler.zero(); - + @Value("id") @Final private String id; - + @Value("layers") private @Meta List<@Meta PaletteLayerHolder> palette; - + public String getID() { return id; } - + public List getPalette() { return palette; } - + public NoiseSampler getNoise() { return noise; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java index 24e1bac68..7f630a4b2 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java @@ -1,17 +1,18 @@ package com.dfsek.terra.addons.palette.palette; +import java.util.List; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.List; public class NoisePalette extends PaletteImpl { private final NoiseSampler sampler; - + public NoisePalette(NoiseSampler sampler) { this.sampler = sampler; - } - + } + @Override public BlockState get(int layer, double x, double y, double z, long seed) { PaletteLayer paletteLayer; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index e11462958..1201b852e 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -1,13 +1,13 @@ package com.dfsek.terra.addons.palette.palette; +import java.util.ArrayList; +import java.util.List; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.generator.Palette; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; /** * A class representation of a "slice" of the world. @@ -15,14 +15,14 @@ import java.util.Random; */ public abstract class PaletteImpl implements Palette { private final List pallet = new ArrayList<>(); - + /** * Constructs a blank palette. */ public PaletteImpl() { - + } - + @Override public Palette add(BlockState m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { @@ -30,7 +30,7 @@ public abstract class PaletteImpl implements Palette { } return this; } - + @Override public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { for(int i = 0; i < layers; i++) { @@ -38,17 +38,17 @@ public abstract class PaletteImpl implements Palette { } return this; } - - + + @Override public int getSize() { return pallet.size(); } - + public List getLayers() { return pallet; } - + /** * Class representation of a layer of a BlockPalette. */ @@ -57,7 +57,7 @@ public abstract class PaletteImpl implements Palette { private final NoiseSampler sampler; private ProbabilityCollection collection; private BlockState m; - + /** * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. * @@ -69,7 +69,7 @@ public abstract class PaletteImpl implements Palette { this.col = true; this.collection = type; } - + /** * Constructs a PaletteLayerHolder with a single Material and a number of layers. * @@ -81,29 +81,29 @@ public abstract class PaletteImpl implements Palette { this.col = false; this.m = type; } - - public NoiseSampler getSampler() { - return sampler; - } - - + public BlockState get(NoiseSampler random, double x, double y, double z, long seed) { if(col) return this.collection.get(random, x, y, z, seed); return m; } - + + public NoiseSampler getSampler() { + return sampler; + } + public ProbabilityCollection getCollection() { return collection; } } - + + public static class Singleton extends PaletteImpl { private final BlockState item; - + public Singleton(BlockState item) { this.item = item; } - + @Override public BlockState get(int layer, double x, double y, double z, long seed) { return item; diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java index 6808e5723..484872036 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java @@ -1,30 +1,32 @@ package com.dfsek.terra.addons.palette.palette; +import org.jetbrains.annotations.NotNull; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import org.jetbrains.annotations.NotNull; + public class PaletteLayerHolder { private final ProbabilityCollection layer; private final NoiseSampler sampler; private final int size; - + public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; } - + @NotNull public ProbabilityCollection getLayer() { return layer; } - + public int getSize() { return size; } - + public NoiseSampler getSampler() { return sampler; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java index a5c73728f..0f5104930 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java @@ -3,38 +3,40 @@ package com.dfsek.terra.addons.palette.palette; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import java.lang.reflect.AnnotatedType; import java.util.Map; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + @SuppressWarnings("unchecked") public class PaletteLayerLoader implements TypeLoader { private static final AnnotatedType BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; - static { try { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getAnnotatedType(); + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection") + .getAnnotatedType(); } catch(NoSuchFieldException e) { throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e); } } - @SuppressWarnings("unused") private ProbabilityCollection blockStateProbabilityCollection; - + @Override public PaletteLayerHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); - + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType( + BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + NoiseSampler sampler = null; if(map.containsKey("noise")) { sampler = configLoader.loadType(NoiseSampler.class, map.get("noise")); } - + if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); return new PaletteLayerHolder(collection, sampler, (Integer) map.get("layers")); } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java index 2c5e20d2e..69c7ae792 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java @@ -1,17 +1,18 @@ package com.dfsek.terra.addons.structure; +import java.util.Set; + import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import java.util.Set; public class BiomeStructures implements Properties { private final Set structures; - + public BiomeStructures(Set structures) { this.structures = structures; } - + public Set getStructures() { return structures; } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java index c2a68b691..efc6afc0f 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java @@ -3,17 +3,19 @@ package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import java.util.Collections; import java.util.Set; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; + + public class BiomeStructuresTemplate implements ObjectTemplate { @Value("structures") @Default - private @Meta Set<@Meta ConfiguredStructure> structures = Collections.emptySet(); - + private final @Meta Set<@Meta ConfiguredStructure> structures = Collections.emptySet(); + @Override public BiomeStructures get() { return new BiomeStructures(structures); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 6673aaa92..90e4ff4de 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -10,19 +10,20 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; + @Addon("config-structure") @Version("1.0.0") @Author("Terra") public class StructureAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) + .failThrough(); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index b614514b0..314bc0cb9 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; + public class StructureFactory implements ConfigFactory { @Override public ConfiguredStructure build(StructureTemplate config, TerraPlugin main) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index e3067f95a..20a4a8e1d 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -1,5 +1,10 @@ package com.dfsek.terra.addons.structure; +import net.jafama.FastMath; +import org.jetbrains.annotations.NotNull; + +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; @@ -12,36 +17,35 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.GenerationStage; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; -import java.util.Random; public class StructurePopulator implements GenerationStage, Chunkified { private final TerraPlugin main; - + public StructurePopulator(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { try(ProfileFrame ignore = main.getProfiler().profile("structure")) { if(world.getConfig().disableStructures()) return; - + int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); BiomeProvider provider = world.getBiomeProvider(); WorldConfig config = world.getConfig(); for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); - + if(!provider.getBiome(spawn, world.getSeed()).getContext().get(BiomeStructures.class).getStructures().contains(conf)) { continue; } - Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); + Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), + FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, + Rotation.fromDegrees(90 * random.nextInt(4))); } } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index 7bfaf029e..b9e86647c 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Final; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; + import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.Structure; @@ -10,33 +10,34 @@ import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -@SuppressWarnings({"unused", "FieldMayBeFinal"}) -public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { + +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) +public class StructureTemplate implements AbstractableTemplate { @Value("id") @Final private String id; - + @Value("scripts") private @Meta ProbabilityCollection<@Meta Structure> structure; - + @Value("spawn.start") private @Meta Range y; - + @Value("spawn") private @Meta StructureSpawn spawn; - + public String getID() { return id; } - + public ProbabilityCollection getStructures() { return structure; } - + public Range getY() { return y; } - + public StructureSpawn getSpawn() { return spawn; } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 79b37e7fa..283a45268 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -1,37 +1,38 @@ package com.dfsek.terra.addons.structure; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; +import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; + public class TerraStructure implements ConfiguredStructure { private final ProbabilityCollection structure; private final Range spawnStart; private final StructureSpawn spawn; - + public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; } - + @Override public ProbabilityCollection getStructure() { return structure; } - + @Override public Range getSpawnStart() { return spawnStart; } - + @Override public StructureSpawn getSpawn() { return spawn; } - + @Override public String getID() { return null; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index 9154f0599..c3109c635 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -1,13 +1,15 @@ package com.dfsek.terra.addons.structure.command; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Consumer; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import org.jetbrains.annotations.NotNull; -import java.util.function.Consumer; public class AsyncStructureFinder implements Runnable { protected final BiomeProvider provider; @@ -20,8 +22,9 @@ public class AsyncStructureFinder implements Runnable { protected final TerraPlugin main; private final Consumer callback; protected int searchSize = 1; - - public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + + public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, + int maxRadius, Consumer callback, TerraPlugin main) { //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); this.provider = provider; this.target = target; @@ -33,31 +36,23 @@ public class AsyncStructureFinder implements Runnable { this.world = world; this.callback = callback; } - + public Vector3 finalizeVector(Vector3 orig) { return orig;//target.getSpawn().getChunkSpawn(orig.getBlockX(), orig.getBlockZ(), world.getSeed()); } - - public boolean isValid(int x, int z, ConfiguredStructure target) { - //Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); - //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; - //Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - //return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation.fromDegrees(90 * random.nextInt(4))); - return false; - } - + @Override public void run() { int x = centerX; int z = centerZ; - + x /= searchSize; z /= searchSize; - + int run = 1; boolean toggle = true; boolean found = false; - + main: for(int i = startRadius; i < maxRadius; i++) { for(int j = 0; j < run; j++) { @@ -82,23 +77,33 @@ public class AsyncStructureFinder implements Runnable { Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; callback.accept(finalSpawn); } - + + public boolean isValid(int x, int z, ConfiguredStructure target) { + //Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); + //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; + //Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn + // .getBlockZ(), 16), world.getSeed())); + //return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation + // .fromDegrees(90 * random.nextInt(4))); + return false; + } + public ConfiguredStructure getTarget() { return target; } - + public World getWorld() { return world; } - + public BiomeProvider getProvider() { return provider; } - + public int getSearchSize() { return searchSize; } - + public void setSearchSize(int searchSize) { this.searchSize = searchSize; } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java index 8565e4f8d..9b5665688 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; import com.dfsek.terra.api.entity.CommandSender; + @Command( subcommands = { @Subcommand( diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java index 7ea9e0969..a1f7f89c1 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java @@ -1,5 +1,10 @@ package com.dfsek.terra.addons.structure.command.structure; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Sign; @@ -17,44 +22,33 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; @PlayerCommand @WorldCommand @DebugCommand -@Command( - arguments = { - @Argument( - value = "id" - ) - }, - usage = "/terra structure export " -) +@Command(arguments = @Argument("id"), usage = "/terra structure export ") public class StructureExportCommand implements CommandTemplate { @Inject private TerraPlugin main; - + @ArgumentTarget("id") private String id; - + @Override public void execute(CommandSender sender) { Player player = (Player) sender; - + Pair l = main.getWorldHandle().getSelectedLocation(player); - + Vector3 l1 = l.getLeft(); Vector3 l2 = l.getRight(); - + StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); - + int centerX = 0; int centerY = 0; int centerZ = 0; - + for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { @@ -70,11 +64,11 @@ public class StructureExportCommand implements CommandTemplate { } } } - + for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - + BlockState data = player.world().getBlockData(x, y, z); if(data.isStructureVoid()) continue; BlockEntity state = player.world().getBlockState(x, y, z); @@ -85,14 +79,15 @@ public class StructureExportCommand implements CommandTemplate { } } if(!data.isStructureVoid()) { - scriptBuilder.append("block(").append(x - l1.getBlockX() - centerX).append(", y + ").append(y - l1.getBlockY() - centerY).append(", ").append(z - l1.getBlockZ() - centerZ).append(", ") - .append("\""); + scriptBuilder.append("block(").append(x - l1.getBlockX() - centerX).append(", y + ").append( + y - l1.getBlockY() - centerY).append(", ").append(z - l1.getBlockZ() - centerZ).append(", ") + .append("\""); scriptBuilder.append(data.getAsString()).append("\");\n"); } } } } - + File file = new File(main.getDataFolder() + File.separator + "export" + File.separator + "structures", id + ".tesf"); try { file.getParentFile().mkdirs(); @@ -105,7 +100,7 @@ public class StructureExportCommand implements CommandTemplate { } catch(IOException e) { e.printStackTrace(); } - + sender.sendMessage("Exported structure to " + file.getAbsolutePath()); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index 7d10eac31..7122119a1 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; @@ -20,51 +23,43 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import java.util.Random; -import java.util.concurrent.ThreadLocalRandom; @PlayerCommand @DebugCommand @WorldCommand -@Command( - arguments = { - @Argument( - value = "structure", - tabCompleter = ScriptCompleter.class, - argumentParser = ScriptArgumentParser.class - ), - @Argument( - value = "rotation", - required = false, - tabCompleter = RotationCompleter.class, - argumentParser = IntegerArgumentParser.class, - defaultValue = "0" - ) - }, - switches = { - @Switch(value = "chunk", - aliases = "c" - ) - }, - usage = "/terra structure load [ROTATION] [-c]" -) +@Command(arguments = { + @Argument( + value = "structure", + tabCompleter = ScriptCompleter.class, + argumentParser = ScriptArgumentParser.class + ), + @Argument( + value = "rotation", + required = false, + tabCompleter = RotationCompleter.class, + argumentParser = IntegerArgumentParser.class, + defaultValue = "0" + ) +}, switches = @Switch(value = "chunk", + aliases = "c" +), usage = "/terra structure load [ROTATION] [-c]") public class StructureLoadCommand implements CommandTemplate { @ArgumentTarget("rotation") - private Integer rotation = 0; - + private final Integer rotation = 0; + @SwitchTarget("chunk") private boolean chunk; - + @ArgumentTarget("structure") private Structure script; - + @Inject private TerraPlugin main; - + @Override public void execute(CommandSender sender) { Player player = (Player) sender; - + long t = System.nanoTime(); Random random = new Random(ThreadLocalRandom.current().nextLong()); Rotation r; @@ -84,7 +79,7 @@ public class StructureLoadCommand implements CommandTemplate { script.generate(player.position(), player.world(), random, r); } long l = System.nanoTime() - t; - + sender.sendMessage("Took " + ((double) l) / 1000000 + "ms"); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index 0e115f7a6..f07fd2143 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.structure.command.structure; +import java.util.Locale; + import com.dfsek.terra.addons.structure.command.AsyncStructureFinder; import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; @@ -19,53 +21,53 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; -import java.util.Locale; @PlayerCommand @WorldCommand -@Command( - arguments = { - @Argument( - value = "structure", - tabCompleter = StructureCompleter.class, - argumentParser = StructureArgumentParser.class - ), - @Argument( - value = "radius", - required = false, - defaultValue = "100", - argumentParser = IntegerArgumentParser.class - ) - }, - switches = { - @Switch( - value = "teleport", - aliases = {"t", "tp"} - ) - } -) +@Command(arguments = { + @Argument( + value = "structure", + tabCompleter = StructureCompleter.class, + argumentParser = StructureArgumentParser.class + ), + @Argument( + value = "radius", + required = false, + defaultValue = "100", + argumentParser = IntegerArgumentParser.class + ) +}, switches = @Switch( + value = "teleport", + aliases = { "t", "tp" } +)) public class StructureLocateCommand implements CommandTemplate { @Inject private TerraPlugin main; - + @ArgumentTarget("structure") private ConfiguredStructure structure; - + @ArgumentTarget("radius") private Integer radius; - + @SwitchTarget("teleport") private boolean teleport; - + @Override public void execute(CommandSender sender) { Player player = (Player) sender; - - new Thread(new AsyncStructureFinder(player.world().getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { + + new Thread(new AsyncStructureFinder(player.world().getBiomeProvider(), structure, + player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), + player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage( + String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), + location.getBlockX(), location.getBlockZ(), + location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); + main.runPossiblyUnsafeTask( + () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } //else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index 3c1b982e0..94f2366c9 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -7,10 +7,11 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; + public class ScriptArgumentParser implements ArgumentParser { @Inject private TerraPlugin main; - + @Override public Structure parse(CommandSender sender, String arg) { return ((Player) sender).world().getConfig().getRegistry(Structure.class).get(arg); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 515dade11..030fcc718 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -7,10 +7,11 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; + public class StructureArgumentParser implements ArgumentParser { @Inject private TerraPlugin main; - + @Override public ConfiguredStructure parse(CommandSender sender, String arg) { return ((Player) sender).world().getConfig().getRegistry(ConfiguredStructure.class).get(arg); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java index 92ce61184..01d5ed287 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java @@ -1,10 +1,11 @@ package com.dfsek.terra.addons.structure.command.structure.completer; +import java.util.Arrays; +import java.util.List; + import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; -import java.util.Arrays; -import java.util.List; public class RotationCompleter implements TabCompleter { @Override diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java index d516312e7..0152d409b 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure.completer; +import java.util.List; +import java.util.stream.Collectors; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; @@ -7,15 +10,14 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; -import java.util.List; -import java.util.stream.Collectors; public class ScriptCompleter implements TabCompleter { @Inject private TerraPlugin main; - + @Override public List complete(CommandSender sender) { - return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getID).collect(Collectors.toList()); + return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getID).collect( + Collectors.toList()); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index f51538600..4daaa8d88 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure.completer; +import java.util.ArrayList; +import java.util.List; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; @@ -7,13 +10,11 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import java.util.ArrayList; -import java.util.List; public class StructureCompleter implements TabCompleter { @Inject private TerraPlugin main; - + @Override public List complete(CommandSender sender) { Player player = (Player) sender; diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index 42eecd8a0..4c207a0cf 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -1,12 +1,5 @@ package com.dfsek.terra.addons.structure.structures.loot; -import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.ItemStack; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -15,6 +8,15 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; +import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.ItemStack; + + /** * Representation of a single item entry within a Loot Table pool. */ @@ -22,7 +24,7 @@ public class Entry { private final Item item; private final long weight; private final List functions = new ArrayList<>(); - + /** * Instantiates an Entry from a JSON representation. * @@ -31,14 +33,14 @@ public class Entry { public Entry(JSONObject entry, TerraPlugin main) { String id = entry.get("name").toString(); this.item = main.getItemHandle().createItem(id); - + long weight1; try { weight1 = (long) entry.get("weight"); } catch(NullPointerException e) { weight1 = 1; } - + this.weight = weight1; if(entry.containsKey("functions")) { for(Object function : (JSONArray) entry.get("functions")) { @@ -69,17 +71,19 @@ public class Entry { JSONArray disabled = null; if(((JSONObject) function).containsKey("disabled_enchants")) disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants"); - functions.add(new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, main)); + functions.add( + new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, main)); break; } } } } - + /** * Fetches a single ItemStack from the Entry, applying all functions to it. * * @param r The Random instance to apply functions with + * * @return ItemStack - The ItemStack with all functions applied. */ public ItemStack getItem(Random r) { @@ -89,7 +93,7 @@ public class Entry { } return item; } - + /** * Gets the weight attribute of the Entry. * diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java index 8e7fd4998..d5d4ecaad 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java @@ -1,8 +1,5 @@ package com.dfsek.terra.addons.structure.structures.loot; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.api.inventory.ItemStack; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; @@ -12,16 +9,22 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; + + /** * Class representation of a Loot Table to populate chest loot. */ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { private final List pools = new ArrayList<>(); - + /** * Instantiates a LootTable from a JSON String. * * @param json The JSON String representing the loot table. + * * @throws ParseException if malformed JSON is passed. */ public LootTableImpl(String json, TerraPlugin main) throws ParseException { @@ -32,16 +35,7 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { pools.add(new Pool((JSONObject) pool, main)); } } - - @Override - public List getLoot(Random r) { - List itemList = new ArrayList<>(); - for(Pool pool : pools) { - itemList.addAll(pool.getItems(r)); - } - return itemList; - } - + @Override public void fillInventory(Inventory i, Random r) { List loot = getLoot(r); @@ -67,4 +61,13 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { } } } + + @Override + public List getLoot(Random r) { + List itemList = new ArrayList<>(); + for(Pool pool : pools) { + itemList.addAll(pool.getItems(r)); + } + return itemList; + } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index 58bba5717..e74fd5f6f 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -1,8 +1,5 @@ package com.dfsek.terra.addons.structure.structures.loot; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -11,6 +8,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + + /** * Representation of a Loot Table pool, or a set of items to be fetched independently. */ @@ -18,7 +20,7 @@ public class Pool { private final int max; private final int min; private final ProbabilityCollection entries; - + /** * Instantiates a Pool from a JSON representation. * @@ -34,21 +36,22 @@ public class Pool { max = FastMath.toIntExact((Long) ((JSONObject) amount).get("max")); min = FastMath.toIntExact((Long) ((JSONObject) amount).get("min")); } - + for(Object entryJSON : (JSONArray) pool.get("entries")) { Entry entry = new Entry((JSONObject) entryJSON, main); entries.add(entry, FastMath.toIntExact(entry.getWeight())); } } - + /** * Fetches a list of items from the pool using the provided Random instance. * * @param r The Random instance to use. + * * @return List<ItemStack> - The list of items fetched. */ public List getItems(Random r) { - + int rolls = r.nextInt(max - min + 1) + min; List items = new ArrayList<>(); for(int i = 0; i < rolls; i++) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java index 8b2780dbc..c97ea4eaa 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java @@ -1,9 +1,10 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; +import java.util.Random; + import com.dfsek.terra.api.inventory.ItemStack; -import java.util.Random; /** * Loot LootFunction fot setting the amount of an item. @@ -11,7 +12,7 @@ import java.util.Random; public class AmountFunction implements LootFunction { private final int max; private final int min; - + /** * Instantiates an AmountFunction. * @@ -22,12 +23,13 @@ public class AmountFunction implements LootFunction { this.min = min; this.max = max; } - + /** * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. * @param r The Random instance to use. + * * @return - ItemStack - The mutated ItemStack. */ @Override diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java index 2643cc7f0..d778f13c9 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java @@ -1,10 +1,11 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; +import java.util.Random; + import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Damageable; import com.dfsek.terra.api.inventory.item.ItemMeta; -import java.util.Random; /** * Loot LootFunction for setting the damage on items in Loot Tables @@ -12,7 +13,7 @@ import java.util.Random; public class DamageFunction implements LootFunction { private final int max; private final int min; - + /** * Instantiates a DamageFunction. * @@ -23,12 +24,13 @@ public class DamageFunction implements LootFunction { this.min = min; this.max = max; } - + /** * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. * @param r The Random instance to use. + * * @return - ItemStack - The mutated ItemStack. */ @Override diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index df14c5472..b64b1808d 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -1,9 +1,5 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; import net.jafama.FastMath; import org.json.simple.JSONArray; @@ -12,31 +8,38 @@ import java.util.Collections; import java.util.List; import java.util.Random; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; + + public class EnchantFunction implements LootFunction { private final int min; private final int max; private final JSONArray disabled; private final TerraPlugin main; - - + + public EnchantFunction(int min, int max, JSONArray disabled, TerraPlugin main) { this.max = max; this.min = min; this.disabled = disabled; this.main = main; } - + /** * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. * @param r The Random instance to use. + * * @return - ItemStack - The mutated ItemStack. */ @Override public ItemStack apply(ItemStack original, Random r) { if(original.getItemMeta() == null) return original; - + double enchant = (r.nextDouble() * (max - min)) + min; List possible = new ArrayList<>(); for(Enchantment ench : main.getItemHandle().getEnchantments()) { @@ -57,7 +60,9 @@ public class EnchantFunction implements LootFunction { try { meta.addEnchantment(chosen, FastMath.max(lvl, 1)); } catch(IllegalArgumentException e) { - main.logger().warning("Attempted to enchant " + original.getType() + " with " + chosen + " at level " + FastMath.max(lvl, 1) + ", but an unexpected exception occurred! Usually this is caused by a misbehaving enchantment plugin."); + main.logger().warning( + "Attempted to enchant " + original.getType() + " with " + chosen + " at level " + FastMath.max(lvl, 1) + + ", but an unexpected exception occurred! Usually this is caused by a misbehaving enchantment plugin."); } } original.setItemMeta(meta); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java index 5d0f1e97b..eaeebae71 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java @@ -1,9 +1,10 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; +import java.util.Random; + import com.dfsek.terra.api.inventory.ItemStack; -import java.util.Random; /** * Interface for mutating items in Loot Tables. @@ -14,6 +15,7 @@ public interface LootFunction { * * @param original The ItemStack on which to apply the function. * @param r The Random instance to use. + * * @return - ItemStack - The mutated ItemStack. */ ItemStack apply(ItemStack original, Random r); diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java index 4aefa0982..031d7eb78 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java @@ -4,42 +4,43 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.Column; import com.dfsek.terra.api.world.World; + public class ColumnImpl implements Column { private final int x; private final int z; private final World world; - + public ColumnImpl(int x, int z, World world) { this.x = x; this.z = z; this.world = world; } - + @Override public int getX() { return x; } - + @Override public int getZ() { return z; } - + @Override public BlockState getBlock(int y) { return world.getBlockData(x, y, z); } - + @Override public World getWorld() { return world; } - + @Override public int getMinY() { return world.getMinHeight(); } - + @Override public int getMaxY() { return world.getMaxHeight(); diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 884e36578..5cbec0467 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -13,29 +13,32 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; + @Addon("generation-stage-feature") @Version("1.0.0") @Author("Terra") public class FeatureGenerationAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main))) - .failThrough(); - + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack() + .getOrCreateRegistry(GenerationStageProvider.class) + .register("FEATURE", pack -> new FeatureGenerationStage(main))) + .failThrough(); + main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); - } - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); + } + }) + .failThrough(); } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 1d228df30..58814f7fd 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -10,13 +10,14 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.GenerationStage; + public class FeatureGenerationStage implements GenerationStage { private final TerraPlugin main; - + public FeatureGenerationStage(TerraPlugin main) { this.main = main; } - + @Override @SuppressWarnings("try") public void populate(World world, Chunk chunk) { @@ -32,11 +33,12 @@ public class FeatureGenerationStage implements GenerationStage { world.getBiomeProvider().getBiome(tx, tz, seed).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { if(feature.getDistributor().matches(tx, tz, seed)) { feature.getLocator() - .getSuitableCoordinates(column) - .forEach(y -> - feature.getStructure(world, tx, y, tz) - .generate(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), Rotation.NONE) - ); + .getSuitableCoordinates(column) + .forEach(y -> + feature.getStructure(world, tx, y, tz) + .generate(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), + Rotation.NONE) + ); } }); } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java index bcf7d67a3..19fe4d503 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java @@ -1,17 +1,18 @@ package com.dfsek.terra.addons.generation.feature.config; +import java.util.List; + import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.structure.feature.Feature; -import java.util.List; public class BiomeFeatures implements Properties { private final List features; - + public BiomeFeatures(List features) { this.features = features; } - + public List getFeatures() { return features; } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java index 8388f9d01..ae25042ae 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java @@ -3,17 +3,19 @@ package com.dfsek.terra.addons.generation.feature.config; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Feature; import java.util.Collections; import java.util.List; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.structure.feature.Feature; + + public class BiomeFeaturesTemplate implements ObjectTemplate { @Value("features") @Default - private @Meta List<@Meta Feature> features = Collections.emptyList(); - + private final @Meta List<@Meta Feature> features = Collections.emptyList(); + @Override public BiomeFeatures get() { return new BiomeFeatures(features); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java index dc4b5e789..fc28166ed 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFlora.java @@ -1,16 +1,17 @@ package com.dfsek.terra.addons.generation.flora; -import com.dfsek.terra.api.properties.Properties; - import java.util.List; +import com.dfsek.terra.api.properties.Properties; + + public class BiomeFlora implements Properties { private final List layers; - + public BiomeFlora(List layers) { this.layers = layers; } - + public List getLayers() { return layers; } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java index 0ada6c783..7f386b5d3 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/BiomeFloraTemplate.java @@ -3,16 +3,18 @@ package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; -import com.dfsek.terra.api.config.meta.Meta; import java.util.Collections; import java.util.List; +import com.dfsek.terra.api.config.meta.Meta; + + public class BiomeFloraTemplate implements ObjectTemplate { @Value("flora") @Default - private @Meta List<@Meta FloraLayer> flora = Collections.emptyList(); - + private final @Meta List<@Meta FloraLayer> flora = Collections.emptyList(); + @Override public BiomeFlora get() { return new BiomeFlora(flora); diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java index 01f03d4ef..9e86b3b8a 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationAddon.java @@ -12,33 +12,35 @@ import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.GenerationStageProvider; + @Addon("generation-stage-flora") @Version("1.0.0") @Author("Terra") public class FloraGenerationAddon extends TerraAddon { - + @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraGenerationStage(main)); - }) - .failThrough(); - + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", + pack -> new FloraGenerationStage(main)); + }) + .failThrough(); + main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); - } - }) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(TerraBiome.class)) { + event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); + } + }) + .failThrough(); } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java index 8957fad87..7c1d83683 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraGenerationStage.java @@ -1,5 +1,12 @@ package com.dfsek.terra.addons.generation.flora; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; @@ -8,41 +15,39 @@ import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.GenerationStage; -import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; /** * Populates Flora */ public class FloraGenerationStage implements GenerationStage { private final TerraPlugin main; - + public FloraGenerationStage(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { try(ProfileFrame ignore = main.getProfiler().profile("flora")) { if(world.getConfig().disableFlora()) return; - + long seed = world.getSeed(); BiomeProvider provider = world.getBiomeProvider(); Map> layers = new HashMap<>(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { Vector2 l = new Vector2(x, z); - layers.put(l, provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed).getContext().get(BiomeFlora.class).getLayers()); + layers.put(l, provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed) + .getContext() + .get(BiomeFlora.class) + .getLayers()); } } - + Random random = PopulationUtil.getRandom(chunk); - + int iter = 0; boolean finished = false; while(!finished) { diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java index 7f8c23b30..3928383d8 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayer.java @@ -7,39 +7,41 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; + public class FloraLayer { protected final double density; protected final Range level; protected final ProbabilityCollection layer; protected final NoiseSampler noise; - + public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; this.noise = noise; } - - public NoiseSampler getNoise() { - return noise; - } - - public double getDensity() { - return density; - } - - public Range getLevel() { - return level; - } - - public ProbabilityCollection getLayer() { - return layer; - } - + public void place(Chunk chunk, Vector2 coords) { int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); Flora item = layer.get(noise, cx + coords.getX(), cz + coords.getZ(), chunk.getWorld().getSeed()); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); + item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach( + block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); + } + + public NoiseSampler getNoise() { + return noise; + } + + public double getDensity() { + return density; + } + + public Range getLevel() { + return level; + } + + public ProbabilityCollection getLayer() { + return layer; } } diff --git a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java index 4743c6a0b..36b10442b 100644 --- a/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java +++ b/common/addons/generation-stage-flora/src/main/java/com/dfsek/terra/addons/generation/flora/FloraLayerLoader.java @@ -2,26 +2,28 @@ package com.dfsek.terra.addons.generation.flora; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; + import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.Flora; + public class FloraLayerLoader implements ObjectTemplate { @Value("density") private @Meta double density; - + @Value("y") private @Meta Range y; - + @Value("items") private @Meta ProbabilityCollection<@Meta Flora> items; - + @Value("distribution") private @Meta NoiseSampler distribution; - - + + @Override public FloraLayer get() { return new FloraLayer(density, y, items, distribution); diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index f6b61e69a..53ed6b2b4 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.yaml; import com.dfsek.tectonic.yaml.YamlConfiguration; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -10,22 +11,23 @@ import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.injection.annotations.Inject; + @Addon("language-yaml") @Version("1.0.0") @Author("Terra") public class YamlAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationDiscoveryEvent.class) - .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { - main.getDebugLogger().info("Discovered config " + entry.getKey()); - event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); - }))) - .failThrough(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationDiscoveryEvent.class) + .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { + main.getDebugLogger().info("Discovered config " + entry.getKey()); + event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); + }))) + .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/README.md b/common/addons/structure-terrascript-loader/README.md index 1cfd954f7..5bf8f622a 100644 --- a/common/addons/structure-terrascript-loader/README.md +++ b/common/addons/structure-terrascript-loader/README.md @@ -1,4 +1,4 @@ # structure-terrascript-loader -Implements the TerraScript structure scripting language, and loads all `*.tesf` files -into the Structure registry. \ No newline at end of file +Implements the TerraScript structure scripting language, and loads all `*.tesf` +files into the Structure registry. \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index b60ebb2aa..6857c2bf0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -1,6 +1,10 @@ package com.dfsek.terra.addons.terrascript; import com.dfsek.tectonic.exception.LoadException; + +import java.io.InputStream; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.api.TerraPlugin; @@ -15,8 +19,6 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import java.io.InputStream; -import java.util.Map; @Addon("structure-terrascript-loader") @Author("Terra") @@ -24,26 +26,27 @@ import java.util.Map; public class TerraScriptAddon extends TerraAddon { @Inject private TerraPlugin main; - + @Override public void initialize() { main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); - structureRegistry.register(structureScript.getID(), structureScript); - } catch(ParseException e) { - throw new LoadException("Failed to load script: ", e); - } + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); + event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { + for(Map.Entry entry : entries) { + try { + StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, + event.getPack().getRegistryFactory().create()); + structureRegistry.register(structureScript.getID(), structureScript); + } catch(ParseException e) { + throw new LoadException("Failed to load script: ", e); } - }).close(); - }) - .failThrough(); + } + }).close(); + }) + .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java index 534e57c5b..53f7b939a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java @@ -1,29 +1,30 @@ package com.dfsek.terra.addons.terrascript.buffer; +import java.util.ArrayList; +import java.util.List; + import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -import java.util.ArrayList; -import java.util.List; public class Cell implements BufferedItem { private final List items = new ArrayList<>(); - private String mark = null; - + private String mark; + @Override public void paste(Vector3 origin, World world) { items.forEach(item -> item.paste(origin.clone(), world)); } - + public void add(BufferedItem item) { items.add(item); } - + public String getMark() { return mark; } - + public void setMark(String mark) { this.mark = mark; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java index 71adec30f..b586c1792 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java @@ -1,13 +1,14 @@ package com.dfsek.terra.addons.terrascript.buffer; +import java.util.LinkedHashMap; +import java.util.Map; + import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import java.util.LinkedHashMap; -import java.util.Map; /** * Buffer implementation that directly pastes to the world. @@ -16,41 +17,41 @@ public class DirectBuffer implements Buffer { private final Vector3 origin; private final World target; private final Map marks = new LinkedHashMap<>(); - + public DirectBuffer(Vector3 origin, World target) { this.origin = origin; this.target = target; } - + @Override public void paste(Vector3 origin, Chunk chunk) { // no-op } - + @Override public void paste(Vector3 origin, World world) { // no-op } - + @Override public Buffer addItem(BufferedItem item, Vector3 location) { item.paste(origin.clone().add(location), target); return this; } - - @Override - public Vector3 getOrigin() { - return origin; - } - - @Override - public String getMark(Vector3 location) { - return marks.get(location); - } - + @Override public Buffer setMark(String mark, Vector3 location) { marks.put(location, mark); return this; } + + @Override + public Vector3 getOrigin() { + return origin; + } + + @Override + public String getMark(Vector3 location) { + return marks.get(location); + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java index 4c59a1cf9..9c29f55de 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java @@ -6,43 +6,44 @@ import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; + public class IntermediateBuffer implements Buffer { private final Buffer original; private final Vector3 offset; - + public IntermediateBuffer(Buffer original, Vector3 offset) { this.original = original; this.offset = offset.clone(); } - + @Override public void paste(Vector3 origin, Chunk chunk) { // no-op } - + @Override public void paste(Vector3 origin, World world) { // no-op } - + @Override public Buffer addItem(BufferedItem item, Vector3 location) { return original.addItem(item, location.clone().add(offset)); } - - @Override - public Vector3 getOrigin() { - return original.getOrigin().clone().add(offset); - } - - @Override - public String getMark(Vector3 location) { - return original.getMark(location.clone().add(offset)); - } - + @Override public Buffer setMark(String mark, Vector3 location) { original.setMark(mark, location.clone().add(offset)); return this; } + + @Override + public Vector3 getOrigin() { + return original.getOrigin().clone().add(offset); + } + + @Override + public String getMark(Vector3 location) { + return original.getMark(location.clone().add(offset)); + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java index 79025f0d5..5c26ab61c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java @@ -1,28 +1,26 @@ package com.dfsek.terra.addons.terrascript.buffer; +import net.jafama.FastMath; + +import java.util.LinkedHashMap; +import java.util.Map; + import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import net.jafama.FastMath; -import java.util.LinkedHashMap; -import java.util.Map; public class StructureBuffer implements Buffer { private final Map bufferedItemMap = new LinkedHashMap<>(); private final Vector3 origin; private boolean succeeded; - + public StructureBuffer(Vector3 origin) { this.origin = origin; } - - public void paste(Vector3 origin, World world) { - bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3), world))); - } - + public void paste(Vector3 origin, Chunk chunk) { bufferedItemMap.forEach(((location, item) -> { Vector3 current = origin.clone().add(location); @@ -31,13 +29,28 @@ public class StructureBuffer implements Buffer { item.paste(current, chunk.getWorld()); })); } - + + public void paste(Vector3 origin, World world) { + bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3), world))); + } + @Override public Buffer addItem(BufferedItem item, Vector3 location) { bufferedItemMap.computeIfAbsent(location.clone(), l -> new Cell()).add(item); return this; } - + + @Override + public Buffer setMark(String mark, Vector3 location) { + bufferedItemMap.computeIfAbsent(location.clone(), l -> new Cell()).setMark(mark); + return this; + } + + @Override + public Vector3 getOrigin() { + return origin.clone(); + } + @Override public String getMark(Vector3 location) { Cell cell = bufferedItemMap.get(location); @@ -46,23 +59,12 @@ public class StructureBuffer implements Buffer { } return null; } - - @Override - public Buffer setMark(String mark, Vector3 location) { - bufferedItemMap.computeIfAbsent(location.clone(), l -> new Cell()).setMark(mark); - return this; - } - - public void setSucceeded(boolean succeeded) { - this.succeeded = succeeded; - } - + public boolean succeeded() { return succeeded; } - - @Override - public Vector3 getOrigin() { - return origin.clone(); + + public void setSucceeded(boolean succeeded) { + this.succeeded = succeeded; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java index 0ccaaa938..6ea90fe5b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java @@ -7,19 +7,20 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; + public class BufferedBlock implements BufferedItem { private final BlockState data; private final boolean overwrite; private final TerraPlugin main; private final boolean waterlog; - + public BufferedBlock(BlockState data, boolean overwrite, TerraPlugin main, boolean waterlog) { this.data = data; this.overwrite = overwrite; this.main = main; this.waterlog = waterlog; } - + @Override public void paste(Vector3 origin, World world) { try { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java index 300b9c989..685503fb4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java @@ -8,16 +8,17 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -public class BufferedEntity implements BufferedItem { +public class BufferedEntity implements BufferedItem { + private final EntityType type; private final TerraPlugin main; - + public BufferedEntity(EntityType type, TerraPlugin main) { this.type = type; this.main = main; } - + @Override public void paste(Vector3 origin, World world) { Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index 176184216..c6e350f3e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.buffer.items; +import java.util.Random; + import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; @@ -10,19 +12,18 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -import java.util.Random; public class BufferedLootApplication implements BufferedItem { private final LootTable table; private final TerraPlugin main; private final StructureScript structure; - + public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { this.table = table; this.main = main; this.structure = structure; } - + @Override public void paste(Vector3 origin, World world) { try { @@ -32,11 +33,11 @@ public class BufferedLootApplication implements BufferedItem { return; } Container container = (Container) data; - + LootPopulateEvent event = new LootPopulateEvent(container, table, world.getConfig().getPack(), structure); main.getEventManager().callEvent(event); if(event.isCancelled()) return; - + event.getTable().fillInventory(container.getInventory(), new Random(origin.hashCode())); data.update(false); } catch(Exception e) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java index 2073a0105..880061df3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java @@ -5,13 +5,14 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; + public class BufferedPulledBlock implements BufferedItem { private final BlockState data; - + public BufferedPulledBlock(BlockState data) { this.data = data; } - + @Override public void paste(Vector3 origin, World world) { Vector3 mutable = origin.clone(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java index 769f29f26..7181e1f47 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java @@ -6,15 +6,16 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; + public class BufferedStateManipulator implements BufferedItem { private final TerraPlugin main; private final String data; - + public BufferedStateManipulator(TerraPlugin main, String state) { this.main = main; this.data = state; } - + @Override public void paste(Vector3 origin, World world) { try { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index b359e7b08..4aeefabf0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -1,5 +1,11 @@ package com.dfsek.terra.addons.terrascript.parser; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Item; @@ -42,66 +48,57 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.addons.terrascript.tokenizer.Token; import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; @SuppressWarnings("unchecked") public class Parser { private final String data; private final Map>> functions = new HashMap<>(); private final List ignoredFunctions = new ArrayList<>(); - + private String id; - + public Parser(String data) { this.data = data; } - + public Parser registerFunction(String name, FunctionBuilder> functionBuilder) { functions.put(name, functionBuilder); return this; } - + public Parser ignoreFunction(String name) { ignoredFunctions.add(name); return this; } - - public String getID() { - return id; - } - + /** * Parse input * * @return executable {@link Block} + * * @throws ParseException If parsing fails. */ public Block parse() throws ParseException { Tokenizer tokens = new Tokenizer(data); - + // Parse ID ParserUtil.checkType(tokens.consume(), Token.Type.ID); // First token must be ID Token idToken = tokens.get(); ParserUtil.checkType(tokens.consume(), Token.Type.STRING); // Second token must be string literal containing ID ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); this.id = idToken.getContent(); - - + + return parseBlock(tokens, new HashMap<>(), false); } - - + private Keyword parseLoopLike(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { - + Token identifier = tokens.consume(); ParserUtil.checkType(identifier, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP); - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); - + switch(identifier.getType()) { case FOR_LOOP: return parseForLoop(tokens, variableMap, identifier.getPosition()); @@ -113,27 +110,29 @@ public class Parser { throw new UnsupportedOperationException("Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition()); } } - - private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) throws ParseException { + + private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) + throws ParseException { Returnable first = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(first, Returnable.ReturnType.BOOLEAN); - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - + return new WhileKeyword(parseStatementBlock(tokens, variableMap, true), (Returnable) first, start); // While loop } - - private IfKeyword parseIfStatement(Tokenizer tokens, Map variableMap, Position start, boolean loop) throws ParseException { + + private IfKeyword parseIfStatement(Tokenizer tokens, Map variableMap, Position start, boolean loop) + throws ParseException { Returnable condition = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(condition, Returnable.ReturnType.BOOLEAN); - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - + Block elseBlock = null; Block statement = parseStatementBlock(tokens, variableMap, loop); - + List, Block>> elseIf = new ArrayList<>(); - + while(tokens.hasNext() && tokens.get().getType().equals(Token.Type.ELSE)) { tokens.consume(); // Consume else. if(tokens.get().getType().equals(Token.Type.IF_STATEMENT)) { @@ -146,12 +145,13 @@ public class Parser { break; // Else must be last. } } - + return new IfKeyword(statement, (Returnable) condition, elseIf, elseBlock, start); // If statement } - - private Block parseStatementBlock(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { - + + private Block parseStatementBlock(Tokenizer tokens, Map variableMap, boolean loop) + throws ParseException { + if(tokens.get().getType().equals(Token.Type.BLOCK_BEGIN)) { ParserUtil.checkType(tokens.consume(), Token.Type.BLOCK_BEGIN); Block block = parseBlock(tokens, variableMap, loop); @@ -164,7 +164,7 @@ public class Parser { return block; } } - + private ForKeyword parseForLoop(Tokenizer tokens, Map old, Position start) throws ParseException { Map variableMap = new HashMap<>(old); // New scope Token f = tokens.get(); @@ -181,19 +181,21 @@ public class Parser { Returnable conditional = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(conditional, Returnable.ReturnType.BOOLEAN); ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - + Item incrementer; Token token = tokens.get(); if(variableMap.containsKey(token.getContent())) { // Assume variable assignment incrementer = parseAssignment(tokens, variableMap); } else incrementer = parseFunction(tokens, true, variableMap); - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - - return new ForKeyword(parseStatementBlock(tokens, variableMap, true), initializer, (Returnable) conditional, incrementer, start); + + return new ForKeyword(parseStatementBlock(tokens, variableMap, true), initializer, (Returnable) conditional, incrementer, + start); } - - private Returnable parseExpression(Tokenizer tokens, boolean full, Map variableMap) throws ParseException { + + private Returnable parseExpression(Tokenizer tokens, boolean full, Map variableMap) + throws ParseException { boolean booleanInverted = false; // Check for boolean not operator boolean negate = false; if(tokens.get().getType().equals(Token.Type.BOOLEAN_NOT)) { @@ -203,11 +205,11 @@ public class Parser { negate = true; tokens.consume(); } - + Token id = tokens.get(); - + ParserUtil.checkType(id, Token.Type.IDENTIFIER, Token.Type.BOOLEAN, Token.Type.STRING, Token.Type.NUMBER, Token.Type.GROUP_BEGIN); - + Returnable expression; if(id.isConstant()) { expression = parseConstantExpression(tokens); @@ -221,7 +223,7 @@ public class Parser { expression = new Getter(id.getContent(), id.getPosition(), variableMap.get(id.getContent())); } else throw new ParseException("Unexpected token \" " + id.getContent() + "\"", id.getPosition()); } - + if(booleanInverted) { // Invert operation if boolean not detected ParserUtil.checkReturnType(expression, Returnable.ReturnType.BOOLEAN); expression = new BooleanNotOperation((Returnable) expression, expression.getPosition()); @@ -229,13 +231,13 @@ public class Parser { ParserUtil.checkReturnType(expression, Returnable.ReturnType.NUMBER); expression = new NegationOperation((Returnable) expression, expression.getPosition()); } - + if(full && tokens.get().isBinaryOperator()) { // Parse binary operations return parseBinaryOperation(expression, tokens, variableMap); } return expression; } - + private ConstantExpression parseConstantExpression(Tokenizer tokens) throws ParseException { Token constantToken = tokens.consume(); Position position = constantToken.getPosition(); @@ -248,24 +250,25 @@ public class Parser { case BOOLEAN: return new BooleanConstant(Boolean.parseBoolean(constantToken.getContent()), position); default: - throw new UnsupportedOperationException("Unsupported constant token: " + constantToken.getType() + " at position: " + position); + throw new UnsupportedOperationException( + "Unsupported constant token: " + constantToken.getType() + " at position: " + position); } } - + private Returnable parseGroup(Tokenizer tokens, Map variableMap) throws ParseException { ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); Returnable expression = parseExpression(tokens, true, variableMap); // Parse inside of group as a separate expression ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); return expression; } - - - private BinaryOperation parseBinaryOperation(Returnable left, Tokenizer tokens, Map variableMap) throws ParseException { + + private BinaryOperation parseBinaryOperation(Returnable left, Tokenizer tokens, Map variableMap) + throws ParseException { Token binaryOperator = tokens.consume(); ParserUtil.checkBinaryOperator(binaryOperator); - + Returnable right = parseExpression(tokens, false, variableMap); - + Token other = tokens.get(); if(ParserUtil.hasPrecedence(binaryOperator.getType(), other.getType())) { return assemble(left, parseBinaryOperation(right, tokens, variableMap), binaryOperator); @@ -274,7 +277,7 @@ public class Parser { } return assemble(left, right, binaryOperator); } - + private BinaryOperation assemble(Returnable left, Returnable right, Token binaryOperator) throws ParseException { if(binaryOperator.isStrictNumericOperator()) ParserUtil.checkArithmeticOperation(left, right, binaryOperator); // Numeric type checking @@ -300,7 +303,8 @@ public class Parser { case LESS_THAN_OPERATOR: return new LessThanStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); case GREATER_THAN_OR_EQUALS_OPERATOR: - return new GreaterOrEqualsThanStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); + return new GreaterOrEqualsThanStatement((Returnable) left, (Returnable) right, + binaryOperator.getPosition()); case LESS_THAN_OR_EQUALS_OPERATOR: return new LessThanOrEqualsStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); case BOOLEAN_AND: @@ -313,35 +317,37 @@ public class Parser { throw new UnsupportedOperationException("Unsupported binary operator: " + binaryOperator.getType()); } } - - private Declaration parseVariableDeclaration(Tokenizer tokens, Map variableMap) throws ParseException { + + private Declaration parseVariableDeclaration(Tokenizer tokens, Map variableMap) + throws ParseException { Token type = tokens.consume(); ParserUtil.checkType(type, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.NUMBER_VARIABLE); - + Returnable.ReturnType returnType = ParserUtil.getVariableReturnType(type); - + ParserUtil.checkVarType(type, returnType); // Check for type mismatch Token identifier = tokens.consume(); ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); if(functions.containsKey(identifier.getContent()) || variableMap.containsKey(identifier.getContent())) throw new ParseException(identifier.getContent() + " is already defined in this scope", identifier.getPosition()); ParserUtil.checkType(tokens.consume(), Token.Type.ASSIGNMENT); - + Returnable value = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(value, returnType); - + variableMap.put(identifier.getContent(), returnType); - + return new Declaration<>(tokens.get().getPosition(), identifier.getContent(), value, returnType); } - + private Block parseBlock(Tokenizer tokens, Map superVars, boolean loop) throws ParseException { List> parsedItems = new ArrayList<>(); - - Map parsedVariables = new HashMap<>(superVars); // New hashmap as to not mutate parent scope's declarations. - + + Map parsedVariables = new HashMap<>( + superVars); // New hashmap as to not mutate parent scope's declarations. + Token first = tokens.get(); - + while(tokens.hasNext()) { Token token = tokens.get(); if(token.getType().equals(Token.Type.BLOCK_END)) break; // Stop parsing at block end. @@ -353,14 +359,16 @@ public class Parser { } return new Block(parsedItems, first.getPosition()); } - + private Item parseItem(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { Token token = tokens.get(); if(loop) ParserUtil.checkType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.RETURN, Token.Type.BREAK, Token.Type.CONTINUE, Token.Type.FAIL); + Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, + Token.Type.RETURN, Token.Type.BREAK, Token.Type.CONTINUE, Token.Type.FAIL); else ParserUtil.checkType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.RETURN, Token.Type.FAIL); - + Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.RETURN, + Token.Type.FAIL); + if(token.isLoopLike()) { // Parse loop-like tokens (if, while, etc) return parseLoopLike(tokens, variableMap, loop); } else if(token.isIdentifier()) { // Parse identifiers @@ -368,71 +376,76 @@ public class Parser { return parseAssignment(tokens, variableMap); } else return parseFunction(tokens, true, variableMap); } else if(token.isVariableDeclaration()) { - + return parseVariableDeclaration(tokens, variableMap); - + } else if(token.getType().equals(Token.Type.RETURN)) return new ReturnKeyword(tokens.consume().getPosition()); else if(token.getType().equals(Token.Type.BREAK)) return new BreakKeyword(tokens.consume().getPosition()); else if(token.getType().equals(Token.Type.CONTINUE)) return new ContinueKeyword(tokens.consume().getPosition()); else if(token.getType().equals(Token.Type.FAIL)) return new FailKeyword(tokens.consume().getPosition()); else throw new UnsupportedOperationException("Unexpected token " + token.getType() + ": " + token.getPosition()); } - + private Assignment parseAssignment(Tokenizer tokens, Map variableMap) throws ParseException { Token identifier = tokens.consume(); - + ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); - + ParserUtil.checkType(tokens.consume(), Token.Type.ASSIGNMENT); - + Returnable value = parseExpression(tokens, true, variableMap); - + ParserUtil.checkReturnType(value, variableMap.get(identifier.getContent())); - + return new Assignment<>(value, identifier.getContent(), identifier.getPosition()); } - - private Function parseFunction(Tokenizer tokens, boolean fullStatement, Map variableMap) throws ParseException { + + private Function parseFunction(Tokenizer tokens, boolean fullStatement, Map variableMap) + throws ParseException { Token identifier = tokens.consume(); ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); // First token must be identifier - + if(!functions.containsKey(identifier.getContent())) throw new ParseException("No such function \"" + identifier.getContent() + "\"", identifier.getPosition()); - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); // Second is body begin - - + + List> args = getArgs(tokens, variableMap); // Extract arguments, consume the rest. - + ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); // Remove body end - + if(fullStatement) ParserUtil.checkType(tokens.get(), Token.Type.STATEMENT_END); - + if(ignoredFunctions.contains(identifier.getContent())) { return Function.NULL; } - + if(functions.containsKey(identifier.getContent())) { FunctionBuilder builder = functions.get(identifier.getContent()); - + if(builder.argNumber() != -1 && args.size() != builder.argNumber()) throw new ParseException("Expected " + builder.argNumber() + " arguments, found " + args.size(), identifier.getPosition()); - + for(int i = 0; i < args.size(); i++) { Returnable argument = args.get(i); if(builder.getArgument(i) == null) - throw new ParseException("Unexpected argument at position " + i + " in function " + identifier.getContent(), identifier.getPosition()); + throw new ParseException("Unexpected argument at position " + i + " in function " + identifier.getContent(), + identifier.getPosition()); ParserUtil.checkReturnType(argument, builder.getArgument(i)); } return builder.build(args, identifier.getPosition()); } throw new UnsupportedOperationException("Unsupported function: " + identifier.getContent()); } - - + + public String getID() { + return id; + } + private List> getArgs(Tokenizer tokens, Map variableMap) throws ParseException { List> args = new ArrayList<>(); - + while(!tokens.get().getType().equals(Token.Type.GROUP_END)) { args.add(parseExpression(tokens, true, variableMap)); ParserUtil.checkType(tokens.get(), Token.Type.SEPARATOR, Token.Type.GROUP_END); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java index 3e3d7aa48..737efebcd 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java @@ -1,83 +1,94 @@ package com.dfsek.terra.addons.terrascript.parser; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Token; - import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; +import com.dfsek.terra.addons.terrascript.tokenizer.Token; + + public class ParserUtil { - + private static final Map> PRECEDENCE = new HashMap<>(); // If second has precedence, true. - private static final List ARITHMETIC = Arrays.asList(Token.Type.ADDITION_OPERATOR, Token.Type.SUBTRACTION_OPERATOR, Token.Type.MULTIPLICATION_OPERATOR, Token.Type.DIVISION_OPERATOR, Token.Type.MODULO_OPERATOR); - private static final List COMPARISON = Arrays.asList(Token.Type.EQUALS_OPERATOR, Token.Type.NOT_EQUALS_OPERATOR, Token.Type.LESS_THAN_OPERATOR, Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, Token.Type.GREATER_THAN_OPERATOR, Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR); - + private static final List ARITHMETIC = Arrays.asList(Token.Type.ADDITION_OPERATOR, Token.Type.SUBTRACTION_OPERATOR, + Token.Type.MULTIPLICATION_OPERATOR, Token.Type.DIVISION_OPERATOR, + Token.Type.MODULO_OPERATOR); + private static final List COMPARISON = Arrays.asList(Token.Type.EQUALS_OPERATOR, Token.Type.NOT_EQUALS_OPERATOR, + Token.Type.LESS_THAN_OPERATOR, Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, + Token.Type.GREATER_THAN_OPERATOR, + Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR); + static { // Setup precedence Map add = new HashMap<>(); // Addition/subtraction before Multiplication/division. add.put(Token.Type.MULTIPLICATION_OPERATOR, true); add.put(Token.Type.DIVISION_OPERATOR, true); - + PRECEDENCE.put(Token.Type.ADDITION_OPERATOR, add); PRECEDENCE.put(Token.Type.SUBTRACTION_OPERATOR, add); - + Map numericBoolean = new HashMap<>(); - + ARITHMETIC.forEach(op -> numericBoolean.put(op, true)); // Numbers before comparison COMPARISON.forEach(op -> PRECEDENCE.put(op, numericBoolean)); - - + + Map booleanOps = new HashMap<>(); ARITHMETIC.forEach(op -> booleanOps.put(op, true)); // Everything before boolean COMPARISON.forEach(op -> booleanOps.put(op, true)); - - + + PRECEDENCE.put(Token.Type.BOOLEAN_AND, booleanOps); PRECEDENCE.put(Token.Type.BOOLEAN_OR, booleanOps); } - + public static void checkType(Token token, Token.Type... expected) throws ParseException { for(Token.Type type : expected) if(token.getType().equals(type)) return; throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition()); } - + public static void checkReturnType(Returnable returnable, Returnable.ReturnType... types) throws ParseException { for(Returnable.ReturnType type : types) if(returnable.returnType().equals(type)) return; throw new ParseException("Expected " + Arrays.toString(types) + " but found " + returnable.returnType(), returnable.getPosition()); } - + public static void checkArithmeticOperation(Returnable left, Returnable right, Token operation) throws ParseException { if(!left.returnType().equals(Returnable.ReturnType.NUMBER) || !right.returnType().equals(Returnable.ReturnType.NUMBER)) { - throw new ParseException("Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), operation.getPosition()); + throw new ParseException( + "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), + operation.getPosition()); } } - + public static void checkBooleanOperation(Returnable left, Returnable right, Token operation) throws ParseException { if(!left.returnType().equals(Returnable.ReturnType.BOOLEAN) || !right.returnType().equals(Returnable.ReturnType.BOOLEAN)) { - throw new ParseException("Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), operation.getPosition()); + throw new ParseException( + "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), + operation.getPosition()); } } - + public static void checkVarType(Token token, Returnable.ReturnType returnType) throws ParseException { if(returnType.equals(Returnable.ReturnType.STRING) && token.getType().equals(Token.Type.STRING_VARIABLE)) return; if(returnType.equals(Returnable.ReturnType.NUMBER) && token.getType().equals(Token.Type.NUMBER_VARIABLE)) return; if(returnType.equals(Returnable.ReturnType.BOOLEAN) && token.getType().equals(Token.Type.BOOLEAN_VARIABLE)) return; throw new ParseException("Type mismatch, cannot convert from " + returnType + " to " + token.getType(), token.getPosition()); } - + /** * Checks if token is a binary operator * * @param token Token to check + * * @throws ParseException If token isn't a binary operator */ public static void checkBinaryOperator(Token token) throws ParseException { if(!token.isBinaryOperator()) throw new ParseException("Expected binary operator, found " + token.getType(), token.getPosition()); } - + public static Returnable.ReturnType getVariableReturnType(Token varToken) throws ParseException { switch(varToken.getType()) { case NUMBER_VARIABLE: @@ -87,10 +98,11 @@ public class ParserUtil { case BOOLEAN_VARIABLE: return Returnable.ReturnType.BOOLEAN; default: - throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration", varToken.getPosition()); + throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration", + varToken.getPosition()); } } - + public static boolean hasPrecedence(Token.Type first, Token.Type second) { if(!PRECEDENCE.containsKey(first)) return false; Map pre = PRECEDENCE.get(first); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java index f9e6a26b2..f016b3700 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java @@ -2,25 +2,26 @@ package com.dfsek.terra.addons.terrascript.parser.exceptions; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class ParseException extends Exception { private static final long serialVersionUID = 6744390543046766386L; private final Position position; - + public ParseException(String message, Position position) { super(message); this.position = position; } - + public ParseException(String message, Position position, Throwable cause) { super(message, cause); this.position = position; } - + @Override public String getMessage() { return super.getMessage() + ": " + position; } - + public Position getPosition() { return position; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java index 320bac664..cf9b15c1c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java @@ -1,29 +1,26 @@ package com.dfsek.terra.addons.terrascript.parser.lang; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - import java.util.HashMap; import java.util.List; import java.util.Map; +import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; +import com.dfsek.terra.addons.terrascript.tokenizer.Position; + + public class Block implements Item> { private final List> items; private final Position position; - + public Block(List> items, Position position) { this.items = items; this.position = position; } - - public List> getItems() { - return items; - } - + public ReturnInfo apply(ImplementationArguments implementationArguments) { return apply(implementationArguments, new HashMap<>()); } - + @Override public ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { Map> scope = new HashMap<>(variableMap); @@ -36,39 +33,48 @@ public class Block implements Item> { } return new ReturnInfo<>(ReturnLevel.NONE, null); } - + @Override public Position getPosition() { return position; } - + + public List> getItems() { + return items; + } + public enum ReturnLevel { - NONE(false), BREAK(false), CONTINUE(false), RETURN(true), FAIL(true); - + NONE(false), + BREAK(false), + CONTINUE(false), + RETURN(true), + FAIL(true); + private final boolean returnFast; - + ReturnLevel(boolean returnFast) { this.returnFast = returnFast; } - + public boolean isReturnFast() { return returnFast; } } - + + public static class ReturnInfo { private final ReturnLevel level; private final T data; - + public ReturnInfo(ReturnLevel level, T data) { this.level = level; this.data = data; } - + public ReturnLevel getLevel() { return level; } - + public T getData() { return data; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java index c648f6ea5..07721b1d3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java @@ -1,12 +1,13 @@ package com.dfsek.terra.addons.terrascript.parser.lang; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public interface Item { T apply(ImplementationArguments implementationArguments, Map> variableMap); - + Position getPosition(); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java index fe38e8d89..a1f082985 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java @@ -2,16 +2,20 @@ package com.dfsek.terra.addons.terrascript.parser.lang; public interface Returnable extends Item { ReturnType returnType(); - + enum ReturnType { - NUMBER(true), STRING(true), BOOLEAN(false), VOID(false), OBJECT(false); - + NUMBER(true), + STRING(true), + BOOLEAN(false), + VOID(false), + OBJECT(false); + private final boolean comparable; - + ReturnType(boolean comparable) { this.comparable = comparable; } - + public boolean isComparable() { return comparable; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java index 0cde1207f..be22b5641 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java @@ -2,11 +2,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class BooleanConstant extends ConstantExpression { public BooleanConstant(Boolean constant, Position position) { super(constant, position); } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java index da15d87b6..4b5a4ecad 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java @@ -1,31 +1,32 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public abstract class ConstantExpression implements Returnable { private final T constant; private final Position position; - + public ConstantExpression(T constant, Position position) { this.constant = constant; this.position = position; } - + @Override public T apply(ImplementationArguments implementationArguments, Map> variableMap) { return constant; } - + @Override public Position getPosition() { return position; } - + public T getConstant() { return constant; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java index d82c3c280..568668671 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -3,11 +3,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class NumericConstant extends ConstantExpression { public NumericConstant(Number constant, Position position) { super(constant, position); } - + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java index 83e397358..7e6bc04aa 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java @@ -3,11 +3,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class StringConstant extends ConstantExpression { public StringConstant(String constant, Position position) { super(constant, position); } - + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java index 517fecfc4..852ae5ee6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public interface Function extends Returnable { Function NULL = new Function() { @@ -13,12 +14,12 @@ public interface Function extends Returnable { public ReturnType returnType() { return null; } - + @Override public Object apply(ImplementationArguments implementationArguments, Map> variableMap) { return null; } - + @Override public Position getPosition() { return null; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java index d40c02d96..7c0fa41a8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java @@ -1,15 +1,16 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public interface FunctionBuilder> { T build(List> argumentList, Position position) throws ParseException; - + int argNumber(); - + Returnable.ReturnType getArgument(int position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java index 11fb44c8e..1e21175ab 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java @@ -1,30 +1,27 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions.def; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Item; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.HashMap; -import java.util.List; -import java.util.Map; public class FunctionBlock implements Item { private final List> items; private final Position position; private final T defaultVal; - + public FunctionBlock(List> items, T defaultVal, Position position) { this.items = items; this.position = position; this.defaultVal = defaultVal; } - - public List> getItems() { - return items; - } - + @SuppressWarnings("unchecked") @Override public synchronized T apply(ImplementationArguments implementationArguments, Map> variableMap) { @@ -38,9 +35,13 @@ public class FunctionBlock implements Item { } return defaultVal; } - + @Override public Position getPosition() { return position; } + + public List> getItems() { + return items; + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java index efc225687..fe44e8d20 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java @@ -1,30 +1,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class BreakKeyword implements Keyword> { private final Position position; - + public BreakKeyword(Position position) { this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { return new Block.ReturnInfo<>(Block.ReturnLevel.BREAK, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java index 5cb3c859b..352529f61 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java @@ -1,30 +1,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class ContinueKeyword implements Keyword> { private final Position position; - + public ContinueKeyword(Position position) { this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { return new Block.ReturnInfo<>(Block.ReturnLevel.CONTINUE, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java index 4c0befe8c..2d0ea7247 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java @@ -1,30 +1,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class FailKeyword implements Keyword> { private final Position position; - + public FailKeyword(Position position) { this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { return new Block.ReturnInfo<>(Block.ReturnLevel.FAIL, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java index f7bf324eb..2130fc1e9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java @@ -1,30 +1,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class ReturnKeyword implements Keyword> { private final Position position; - + public ReturnKeyword(Position position) { this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { return new Block.ReturnInfo<>(Block.ReturnLevel.RETURN, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java index af245523f..045431df7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Item; @@ -8,7 +10,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class ForKeyword implements Keyword> { private final Block conditional; @@ -16,7 +17,7 @@ public class ForKeyword implements Keyword> { private final Returnable statement; private final Item incrementer; private final Position position; - + public ForKeyword(Block conditional, Item initializer, Returnable statement, Item incrementer, Position position) { this.conditional = conditional; this.initializer = initializer; @@ -24,22 +25,24 @@ public class ForKeyword implements Keyword> { this.incrementer = incrementer; this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - for(initializer.apply(implementationArguments, variableMap); statement.apply(implementationArguments, variableMap); incrementer.apply(implementationArguments, variableMap)) { + for(initializer.apply(implementationArguments, variableMap); + statement.apply(implementationArguments, variableMap); + incrementer.apply(implementationArguments, variableMap)) { Block.ReturnInfo level = conditional.apply(implementationArguments, variableMap); if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break; if(level.getLevel().isReturnFast()) return level; } return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java index ef863012b..bd6a5549d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java @@ -1,15 +1,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import org.jetbrains.annotations.Nullable; -import java.util.List; -import java.util.Map; public class IfKeyword implements Keyword> { private final Block conditional; @@ -17,15 +19,16 @@ public class IfKeyword implements Keyword> { private final Position position; private final List, Block>> elseIf; private final Block elseBlock; - - public IfKeyword(Block conditional, Returnable statement, List, Block>> elseIf, @Nullable Block elseBlock, Position position) { + + public IfKeyword(Block conditional, Returnable statement, List, Block>> elseIf, + @Nullable Block elseBlock, Position position) { this.conditional = conditional; this.statement = statement; this.position = position; this.elseIf = elseIf; this.elseBlock = elseBlock; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { if(statement.apply(implementationArguments, variableMap)) return conditional.apply(implementationArguments, variableMap); @@ -39,31 +42,31 @@ public class IfKeyword implements Keyword> { } return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); } - - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; } - + + public static class Pair { private final L left; private final R right; - + public Pair(L left, R right) { this.left = left; this.right = right; } - + public L getLeft() { return left; } - + public R getRight() { return right; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java index 52c53d454..49457f5b9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; @@ -7,19 +9,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class WhileKeyword implements Keyword> { private final Block conditional; private final Returnable statement; private final Position position; - + public WhileKeyword(Block conditional, Returnable statement, Position position) { this.conditional = conditional; this.statement = statement; this.position = position; } - + @Override public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { while(statement.apply(implementationArguments, variableMap)) { @@ -29,12 +30,12 @@ public class WhileKeyword implements Keyword> { } return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java index 0d9a517ab..aa9fa7707 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java @@ -1,32 +1,33 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public abstract class BinaryOperation implements Returnable { private final Returnable left; private final Returnable right; private final Position start; - + public BinaryOperation(Returnable left, Returnable right, Position start) { this.left = left; this.right = right; this.start = start; } - + public abstract O apply(I left, I right); - - @Override - public Position getPosition() { - return start; - } - + @Override public O apply(ImplementationArguments implementationArguments, Map> variableMap) { return apply(left.apply(implementationArguments, variableMap), right.apply(implementationArguments, variableMap)); } + + @Override + public Position getPosition() { + return start; + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java index 85e2bea9b..90380e7a2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class BooleanAndOperation extends BinaryOperation { public BooleanAndOperation(Returnable left, Returnable right, Position start) { super(left, right, start); } - + @Override public Boolean apply(Boolean left, Boolean right) { return left && right; } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java index 62065d666..3b2ccea7f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class BooleanNotOperation extends UnaryOperation { public BooleanNotOperation(Returnable input, Position position) { super(input, position); } - + @Override public Boolean apply(Boolean input) { return !input; } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java index c80f616dc..5322a0708 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class BooleanOrOperation extends BinaryOperation { public BooleanOrOperation(Returnable left, Returnable right, Position start) { super(left, right, start); } - + @Override public Boolean apply(Boolean left, Boolean right) { return left || right; } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java index 68b22a946..46ad64a10 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class ConcatenationOperation extends BinaryOperation { public ConcatenationOperation(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public String apply(Object left, Object right) { return left.toString() + right.toString(); } - + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java index da49c6d01..1610502dc 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class DivisionOperation extends BinaryOperation { public DivisionOperation(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Number apply(Number left, Number right) { return left.doubleValue() / right.doubleValue(); } - + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java index 7faed9467..549962922 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class ModuloOperation extends BinaryOperation { public ModuloOperation(Returnable left, Returnable right, Position start) { super(left, right, start); } - + @Override public Number apply(Number left, Number right) { return left.doubleValue() % right.doubleValue(); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java index 935f23a11..f3fef308b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class MultiplicationOperation extends BinaryOperation { public MultiplicationOperation(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Number apply(Number left, Number right) { return left.doubleValue() * right.doubleValue(); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java index b73e3d164..640b53443 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class NegationOperation extends UnaryOperation { public NegationOperation(Returnable input, Position position) { super(input, position); } - + @Override public Number apply(Number input) { return -input.doubleValue(); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java index cb69d98c8..2b93c4da8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class NumberAdditionOperation extends BinaryOperation { public NumberAdditionOperation(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Number apply(Number left, Number right) { return left.doubleValue() + right.doubleValue(); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java index c1697f8cb..a81d70ad4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java @@ -3,16 +3,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class SubtractionOperation extends BinaryOperation { public SubtractionOperation(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Number apply(Number left, Number right) { return left.doubleValue() - right.doubleValue(); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java index 9872397d0..3fbb194d0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java @@ -1,28 +1,29 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public abstract class UnaryOperation implements Returnable { private final Returnable input; private final Position position; - + public UnaryOperation(Returnable input, Position position) { this.input = input; this.position = position; } - + public abstract T apply(T input); - + @Override public T apply(ImplementationArguments implementationArguments, Map> variableMap) { return apply(input.apply(implementationArguments, variableMap)); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java index 17f462a01..68906e9c8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java @@ -1,27 +1,29 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; +import net.jafama.FastMath; + import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import net.jafama.FastMath; + public class EqualsStatement extends BinaryOperation { private static final double EPSILON = 0.000000001D; - + public EqualsStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Object left, Object right) { if(left instanceof Number && right instanceof Number) { return FastMath.abs(((Number) left).doubleValue() - ((Number) right).doubleValue()) <= EPSILON; } - + return left.equals(right); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java index 59430b2c4..c26e423ee 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class GreaterOrEqualsThanStatement extends BinaryOperation { public GreaterOrEqualsThanStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Number left, Number right) { return left.doubleValue() >= right.doubleValue(); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java index 2043bdf34..be21852b4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class GreaterThanStatement extends BinaryOperation { public GreaterThanStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Number left, Number right) { return left.doubleValue() > right.doubleValue(); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java index e5fc297d9..d44c51b00 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class LessThanOrEqualsStatement extends BinaryOperation { public LessThanOrEqualsStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Number left, Number right) { return left.doubleValue() <= right.doubleValue(); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java index 093e7e297..639b45017 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class LessThanStatement extends BinaryOperation { public LessThanStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Number left, Number right) { return left.doubleValue() < right.doubleValue(); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java index 854a96f5a..8d39caf3e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java @@ -4,17 +4,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class NotEqualsStatement extends BinaryOperation { public NotEqualsStatement(Returnable left, Returnable right, Position position) { super(left, right, position); } - + @Override public Boolean apply(Object left, Object right) { return !left.equals(right); } - - + + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java index 952a413b6..32be67aa9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java @@ -1,23 +1,24 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Item; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class Assignment implements Item { private final Returnable value; private final Position position; private final String identifier; - + public Assignment(Returnable value, String identifier, Position position) { this.value = value; this.identifier = identifier; this.position = position; } - + @SuppressWarnings("unchecked") @Override public synchronized T apply(ImplementationArguments implementationArguments, Map> variableMap) { @@ -25,7 +26,7 @@ public class Assignment implements Item { ((Variable) variableMap.get(identifier)).setValue(val); return val; } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java index 257e05855..9e124bd58 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java @@ -3,30 +3,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class BooleanVariable implements Variable { private final Position position; private Boolean value; - + public BooleanVariable(Boolean value, Position position) { this.value = value; this.position = position; } - + @Override public Boolean getValue() { return value; } - + @Override public void setValue(Boolean value) { this.value = value; } - + @Override public Returnable.ReturnType getType() { return Returnable.ReturnType.BOOLEAN; } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java index 6830eb272..5ded38fdd 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java @@ -1,18 +1,19 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Item; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class Declaration implements Item { private final Position position; private final String identifier; private final Returnable value; private final Returnable.ReturnType type; - + public Declaration(Position position, String identifier, Returnable value, Returnable.ReturnType type) { switch(type) { case STRING: @@ -27,7 +28,7 @@ public class Declaration implements Item { this.value = value; this.type = type; } - + @Override public T apply(ImplementationArguments implementationArguments, Map> variableMap) { T result = value.apply(implementationArguments, variableMap); @@ -44,16 +45,16 @@ public class Declaration implements Item { } return result; } - + @Override public Position getPosition() { return position; } - + public Returnable.ReturnType getType() { return type; } - + public String getIdentifier() { return identifier; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java index 197ac6afa..c13fe536d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java @@ -1,32 +1,33 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class Getter implements Returnable { private final String identifier; private final Position position; private final ReturnType type; - + public Getter(String identifier, Position position, ReturnType type) { this.identifier = identifier; this.position = position; this.type = type; } - + @Override public ReturnType returnType() { return type; } - + @Override public synchronized Object apply(ImplementationArguments implementationArguments, Map> variableMap) { return variableMap.get(identifier).getValue(); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java index 40453cbfe..803e59a81 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java @@ -3,30 +3,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class NumberVariable implements Variable { private final Position position; private Number value; - + public NumberVariable(Number value, Position position) { this.value = value; this.position = position; } - + @Override public Number getValue() { return value; } - + @Override public void setValue(Number value) { this.value = value; } - + @Override public Returnable.ReturnType getType() { return Returnable.ReturnType.NUMBER; } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java index 01abb4dcc..a4b104458 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java @@ -3,30 +3,31 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class StringVariable implements Variable { private final Position position; private String value; - + public StringVariable(String value, Position position) { this.value = value; this.position = position; } - + @Override public String getValue() { return value; } - + @Override public void setValue(String value) { this.value = value; } - + @Override public Returnable.ReturnType getType() { return Returnable.ReturnType.STRING; } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java index e39e5289f..cc4beb9de 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java @@ -3,12 +3,13 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public interface Variable { T getValue(); - + void setValue(T value); - + Returnable.ReturnType getType(); - + Position getPosition(); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 4688b74f4..ee44b457f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -1,5 +1,16 @@ package com.dfsek.terra.addons.terrascript.script; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import net.jafama.FastMath; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.Random; +import java.util.concurrent.ExecutionException; + import com.dfsek.terra.addons.terrascript.buffer.DirectBuffer; import com.dfsek.terra.addons.terrascript.buffer.StructureBuffer; import com.dfsek.terra.addons.terrascript.parser.Parser; @@ -35,16 +46,7 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import net.jafama.FastMath; -import org.apache.commons.io.IOUtils; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.Random; -import java.util.concurrent.ExecutionException; public class StructureScript implements Structure { private final Block block; @@ -52,17 +54,18 @@ public class StructureScript implements Structure { private final Cache cache; private final TerraPlugin main; private String tempID; - - public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { + + public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, + Registry> functionRegistry) throws ParseException { Parser parser; try { parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); } catch(IOException e) { throw new RuntimeException(e); } - + functionRegistry.forEach(parser::registerFunction); // Register registry functions. - + parser .registerFunction("block", new BlockFunctionBuilder(main)) .registerFunction("debugBlock", new BlockFunctionBuilder(main)) @@ -79,14 +82,21 @@ public class StructureScript implements Structure { .registerFunction("getBlock", new CheckBlockFunctionBuilder()) .registerFunction("state", new StateFunctionBuilder(main)) .registerFunction("setWaterlog", new UnaryBooleanFunctionBuilder((waterlog, args) -> args.setWaterlog(waterlog))) - .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), Returnable.ReturnType.NUMBER)) - .registerFunction("originY", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getY(), Returnable.ReturnType.NUMBER)) - .registerFunction("originZ", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getZ(), Returnable.ReturnType.NUMBER)) - .registerFunction("rotation", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().toString(), Returnable.ReturnType.STRING)) - .registerFunction("rotationDegrees", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().getDegrees(), Returnable.ReturnType.NUMBER)) - .registerFunction("print", new UnaryStringFunctionBuilder(string -> main.getDebugLogger().info("[" + tempID + "] " + string))) + .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), + Returnable.ReturnType.NUMBER)) + .registerFunction("originY", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getY(), + Returnable.ReturnType.NUMBER)) + .registerFunction("originZ", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getZ(), + Returnable.ReturnType.NUMBER)) + .registerFunction("rotation", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().toString(), + Returnable.ReturnType.STRING)) + .registerFunction("rotationDegrees", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().getDegrees(), + Returnable.ReturnType.NUMBER)) + .registerFunction("print", + new UnaryStringFunctionBuilder(string -> main.getDebugLogger().info("[" + tempID + "] " + string))) .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> FastMath.abs(number.doubleValue()))) - .registerFunction("pow", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) + .registerFunction("pow", new BinaryNumberFunctionBuilder( + (number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> FastMath.sqrt(number.doubleValue()))) .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> FastMath.floor(number.doubleValue()))) .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> FastMath.ceil(number.doubleValue()))) @@ -98,20 +108,22 @@ public class StructureScript implements Structure { .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> FastMath.asin(number.doubleValue()))) .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> FastMath.acos(number.doubleValue()))) .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> FastMath.atan(number.doubleValue()))) - .registerFunction("max", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) - .registerFunction("min", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); - + .registerFunction("max", new BinaryNumberFunctionBuilder( + (number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) + .registerFunction("min", new BinaryNumberFunctionBuilder( + (number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); + if(!main.getTerraConfig().isDebugScript()) { parser.ignoreFunction("debugBlock"); } - + block = parser.parse(); this.id = parser.getID(); tempID = id; this.main = main; this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); } - + @Override @SuppressWarnings("try") public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { @@ -121,7 +133,24 @@ public class StructureScript implements Structure { return buffer.succeeded(); } } - + + @Override + @SuppressWarnings("try") + public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); + } + } + + @Override + @SuppressWarnings("try") + public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { + DirectBuffer buffer = new DirectBuffer(location, world); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); + } + } + @SuppressWarnings("try") public boolean test(Vector3 location, World world, Random random, Rotation rotation) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { @@ -129,7 +158,7 @@ public class StructureScript implements Structure { return buffer.succeeded(); } } - + private StructureBuffer computeBuffer(Vector3 location, World world, Random random, Rotation rotation) { try { return cache.get(location, () -> { @@ -141,29 +170,7 @@ public class StructureScript implements Structure { throw new RuntimeException(e); } } - - @Override - @SuppressWarnings("try") - public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); - } - } - - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { - DirectBuffer buffer = new DirectBuffer(location, world); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); - } - } - - @Override - public String getID() { - return id; - } - + private boolean applyBlock(TerraImplementationArguments arguments) { try { return block.apply(arguments).getLevel() != Block.ReturnLevel.FAIL; @@ -173,4 +180,9 @@ public class StructureScript implements Structure { return false; } } + + @Override + public String getID() { + return id; + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java index 4bb0dac53..15772fcea 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.terrascript.script; +import java.util.Random; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.world.World; -import java.util.Random; public class TerraImplementationArguments implements ImplementationArguments { private final Buffer buffer; @@ -14,7 +15,7 @@ public class TerraImplementationArguments implements ImplementationArguments { private final World world; private final int recursions; private boolean waterlog = false; - + public TerraImplementationArguments(Buffer buffer, Rotation rotation, Random random, World world, int recursions) { this.buffer = buffer; this.rotation = rotation; @@ -22,31 +23,31 @@ public class TerraImplementationArguments implements ImplementationArguments { this.world = world; this.recursions = recursions; } - + public Buffer getBuffer() { return buffer; } - + public int getRecursions() { return recursions; } - + public Random getRandom() { return random; } - + public Rotation getRotation() { return rotation; } - + public boolean isWaterlog() { return waterlog; } - + public void setWaterlog(boolean waterlog) { this.waterlog = waterlog; } - + public World getWorld() { return world; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java index 3f6ae1bc5..f25a4a32f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -7,18 +11,15 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; public class BinaryNumberFunctionBuilder implements FunctionBuilder> { - + private final BiFunction function; - + public BinaryNumberFunctionBuilder(BiFunction function) { this.function = function; } - + @Override public Function build(List> argumentList, Position position) { return new Function() { @@ -26,25 +27,26 @@ public class BinaryNumberFunctionBuilder implements FunctionBuilder> variableMap) { - return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), ((Returnable) argumentList.get(1)).apply(implementationArguments, variableMap)); + return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), + ((Returnable) argumentList.get(1)).apply(implementationArguments, variableMap)); } - + @Override public Position getPosition() { return position; } }; } - + @Override public int argNumber() { return 2; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0 || position == 1) return Returnable.ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java index 5352c7040..e340a2d9d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java @@ -1,31 +1,33 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class BiomeFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public BiomeFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public BiomeFunction build(List> argumentList, Position position) { - return new BiomeFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); + return new BiomeFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), position); } - + @Override public int argNumber() { return 3; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 1667b4bf5..f5e957499 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; @@ -9,15 +11,14 @@ import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class BlockFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public BlockFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public BlockFunction build(List> argumentList, Position position) throws ParseException { @@ -25,16 +26,20 @@ public class BlockFunctionBuilder implements FunctionBuilder { Returnable booleanReturnable = new BooleanConstant(true, position); if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); if(argumentList.get(3) instanceof StringConstant) { - return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), booleanReturnable, main, position); + return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), + booleanReturnable, main, position); } - return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, main, position); + return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, + main, position); } - + @Override public int argNumber() { return -1; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java index bd737eb39..141372ef6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java @@ -1,24 +1,26 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.CheckBlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public class CheckBlockFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override public CheckBlockFunction build(List> argumentList, Position position) { - return new CheckBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); + return new CheckBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), position); } - + @Override public int argNumber() { return 3; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java index 5d058b679..e94febc9e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -7,26 +9,26 @@ import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class CheckFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public CheckFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public CheckFunction build(List> argumentList, Position position) throws ParseException { - return new CheckFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); + return new CheckFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), position); } - + @Override public int argNumber() { return 3; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index 3fc8200a0..c65b000d2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -7,26 +9,26 @@ import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class EntityFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public EntityFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public EntityFunction build(List> argumentList, Position position) throws ParseException { - return new EntityFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + return new EntityFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); } - + @Override public int argNumber() { return 4; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java index c636d44f4..aa1674cc0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java @@ -1,28 +1,30 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.GetMarkFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public class GetMarkFunctionBuilder implements FunctionBuilder { - + public GetMarkFunctionBuilder() { } - + @SuppressWarnings("unchecked") @Override public GetMarkFunction build(List> argumentList, Position position) { - return new GetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); + return new GetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), position); } - + @Override public int argNumber() { return 3; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java index 6a9a1e1fe..dd4e2d9b5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.StructureScript; @@ -9,30 +11,30 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; -import java.util.List; public class LootFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; private final Registry registry; private final StructureScript script; - + public LootFunctionBuilder(TerraPlugin main, Registry registry, StructureScript script) { this.main = main; this.registry = registry; this.script = script; } - + @SuppressWarnings("unchecked") @Override public LootFunction build(List> argumentList, Position position) { - return new LootFunction(registry, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position, script); + return new LootFunction(registry, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position, script); } - + @Override public int argNumber() { return 4; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index e68514ade..520c5d083 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -7,26 +9,26 @@ import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class PullFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public PullFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public PullFunction build(List> argumentList, Position position) throws ParseException { - return new PullFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + return new PullFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); } - + @Override public int argNumber() { return 4; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java index ab816c94a..a001051ce 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java @@ -1,12 +1,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.RandomFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public class RandomFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @@ -14,12 +15,12 @@ public class RandomFunctionBuilder implements FunctionBuilder { public RandomFunction build(List> argumentList, Position position) throws ParseException { return new RandomFunction((Returnable) argumentList.get(0), position); } - + @Override public int argNumber() { return 1; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0) return Returnable.ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java index be812d3a3..8fe2815ca 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java @@ -1,24 +1,25 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.RecursionsFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public class RecursionsFunctionBuilder implements FunctionBuilder { @Override public RecursionsFunction build(List> argumentList, Position position) throws ParseException { return new RecursionsFunction(position); } - + @Override public int argNumber() { return 0; } - + @Override public Returnable.ReturnType getArgument(int position) { return null; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java index 8c06c017e..920cdfdc8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java @@ -1,29 +1,31 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.SetMarkFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; public class SetMarkFunctionBuilder implements FunctionBuilder { - + public SetMarkFunctionBuilder() { } - + @SuppressWarnings("unchecked") @Override public SetMarkFunction build(List> argumentList, Position position) throws ParseException { - return new SetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), position); + return new SetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), position); } - + @Override public int argNumber() { return 4; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index b55deb282..e551f249e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -7,27 +9,27 @@ import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.TerraPlugin; -import java.util.List; public class StateFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; - + public StateFunctionBuilder(TerraPlugin main) { this.main = main; } - + @SuppressWarnings("unchecked") @Override public StateFunction build(List> argumentList, Position position) throws ParseException { if(argumentList.size() < 4) throw new ParseException("Expected data", position); - return new StateFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + return new StateFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); } - + @Override public int argNumber() { return 4; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index 5f993e334..f695c7351 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.stream.Collectors; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -9,32 +12,32 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import java.util.List; -import java.util.stream.Collectors; public class StructureFunctionBuilder implements FunctionBuilder { private final Registry registry; private final TerraPlugin main; - + public StructureFunctionBuilder(Registry registry, TerraPlugin main) { this.registry = registry; this.main = main; } - + @SuppressWarnings("unchecked") @Override public StructureFunction build(List> argumentList, Position position) throws ParseException { if(argumentList.size() < 5) throw new ParseException("Expected rotations", position); - - return new StructureFunction((Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), - argumentList.stream().map(item -> ((Returnable) item)).collect(Collectors.toList()), registry, position, main); + + return new StructureFunction((Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), + (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), + argumentList.stream().map(item -> ((Returnable) item)).collect(Collectors.toList()), registry, + position, main); } - + @Override public int argNumber() { return -1; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java index e38678a47..16da09601 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -8,18 +12,15 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { - + private final BiConsumer function; - + public UnaryBooleanFunctionBuilder(BiConsumer function) { this.function = function; } - + @Override public Function build(List> argumentList, Position position) { return new Function() { @@ -27,26 +28,27 @@ public class UnaryBooleanFunctionBuilder implements FunctionBuilder> variableMap) { - function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), (TerraImplementationArguments) implementationArguments); + function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), + (TerraImplementationArguments) implementationArguments); return null; } - + @Override public Position getPosition() { return position; } }; } - + @Override public int argNumber() { return 1; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0) return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java index 168507661..e28512b30 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -7,17 +10,15 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.Map; public class UnaryNumberFunctionBuilder implements FunctionBuilder> { - + private final java.util.function.Function function; - + public UnaryNumberFunctionBuilder(java.util.function.Function function) { this.function = function; } - + @Override public Function build(List> argumentList, Position position) { return new Function() { @@ -25,25 +26,25 @@ public class UnaryNumberFunctionBuilder implements FunctionBuilder> variableMap) { return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); } - + @Override public Position getPosition() { return position; } }; } - + @Override public int argNumber() { return 1; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0) return Returnable.ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java index 846dfc774..4989cdabe 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -7,17 +10,15 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.Map; public class UnaryStringFunctionBuilder implements FunctionBuilder> { - + private final java.util.function.Consumer function; - + public UnaryStringFunctionBuilder(java.util.function.Consumer function) { this.function = function; } - + @Override public Function build(List> argumentList, Position position) { return new Function() { @@ -25,26 +26,26 @@ public class UnaryStringFunctionBuilder implements FunctionBuilder> variableMap) { function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); return null; } - + @Override public Position getPosition() { return position; } }; } - + @Override public int argNumber() { return 1; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0) return Returnable.ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java index 9c1a84b34..05bfecfcd 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -8,18 +11,16 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.Map; public class ZeroArgFunctionBuilder implements FunctionBuilder> { private final java.util.function.Function function; private final Returnable.ReturnType type; - + public ZeroArgFunctionBuilder(java.util.function.Function function, Returnable.ReturnType type) { this.function = function; this.type = type; } - + @Override public Function build(List> argumentList, Position position) { return new Function() { @@ -27,24 +28,24 @@ public class ZeroArgFunctionBuilder implements FunctionBuilder> { public ReturnType returnType() { return type; } - + @Override public T apply(ImplementationArguments implementationArguments, Map> variableMap) { return function.apply((TerraImplementationArguments) implementationArguments); } - + @Override public Position getPosition() { return position; } }; } - + @Override public int argNumber() { return 0; } - + @Override public Returnable.ReturnType getArgument(int position) { if(position == 0) return type; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 819477d5d..a550c3210 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -11,16 +15,14 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import net.jafama.FastMath; -import java.util.Map; public class BiomeFunction implements Function { private final TerraPlugin main; private final Returnable x, y, z; private final Position position; - - + + public BiomeFunction(TerraPlugin main, Returnable x, Returnable y, Returnable z, Position position) { this.main = main; this.x = x; @@ -28,27 +30,32 @@ public class BiomeFunction implements Function { this.z = z; this.position = position; } - - + + @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - + BiomeProvider grid = arguments.getWorld().getBiomeProvider(); - - return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); + + return grid.getBiome(arguments.getBuffer() + .getOrigin() + .clone() + .add(new Vector3(FastMath.roundToInt(xz.getX()), + y.apply(implementationArguments, variableMap).intValue(), + FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); } - - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 2bc479789..46cfbb2ab 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -1,5 +1,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.HashMap; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -13,21 +18,18 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.HashMap; -import java.util.Map; public class BlockFunction implements Function { protected final Returnable x, y, z; - - private final Map data = new HashMap<>(); protected final Returnable blockData; protected final TerraPlugin main; + private final Map data = new HashMap<>(); private final Returnable overwrite; private final Position position; - - public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, Returnable overwrite, TerraPlugin main, Position position) { + + public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, + Returnable overwrite, TerraPlugin main, Position position) { this.x = x; this.y = y; this.z = z; @@ -36,16 +38,7 @@ public class BlockFunction implements Function { this.main = main; this.position = position; } - - void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); - } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; @@ -53,28 +46,45 @@ public class BlockFunction implements Function { setBlock(implementationArguments, variableMap, arguments, rot); return null; } - - protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { - return data.computeIfAbsent(blockData.apply(arguments, variableMap), main.getWorldHandle()::createBlockData); - } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; } - + + void setBlock(ImplementationArguments implementationArguments, Map> variableMap, + TerraImplementationArguments arguments, BlockState rot) { + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + + RotationUtil.rotateVector(xz, arguments.getRotation()); + + RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); + arguments.getBuffer().addItem( + new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), + new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), + FastMath.roundToInt(xz.getZ()))); + } + + protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { + return data.computeIfAbsent(blockData.apply(arguments, variableMap), main.getWorldHandle()::createBlockData); + } + + public static class Constant extends BlockFunction { private final BlockState state; - public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, Returnable overwrite, TerraPlugin main, Position position) { + + public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, + Returnable overwrite, TerraPlugin main, Position position) { super(x, y, z, blockData, overwrite, main, position); this.state = main.getWorldHandle().createBlockData(blockData.getConstant()); } - + @Override protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { return state; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java index ce40a7284..ea3901a47 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -9,41 +13,46 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class CheckBlockFunction implements Function { private final Returnable x, y, z; private final Position position; - + public CheckBlockFunction(Returnable x, Returnable y, Returnable z, Position position) { this.x = x; this.y = y; this.z = z; this.position = position; } - - + + @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - - String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); + + String data = arguments.getWorld() + .getBlockData(arguments.getBuffer() + .getOrigin() + .clone() + .add(new Vector3(FastMath.roundToInt(xz.getX()), + y.apply(implementationArguments, variableMap) + .doubleValue(), FastMath.roundToInt(xz.getZ())))) + .getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } - - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index ea0fe9af5..127a2854a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -12,15 +16,13 @@ import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.SamplerCache; -import net.jafama.FastMath; -import java.util.Map; public class CheckFunction implements Function { private final TerraPlugin main; private final Returnable x, y, z; private final Position position; - + public CheckFunction(TerraPlugin main, Returnable x, Returnable y, Returnable z, Position position) { this.main = main; this.x = x; @@ -28,52 +30,56 @@ public class CheckFunction implements Function { this.z = z; this.position = position; } - - + + @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { - - + + TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + + + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - - Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); - + + Vector3 location = arguments.getBuffer().getOrigin().clone().add( + new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), + FastMath.roundToInt(xz.getZ()))); + return apply(location, arguments.getWorld()); } - + + @Override + public Position getPosition() { + return position; + } + + @Override + public ReturnType returnType() { + return ReturnType.STRING; + } + private String apply(Vector3 vector, World world) { int y = vector.getBlockY(); if(y >= world.getMaxHeight() || y < 0) return "AIR"; SamplerCache cache = world.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); - + if(comp > 0) return "LAND"; // If noise val is greater than zero, location will always be land. - + //BiomeProvider provider = tw.getBiomeProvider(); //TerraBiome b = provider.getBiome(vector.getBlockX(), vector.getBlockZ()); - - /*if(vector.getY() > c.getSeaLevel())*/ return "AIR"; // Above sea level + + /*if(vector.getY() > c.getSeaLevel())*/ + return "AIR"; // Above sea level //return "OCEAN"; // Below sea level } - + private double sample(int x, int y, int z, SamplerCache cache) { int cx = FastMath.floorDiv(x, 16); int cz = FastMath.floorDiv(z, 16); return cache.get(x, z).sample(x - (cx << 4), y, z - (cz << 4)); } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index 1bd03c399..4b516afbe 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.items.BufferedEntity; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -15,41 +17,43 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import java.util.Map; public class EntityFunction implements Function { private final EntityType data; private final Returnable x, y, z; private final Position position; private final TerraPlugin main; - - public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position) throws ParseException { + + public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + Position position) throws ParseException { this.position = position; this.main = main; if(!(data instanceof ConstantExpression)) throw new ParseException("Entity data must be constant", data.getPosition()); - + this.data = main.getWorldHandle().getEntity(((ConstantExpression) data).getConstant()); this.x = x; this.y = y; this.z = z; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); + + arguments.getBuffer().addItem(new BufferedEntity(data, main), + new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java index ad2a0c659..09c55002f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -9,36 +13,36 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class GetMarkFunction implements Function { private final Returnable x, y, z; private final Position position; - + public GetMarkFunction(Returnable x, Returnable y, Returnable z, Position position) { this.position = position; this.x = x; this.y = y; this.z = z; } - + @Override public String apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt( + y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return mark == null ? "" : mark; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 04d0e83ef..02b230c80 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.items.BufferedLootApplication; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -14,9 +18,7 @@ import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class LootFunction implements Function { private final Registry registry; @@ -25,8 +27,9 @@ public class LootFunction implements Function { private final Position position; private final TerraPlugin main; private final StructureScript script; - - public LootFunction(Registry registry, Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position, StructureScript script) { + + public LootFunction(Registry registry, Returnable x, Returnable y, Returnable z, + Returnable data, TerraPlugin main, Position position, StructureScript script) { this.registry = registry; this.position = position; this.data = data; @@ -36,31 +39,34 @@ public class LootFunction implements Function { this.main = main; this.script = script; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - + String id = data.apply(implementationArguments, variableMap); LootTable table = registry.get(id); - + if(table == null) { main.logger().severe("No such loot table " + id); return null; } - - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), + new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), + FastMath.roundToInt(xz.getZ()))); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index c56af421a..1ed53f48b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.items.BufferedPulledBlock; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -14,42 +18,44 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class PullFunction implements Function { private final BlockState data; private final Returnable x, y, z; private final Position position; - - public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position) throws ParseException { + + public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + Position position) throws ParseException { this.position = position; if(!(data instanceof ConstantExpression)) throw new ParseException("Block data must be constant", data.getPosition()); - + this.data = main.getWorldHandle().createBlockData(((ConstantExpression) data).getConstant()); this.x = x; this.y = y; this.z = z; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); BlockState rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), + new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), + FastMath.roundToInt(xz.getZ()))); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java index c7b51990a..6cec0dcca 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -7,28 +9,28 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class RandomFunction implements Function { private final Returnable numberReturnable; private final Position position; - + public RandomFunction(Returnable numberReturnable, Position position) { this.numberReturnable = numberReturnable; this.position = position; } - - + + @Override public ReturnType returnType() { return ReturnType.NUMBER; } - + @Override public Integer apply(ImplementationArguments implementationArguments, Map> variableMap) { - return ((TerraImplementationArguments) implementationArguments).getRandom().nextInt(numberReturnable.apply(implementationArguments, variableMap).intValue()); + return ((TerraImplementationArguments) implementationArguments).getRandom().nextInt( + numberReturnable.apply(implementationArguments, variableMap).intValue()); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java index dcbfdbee7..0d4ce39d4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java @@ -1,30 +1,31 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.Map; public class RecursionsFunction implements Function { private final Position position; - + public RecursionsFunction(Position position) { this.position = position; } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; } - + @Override public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { return ((TerraImplementationArguments) implementationArguments).getRecursions(); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java index 506078c2e..9ff19038c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; @@ -9,15 +13,13 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class SetMarkFunction implements Function { private final Returnable x, y, z; private final Position position; private final Returnable mark; - + public SetMarkFunction(Returnable x, Returnable y, Returnable z, Returnable mark, Position position) { this.position = position; this.mark = mark; @@ -25,23 +27,29 @@ public class SetMarkFunction implements Function { this.y = y; this.z = z; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + + arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), + FastMath.floorToInt( + y.apply(implementationArguments, + variableMap) + .doubleValue()), + FastMath.floorToInt(xz.getZ()))); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index bec4e7e8c..53c53dd71 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -1,5 +1,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.items.BufferedStateManipulator; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -11,17 +15,16 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.Map; public class StateFunction implements Function { private final Returnable data; private final Returnable x, y, z; private final Position position; private final TerraPlugin main; - - public StateFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, Position position) { + + public StateFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + Position position) { this.position = position; this.main = main; this.data = data; @@ -29,22 +32,25 @@ public class StateFunction implements Function { this.y = y; this.z = z; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), + new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), + FastMath.roundToInt(xz.getZ()))); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index b0537906f..d11083507 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -1,5 +1,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import net.jafama.FastMath; + +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.buffer.IntermediateBuffer; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -14,10 +19,7 @@ import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; -import net.jafama.FastMath; -import java.util.List; -import java.util.Map; public class StructureFunction implements Function { private final Registry registry; @@ -26,8 +28,9 @@ public class StructureFunction implements Function { private final Position position; private final TerraPlugin main; private final List> rotations; - - public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, List> rotations, Registry registry, Position position, TerraPlugin main) { + + public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, + List> rotations, Registry registry, Position position, TerraPlugin main) { this.registry = registry; this.id = id; this.position = position; @@ -37,30 +40,31 @@ public class StructureFunction implements Function { this.main = main; this.rotations = rotations; } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; } - + @Override public Boolean apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - + if(arguments.getRecursions() > main.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), z.apply(implementationArguments, variableMap).doubleValue()); - + + Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), + z.apply(implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, arguments.getRotation()); - + String app = id.apply(implementationArguments, variableMap); Structure script = registry.get(app); if(script == null) { main.logger().severe("No such structure " + app); return null; } - + Rotation rotation1; String rotString = rotations.get(arguments.getRandom().nextInt(rotations.size())).apply(implementationArguments, variableMap); try { @@ -69,12 +73,14 @@ public class StructureFunction implements Function { main.logger().severe("Invalid rotation " + rotString); return null; } - - Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); - - return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); + + Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), + FastMath.roundToInt(xz.getZ())); + + return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), + arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java index 682506740..7eb21418f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java @@ -4,38 +4,14 @@ public class Char { private final char character; private final int index; private final int line; - - + + public Char(char character, int index, int line) { this.character = character; this.index = index; this.line = line; } - - public char getCharacter() { - return character; - } - - public int getIndex() { - return index; - } - - public int getLine() { - return line; - } - - public boolean isWhitespace() { - return Character.isWhitespace(character); - } - - public boolean isNewLine() { - return character == '\n'; - } - - public boolean isDigit() { - return Character.isDigit(character); - } - + public boolean is(char... tests) { for(char test : tests) { if(test == character && test != '\0') { @@ -44,13 +20,37 @@ public class Char { } return false; } - - public boolean isEOF() { - return character == '\0'; - } - + @Override public String toString() { return Character.toString(character); } + + public char getCharacter() { + return character; + } + + public int getIndex() { + return index; + } + + public int getLine() { + return line; + } + + public boolean isWhitespace() { + return Character.isWhitespace(character); + } + + public boolean isNewLine() { + return character == '\n'; + } + + public boolean isDigit() { + return Character.isDigit(character); + } + + public boolean isEOF() { + return character == '\0'; + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java index 633d2ab52..e65c6476f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java @@ -6,6 +6,7 @@ import java.io.Reader; import java.util.ArrayList; import java.util.List; + /** * Stream-like data structure that allows viewing future elements without consuming current. */ @@ -15,11 +16,11 @@ public class Lookahead { private int index = 0; private int line = 0; private boolean end = false; - + public Lookahead(Reader r) { this.input = r; } - + /** * Get the current character without consuming it. * @@ -28,8 +29,8 @@ public class Lookahead { public Char current() { return next(0); } - - + + /** * Consume and return one character. * @@ -40,7 +41,57 @@ public class Lookahead { consume(1); return consumed; } - + + /** + * Fetch a future character without consuming it. + * + * @param ahead Distance ahead to peek + * + * @return Character + */ + public Char next(int ahead) { + if(ahead < 0) throw new IllegalArgumentException(); + + while(buffer.size() <= ahead && !end) { + Char item = fetch(); + if(item != null) { + buffer.add(item); + } else end = true; + } + + if(ahead >= buffer.size()) { + return null; + } else return buffer.get(ahead); + } + + /** + * Consume an amount of characters + * + * @param amount Number of characters to consume + */ + public void consume(int amount) { + if(amount < 0) throw new IllegalArgumentException(); + while(amount-- > 0) { + if(!buffer.isEmpty()) buffer.remove(0); // Remove top item from buffer. + else { + if(end) return; + Char item = fetch(); + if(item == null) end = true; + } + } + } + + public boolean matches(String check, boolean consume) { + if(check == null) return false; + + for(int i = 0; i < check.length(); i++) { + if(!next(i).is(check.charAt(i))) return false; + } + + if(consume) consume(check.length()); // Consume string + return true; + } + /** * Fetch the next character. * @@ -61,61 +112,12 @@ public class Lookahead { return null; } } - - /** - * Fetch a future character without consuming it. - * - * @param ahead Distance ahead to peek - * @return Character - */ - public Char next(int ahead) { - if(ahead < 0) throw new IllegalArgumentException(); - - while(buffer.size() <= ahead && !end) { - Char item = fetch(); - if(item != null) { - buffer.add(item); - } else end = true; - } - - if(ahead >= buffer.size()) { - return null; - } else return buffer.get(ahead); - } - + public int getLine() { return line; } - + public int getIndex() { return index; } - - /** - * Consume an amount of characters - * - * @param amount Number of characters to consume - */ - public void consume(int amount) { - if(amount < 0) throw new IllegalArgumentException(); - while(amount-- > 0) { - if(!buffer.isEmpty()) buffer.remove(0); // Remove top item from buffer. - else { - if(end) return; - Char item = fetch(); - if(item == null) end = true; - } - } - } - - public boolean matches(String check, boolean consume) { - if(check == null) return false; - - for(int i = 0; i < check.length(); i++) { - if(!next(i).is(check.charAt(i))) return false; - } - - if(consume) consume(check.length()); // Consume string - return true; - } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java index 0a817a183..f57663c44 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java @@ -3,12 +3,12 @@ package com.dfsek.terra.addons.terrascript.tokenizer; public class Position { private final int line; private final int index; - + public Position(int line, int index) { this.line = line; this.index = index; } - + @Override public String toString() { return (line + 1) + ":" + index; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java index 6d69d556a..252e69aeb 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java @@ -4,88 +4,88 @@ public class Token { private final String content; private final Type type; private final Position start; - + public Token(String content, Type type, Position start) { this.content = content; this.type = type; this.start = start; } - - public Type getType() { - return type; - } - - public String getContent() { - return content; - } - - public Position getPosition() { - return start; - } - + @Override public String toString() { return type + ": '" + content + "'"; } - + + public Type getType() { + return type; + } + + public String getContent() { + return content; + } + + public Position getPosition() { + return start; + } + public boolean isConstant() { return this.type.equals(Type.NUMBER) || this.type.equals(Type.STRING) || this.type.equals(Type.BOOLEAN); } - + public boolean isBinaryOperator() { return type.equals(Type.ADDITION_OPERATOR) - || type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.EQUALS_OPERATOR) - || type.equals(Type.NOT_EQUALS_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.BOOLEAN_OR) - || type.equals(Type.BOOLEAN_AND) - || type.equals(Type.MODULO_OPERATOR); + || type.equals(Type.SUBTRACTION_OPERATOR) + || type.equals(Type.MULTIPLICATION_OPERATOR) + || type.equals(Type.DIVISION_OPERATOR) + || type.equals(Type.EQUALS_OPERATOR) + || type.equals(Type.NOT_EQUALS_OPERATOR) + || type.equals(Type.LESS_THAN_OPERATOR) + || type.equals(Type.GREATER_THAN_OPERATOR) + || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) + || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) + || type.equals(Type.BOOLEAN_OR) + || type.equals(Type.BOOLEAN_AND) + || type.equals(Type.MODULO_OPERATOR); } - + public boolean isStrictNumericOperator() { return type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.MODULO_OPERATOR); + || type.equals(Type.MULTIPLICATION_OPERATOR) + || type.equals(Type.DIVISION_OPERATOR) + || type.equals(Type.GREATER_THAN_OPERATOR) + || type.equals(Type.LESS_THAN_OPERATOR) + || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) + || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) + || type.equals(Type.MODULO_OPERATOR); } - + public boolean isStrictBooleanOperator() { return type.equals(Type.BOOLEAN_AND) - || type.equals(Type.BOOLEAN_OR); + || type.equals(Type.BOOLEAN_OR); } - + public boolean isVariableDeclaration() { return type.equals(Type.STRING_VARIABLE) - || type.equals(Type.BOOLEAN_VARIABLE) - || type.equals(Type.NUMBER_VARIABLE); + || type.equals(Type.BOOLEAN_VARIABLE) + || type.equals(Type.NUMBER_VARIABLE); } - + public boolean isLoopLike() { return type.equals(Type.IF_STATEMENT) - || type.equals(Type.WHILE_LOOP) - || type.equals(Type.FOR_LOOP); + || type.equals(Type.WHILE_LOOP) + || type.equals(Type.FOR_LOOP); } - + public boolean isIdentifier() { return type.equals(Type.IDENTIFIER); } - + public enum Type { /** * Function identifier or language keyword */ IDENTIFIER, - + /** * Numeric literal */ diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java index 2c707b2c3..72438f3d4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java @@ -1,42 +1,47 @@ package com.dfsek.terra.addons.terrascript.tokenizer; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.EOFException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.FormatException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.TokenizerException; import com.google.common.collect.Sets; import java.io.StringReader; import java.util.Set; import java.util.Stack; +import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.EOFException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.FormatException; +import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.TokenizerException; + + public class Tokenizer { - public static final Set syntaxSignificant = Sets.newHashSet(';', '(', ')', '"', ',', '\\', '=', '{', '}', '+', '-', '*', '/', '>', '<', '!'); // Reserved chars + public static final Set syntaxSignificant = Sets.newHashSet(';', '(', ')', '"', ',', '\\', '=', '{', '}', '+', '-', '*', '/', + '>', '<', '!'); // Reserved chars private final Lookahead reader; private final Stack brackets = new Stack<>(); private Token current; private Token last; - + public Tokenizer(String data) throws ParseException { reader = new Lookahead(new StringReader(data + '\0')); current = fetchCheck(); } - + /** * Get the first token. * * @return First token + * * @throws ParseException If token does not exist */ public Token get() throws ParseException { if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); return current; } - + /** * Consume (get and remove) the first token. * * @return First token + * * @throws ParseException If token does not exist */ public Token consume() throws ParseException { @@ -45,16 +50,7 @@ public class Tokenizer { current = fetchCheck(); return temp; } - - /** - * Whether this {@code Tokenizer} contains additional tokens. - * - * @return {@code true} if more tokens are present, otherwise {@code false} - */ - public boolean hasNext() { - return !(current == null); - } - + private Token fetchCheck() throws ParseException { Token fetch = fetch(); if(fetch != null) { @@ -69,16 +65,16 @@ public class Tokenizer { } return fetch; } - + private Token fetch() throws TokenizerException { while(!reader.current().isEOF() && reader.current().isWhitespace()) reader.consume(); - + while(reader.matches("//", true)) skipLine(); // Skip line if comment - + if(reader.matches("/*", true)) skipTo("*/"); // Skip multi line comment - + if(reader.current().isEOF()) return null; // EOF - + if(reader.matches("==", true)) return new Token("==", Token.Type.EQUALS_OPERATOR, new Position(reader.getLine(), reader.getIndex())); if(reader.matches("!=", true)) @@ -91,14 +87,14 @@ public class Tokenizer { return new Token(">", Token.Type.GREATER_THAN_OPERATOR, new Position(reader.getLine(), reader.getIndex())); if(reader.matches("<", true)) return new Token("<", Token.Type.LESS_THAN_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - - + + if(reader.matches("||", true)) return new Token("||", Token.Type.BOOLEAN_OR, new Position(reader.getLine(), reader.getIndex())); if(reader.matches("&&", true)) return new Token("&&", Token.Type.BOOLEAN_AND, new Position(reader.getLine(), reader.getIndex())); - - + + if(isNumberStart()) { StringBuilder num = new StringBuilder(); while(!reader.current().isEOF() && isNumberLike()) { @@ -106,7 +102,7 @@ public class Tokenizer { } return new Token(num.toString(), Token.Type.NUMBER, new Position(reader.getLine(), reader.getIndex())); } - + if(reader.current().is('"')) { reader.consume(); // Consume first quote StringBuilder string = new StringBuilder(); @@ -122,10 +118,10 @@ public class Tokenizer { string.append(reader.consume()); } reader.consume(); // Consume last quote - + return new Token(string.toString(), Token.Type.STRING, new Position(reader.getLine(), reader.getIndex())); } - + if(reader.current().is('(')) return new Token(reader.consume().toString(), Token.Type.GROUP_BEGIN, new Position(reader.getLine(), reader.getIndex())); if(reader.current().is(')')) @@ -143,37 +139,39 @@ public class Tokenizer { if(reader.current().is('+')) return new Token(reader.consume().toString(), Token.Type.ADDITION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); if(reader.current().is('-')) - return new Token(reader.consume().toString(), Token.Type.SUBTRACTION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); + return new Token(reader.consume().toString(), Token.Type.SUBTRACTION_OPERATOR, + new Position(reader.getLine(), reader.getIndex())); if(reader.current().is('*')) - return new Token(reader.consume().toString(), Token.Type.MULTIPLICATION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); + return new Token(reader.consume().toString(), Token.Type.MULTIPLICATION_OPERATOR, + new Position(reader.getLine(), reader.getIndex())); if(reader.current().is('/')) return new Token(reader.consume().toString(), Token.Type.DIVISION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); if(reader.current().is('%')) return new Token(reader.consume().toString(), Token.Type.MODULO_OPERATOR, new Position(reader.getLine(), reader.getIndex())); if(reader.current().is('!')) return new Token(reader.consume().toString(), Token.Type.BOOLEAN_NOT, new Position(reader.getLine(), reader.getIndex())); - + StringBuilder token = new StringBuilder(); while(!reader.current().isEOF() && !isSyntaxSignificant(reader.current().getCharacter())) { Char c = reader.consume(); if(c.isWhitespace()) break; token.append(c); } - + String tokenString = token.toString(); - + if(tokenString.equals("true")) return new Token(tokenString, Token.Type.BOOLEAN, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("false")) return new Token(tokenString, Token.Type.BOOLEAN, new Position(reader.getLine(), reader.getIndex())); - + if(tokenString.equals("num")) return new Token(tokenString, Token.Type.NUMBER_VARIABLE, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("str")) return new Token(tokenString, Token.Type.STRING_VARIABLE, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("bool")) return new Token(tokenString, Token.Type.BOOLEAN_VARIABLE, new Position(reader.getLine(), reader.getIndex())); - + if(tokenString.equals("if")) return new Token(tokenString, Token.Type.IF_STATEMENT, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("else")) @@ -182,7 +180,7 @@ public class Tokenizer { return new Token(tokenString, Token.Type.WHILE_LOOP, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("for")) return new Token(tokenString, Token.Type.FOR_LOOP, new Position(reader.getLine(), reader.getIndex())); - + if(tokenString.equals("return")) return new Token(tokenString, Token.Type.RETURN, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("continue")) @@ -191,32 +189,22 @@ public class Tokenizer { return new Token(tokenString, Token.Type.BREAK, new Position(reader.getLine(), reader.getIndex())); if(tokenString.equals("fail")) return new Token(tokenString, Token.Type.FAIL, new Position(reader.getLine(), reader.getIndex())); - + if(tokenString.equals("id")) return new Token(tokenString, Token.Type.ID, new Position(reader.getLine(), reader.getIndex())); - + return new Token(tokenString, Token.Type.IDENTIFIER, new Position(reader.getLine(), reader.getIndex())); } - - private boolean isNumberLike() { - return reader.current().isDigit() - || reader.current().is('_', '.', 'E'); - } - - private boolean isNumberStart() { - return reader.current().isDigit() - || reader.current().is('.') && reader.next(1).isDigit(); - } - + private void skipLine() { while(!reader.current().isEOF() && !reader.current().isNewLine()) reader.consume(); consumeWhitespace(); } - + private void consumeWhitespace() { while(!reader.current().isEOF() && reader.current().isWhitespace()) reader.consume(); // Consume whitespace. } - + private void skipTo(String s) throws EOFException { Position begin = new Position(reader.getLine(), reader.getIndex()); while(!reader.current().isEOF()) { @@ -228,9 +216,28 @@ public class Tokenizer { } throw new EOFException("No end of expression found.", begin); } - + + /** + * Whether this {@code Tokenizer} contains additional tokens. + * + * @return {@code true} if more tokens are present, otherwise {@code false} + */ + public boolean hasNext() { + return !(current == null); + } + + private boolean isNumberLike() { + return reader.current().isDigit() + || reader.current().is('_', '.', 'E'); + } + + private boolean isNumberStart() { + return reader.current().isDigit() + || reader.current().is('.') && reader.next(1).isDigit(); + } + public boolean isSyntaxSignificant(char c) { return syntaxSignificant.contains(c); } - + } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java index 6db82c522..8de70c536 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java @@ -2,14 +2,15 @@ package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class EOFException extends TokenizerException { - + private static final long serialVersionUID = 3980047409902809440L; - + public EOFException(String message, Position position) { super(message, position); } - + public EOFException(String message, Position position, Throwable cause) { super(message, position, cause); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java index d62119016..5ddef18b9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java @@ -2,14 +2,15 @@ package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public class FormatException extends TokenizerException { - + private static final long serialVersionUID = -791308012940744455L; - + public FormatException(String message, Position position) { super(message, position); } - + public FormatException(String message, Position position, Throwable cause) { super(message, position, cause); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java index 05bad97b6..6798b10ab 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java @@ -3,14 +3,15 @@ package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.tokenizer.Position; + public abstract class TokenizerException extends ParseException { - + private static final long serialVersionUID = 2792384010083575420L; - + public TokenizerException(String message, Position position) { super(message, position); } - + public TokenizerException(String message, Position position, Throwable cause) { super(message, position, cause); } diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java index 9b50801cc..5b033f8e8 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java @@ -1,15 +1,17 @@ package structure; -import com.dfsek.terra.addons.terrascript.tokenizer.Lookahead; import org.junit.jupiter.api.Test; import java.io.StringReader; +import com.dfsek.terra.addons.terrascript.tokenizer.Lookahead; + + public class LookaheadTest { @Test public void lookahead() { Lookahead lookahead = new Lookahead(new StringReader("Test string...")); - + for(int i = 0; lookahead.next(i) != null; i++) { System.out.print(lookahead.next(i).getCharacter()); } diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index d8e8b6ade..d5fa937e2 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -1,6 +1,15 @@ package structure; +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import com.dfsek.terra.addons.terrascript.parser.Parser; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Block; @@ -10,31 +19,24 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.Test; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.List; -import java.util.Map; public class ParserTest { @Test public void parse() throws IOException, ParseException { Parser parser = new Parser(IOUtils.toString(getClass().getResourceAsStream("/test.tesf"), Charset.defaultCharset())); - + parser.registerFunction("test", new FunctionBuilder() { @Override public Test1 build(List> argumentList, Position position) { return new Test1(argumentList.get(0), argumentList.get(1), position); } - + @Override public int argNumber() { return 2; } - + @Override public Returnable.ReturnType getArgument(int position) { switch(position) { @@ -46,41 +48,42 @@ public class ParserTest { return null; } } - + }); - + long l = System.nanoTime(); Block block = parser.parse(); long t = System.nanoTime() - l; System.out.println("Took " + (double) t / 1000000); - + block.apply(null, new HashMap<>()); - + block.apply(null, new HashMap<>()); } - + private static class Test1 implements Function { private final Returnable a; private final Returnable b; private final Position position; - + public Test1(Returnable a, Returnable b, Position position) { this.a = a; this.b = b; this.position = position; } - + @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - System.out.println("string: " + a.apply(implementationArguments, variableMap) + ", double: " + b.apply(implementationArguments, variableMap)); + System.out.println("string: " + a.apply(implementationArguments, variableMap) + ", double: " + + b.apply(implementationArguments, variableMap)); return null; } - + @Override public Position getPosition() { return position; } - + @Override public ReturnType returnType() { return ReturnType.VOID; diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 0058624fb..dabfe2ff0 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -1,8 +1,8 @@ dependencies { "shadedApi"("com.dfsek:Paralithic:0.4.0") - + "shadedApi"("com.dfsek.tectonic:common:2.1.2") - + "shadedApi"("net.jafama:jafama:2.3.2") } diff --git a/common/api/src/main/java/com/dfsek/terra/api/Logger.java b/common/api/src/main/java/com/dfsek/terra/api/Logger.java index d0026b3ce..d4815ee43 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/Logger.java +++ b/common/api/src/main/java/com/dfsek/terra/api/Logger.java @@ -2,11 +2,11 @@ package com.dfsek.terra.api; public interface Logger { void info(String message); - + void warning(String message); - + void severe(String message); - + default void stack(Throwable t) { t.printStackTrace(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java index 9d2eba55a..eb36c835a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/src/main/java/com/dfsek/terra/api/TerraPlugin.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api; +import java.io.File; + import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; @@ -12,40 +14,17 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import java.io.File; /** * Represents a Terra mod/plugin instance. */ public interface TerraPlugin extends LoaderRegistrar { - WorldHandle getWorldHandle(); - Logger logger(); - - PluginConfig getTerraConfig(); - - File getDataFolder(); - - Language getLanguage(); - - CheckedRegistry getConfigRegistry(); - - Registry getAddons(); - + boolean reload(); - - ItemHandle getItemHandle(); - + String platformName(); - - Logger getDebugLogger(); - - EventManager getEventManager(); - - default String getVersion() { - return "@VERSION@"; - } - + /** * Runs a task that may or may not be thread safe, depending on platform. *

@@ -56,6 +35,28 @@ public interface TerraPlugin extends LoaderRegistrar { default void runPossiblyUnsafeTask(Runnable task) { task.run(); } - + + WorldHandle getWorldHandle(); + + PluginConfig getTerraConfig(); + + File getDataFolder(); + + Language getLanguage(); + + CheckedRegistry getConfigRegistry(); + + Registry getAddons(); + + ItemHandle getItemHandle(); + + Logger getDebugLogger(); + + EventManager getEventManager(); + + default String getVersion() { + return "@VERSION@"; + } + Profiler getProfiler(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index 1771a77d9..023ffde61 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -1,15 +1,22 @@ package com.dfsek.terra.api.addon; +import org.jetbrains.annotations.NotNull; + 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 org.jetbrains.annotations.NotNull; + /** * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. */ public abstract class TerraAddon { + /** + * Invoked immediately after an com.dfsek.terra.addon is loaded. + */ + public abstract void initialize(); + /** * Gets the version of this com.dfsek.terra.addon. * @@ -19,7 +26,7 @@ public abstract class TerraAddon { Version version = getClass().getAnnotation(Version.class); return version == null ? "0.1.0" : version.value(); } - + /** * Gets the author of this com.dfsek.terra.addon. * @@ -29,7 +36,7 @@ public abstract class TerraAddon { Author author = getClass().getAnnotation(Author.class); return author == null ? "Anon Y. Mous" : author.value(); } - + /** * Gets the name (ID) of this com.dfsek.terra.addon. * @@ -38,12 +45,9 @@ public abstract class TerraAddon { 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 com.dfsek.terra.addon loader. + throw new IllegalStateException( + "Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the com + // .dfsek.terra.addon loader. return addon.value(); } - - /** - * Invoked immediately after an com.dfsek.terra.addon is loaded. - */ - public abstract void initialize(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java index 3ca6354c9..a10b0bd50 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java @@ -7,6 +7,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Specifies that the annotated class is an entry point for a Terra com.dfsek.terra.addon. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java index 9c46e8eab..879e57553 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java @@ -7,6 +7,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Optional annotation that specifies the author of an com.dfsek.terra.addon. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java index 83b5b01fd..73c6bcb94 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java @@ -7,6 +7,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Optional annotation that specifies dependencies of an com.dfsek.terra.addon. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java index 63afd191f..b52c027ff 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java @@ -7,6 +7,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Optional annotation that specifies the version of an com.dfsek.terra.addon. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java index ce108c345..39b91cf12 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockType.java @@ -3,10 +3,11 @@ package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; + public interface BlockType extends Handle { BlockState getDefaultData(); - + boolean isSolid(); - + boolean isWater(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java index 1809d6793..89a3cd610 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java @@ -4,20 +4,21 @@ import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.vector.Vector3; + public interface BlockEntity extends Handle { - Vector3 getPosition(); - - int getX(); - - int getY(); - - int getZ(); - - BlockState getBlockData(); - boolean update(boolean applyPhysics); - + default void applyState(String state) { // Do nothing by default. } + + Vector3 getPosition(); + + int getX(); + + int getY(); + + int getZ(); + + BlockState getBlockData(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java index 07529b1e9..6266f4e79 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Container.java @@ -2,5 +2,6 @@ package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.inventory.BlockInventoryHolder; + public interface Container extends BlockEntity, BlockInventoryHolder { } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java index c9133ef46..c0497c562 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java @@ -1,38 +1,40 @@ package com.dfsek.terra.api.block.entity; -import com.dfsek.terra.api.entity.EntityType; import org.jetbrains.annotations.NotNull; +import com.dfsek.terra.api.entity.EntityType; + + public interface MobSpawner extends BlockEntity { EntityType getSpawnedType(); - + void setSpawnedType(@NotNull EntityType creatureType); - + int getDelay(); - + void setDelay(int delay); - + int getMinSpawnDelay(); - + void setMinSpawnDelay(int delay); - + int getMaxSpawnDelay(); - + void setMaxSpawnDelay(int delay); - + int getSpawnCount(); - + void setSpawnCount(int spawnCount); - + int getMaxNearbyEntities(); - + void setMaxNearbyEntities(int maxNearbyEntities); - + int getRequiredPlayerRange(); - + void setRequiredPlayerRange(int requiredPlayerRange); - + int getSpawnRange(); - + void setSpawnRange(int spawnRange); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java index 97d19c2a3..f3bef5e3e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java @@ -3,12 +3,13 @@ package com.dfsek.terra.api.block.entity; import java.util.HashMap; import java.util.Map; + public class SerialState { protected final Map> properties = new HashMap<>(); - + public SerialState() { } - + public static Map parse(String props) { String[] sep = props.split(","); Map map = new HashMap<>(); @@ -17,51 +18,7 @@ public class SerialState { } return map; } - - private void checkExists(String prop) { - if(!properties.containsKey(prop)) throw new IllegalArgumentException("No such property \"" + prop + "\""); - } - - private void checkType(Class clazz, Object o, String id) { - if(!clazz.isInstance(o)) - throw new IllegalArgumentException("Invalid data for property " + id + ": " + o); - } - - public void setProperty(String id, Object value) { - checkExists(id); - Property prop = properties.get(id); - checkType(prop.getValueClass(), value, id); - prop.setValue(value); - } - - public int getInteger(String id) { - checkExists(id); - Property prop = properties.get(id); - checkType(Integer.class, prop.getValue(), id); - return (Integer) prop.getValue(); - } - - public String getString(String id) { - checkExists(id); - Property prop = properties.get(id); - checkType(String.class, prop.getValue(), id); - return (String) prop.getValue(); - } - - public long getLong(String id) { - checkExists(id); - Property prop = properties.get(id); - checkType(Long.class, prop.getValue(), id); - return (Long) prop.getValue(); - } - - public boolean getBoolean(String id) { - checkExists(id); - Property prop = properties.get(id); - checkType(Boolean.class, prop.getValue(), id); - return (Boolean) prop.getValue(); - } - + @SuppressWarnings("unchecked") public T get(String id, Class clazz) { checkExists(id); @@ -69,24 +26,69 @@ public class SerialState { checkType(clazz, prop.getValue(), id); return (T) prop.getValue(); } - + + private void checkExists(String prop) { + if(!properties.containsKey(prop)) throw new IllegalArgumentException("No such property \"" + prop + "\""); + } + + private void checkType(Class clazz, Object o, String id) { + if(!clazz.isInstance(o)) + throw new IllegalArgumentException("Invalid data for property " + id + ": " + o); + } + + public void setProperty(String id, Object value) { + checkExists(id); + Property prop = properties.get(id); + checkType(prop.getValueClass(), value, id); + prop.setValue(value); + } + + public int getInteger(String id) { + checkExists(id); + Property prop = properties.get(id); + checkType(Integer.class, prop.getValue(), id); + return (Integer) prop.getValue(); + } + + public String getString(String id) { + checkExists(id); + Property prop = properties.get(id); + checkType(String.class, prop.getValue(), id); + return (String) prop.getValue(); + } + + public long getLong(String id) { + checkExists(id); + Property prop = properties.get(id); + checkType(Long.class, prop.getValue(), id); + return (Long) prop.getValue(); + } + + public boolean getBoolean(String id) { + checkExists(id); + Property prop = properties.get(id); + checkType(Boolean.class, prop.getValue(), id); + return (Boolean) prop.getValue(); + } + + protected static class Property { private final Class clazz; private Object value; - + public Property(Class clazz) { this.clazz = clazz; } - + public Class getValueClass() { return clazz; } - + @SuppressWarnings("unchecked") public T getValue() { return (T) value; } - + public void setValue(Object value) { this.value = value; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java index 8c1a4bfe6..f8c148303 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/entity/Sign.java @@ -2,10 +2,11 @@ package com.dfsek.terra.api.block.entity; import org.jetbrains.annotations.NotNull; + public interface Sign extends BlockEntity { - @NotNull String[] getLines(); - - @NotNull String getLine(int index) throws IndexOutOfBoundsException; - void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException; + + @NotNull String[] getLines(); + + @NotNull String getLine(int index) throws IndexOutOfBoundsException; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 83e672a53..08798ad44 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -1,38 +1,39 @@ package com.dfsek.terra.api.block.state; +import java.util.function.Consumer; + import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.properties.Property; -import java.util.function.Consumer; public interface BlockState extends Cloneable, Handle { - - BlockType getBlockType(); - + boolean matches(BlockState other); - + BlockState clone(); - - String getAsString(); - - boolean isAir(); - - boolean isStructureVoid(); - + boolean has(Property property); - + T get(Property property); - + BlockState set(Property property, T value); - - default BlockState setIfPresent(Property property, T value) { - if(has(property)) set(property, value); - return this; - } - + default BlockState ifProperty(Property property, Consumer action) { if(has(property)) action.accept(this); return this; } + + default BlockState setIfPresent(Property property, T value) { + if(has(property)) set(property, value); + return this; + } + + BlockType getBlockType(); + + String getAsString(); + + boolean isAir(); + + boolean isStructureVoid(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java index 041303d87..839f78287 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java @@ -2,10 +2,11 @@ package com.dfsek.terra.api.block.state.properties; import java.util.Collection; + public interface Property { - Class getType(); - - String getName(); - Collection values(); + + Class getType(); + + String getName(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java index f58a9307a..511d9278a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java @@ -1,27 +1,28 @@ package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.state.properties.Property; - import java.util.Arrays; import java.util.Collection; +import com.dfsek.terra.api.block.state.properties.Property; + + public interface BooleanProperty extends Property { static BooleanProperty of(String name) { return new BooleanProperty() { private static final Collection BOOLEANS = Arrays.asList(true, false); - - @Override - public String getName() { - return name; - } - + @Override public Collection values() { return BOOLEANS; } + + @Override + public String getName() { + return name; + } }; } - + @Override default Class getType() { return Boolean.class; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 777405d43..af5565485 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -1,30 +1,31 @@ package com.dfsek.terra.api.block.state.properties.base; +import java.util.Arrays; +import java.util.Collection; + import com.dfsek.terra.api.block.state.properties.Property; import com.dfsek.terra.api.util.generic.Lazy; -import java.util.Arrays; -import java.util.Collection; public interface EnumProperty> extends Property { static > EnumProperty of(String name, Class clazz) { return new EnumProperty() { private final Lazy> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants())); - - @Override - public Class getType() { - return clazz; - } - - @Override - public String getName() { - return name; - } - + @Override public Collection values() { return constants.value(); } + + @Override + public Class getType() { + return clazz; + } + + @Override + public String getName() { + return name; + } }; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java index ab4cb39c6..eb5a22ea7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java @@ -1,12 +1,13 @@ package com.dfsek.terra.api.block.state.properties.base; -import com.dfsek.terra.api.block.state.properties.Property; -import com.dfsek.terra.api.util.generic.Construct; - import java.util.ArrayList; import java.util.Collection; import java.util.List; +import com.dfsek.terra.api.block.state.properties.Property; +import com.dfsek.terra.api.util.generic.Construct; + + public interface IntProperty extends Property { static IntProperty of(String name, int min, int max) { return new IntProperty() { @@ -17,19 +18,19 @@ public interface IntProperty extends Property { } return ints; }); - - @Override - public String getName() { - return name; - } - + @Override public Collection values() { return collection; } + + @Override + public String getName() { + return name; + } }; } - + @Override default Class getType() { return Integer.class; diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java index e69940949..f1c8ba0f3 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java @@ -7,30 +7,31 @@ import com.dfsek.terra.api.block.state.properties.enums.RailShape; import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection; import com.dfsek.terra.api.block.state.properties.enums.WallHeight; + public final class Properties { public static final EnumProperty DIRECTION = EnumProperty.of("facing", Direction.class); public static final EnumProperty AXIS = EnumProperty.of("axis", Axis.class); - + public static final BooleanProperty NORTH = BooleanProperty.of("north"); public static final BooleanProperty SOUTH = BooleanProperty.of("south"); public static final BooleanProperty EAST = BooleanProperty.of("east"); public static final BooleanProperty WEST = BooleanProperty.of("west"); - + public static final EnumProperty NORTH_HEIGHT = EnumProperty.of("north", WallHeight.class); public static final EnumProperty SOUTH_HEIGHT = EnumProperty.of("south", WallHeight.class); public static final EnumProperty EAST_HEIGHT = EnumProperty.of("east", WallHeight.class); public static final EnumProperty WEST_HEIGHT = EnumProperty.of("west", WallHeight.class); - + public static final EnumProperty NORTH_CONNECTION = EnumProperty.of("north", RedstoneConnection.class); public static final EnumProperty SOUTH_CONNECTION = EnumProperty.of("south", RedstoneConnection.class); public static final EnumProperty EAST_CONNECTION = EnumProperty.of("east", RedstoneConnection.class); public static final EnumProperty WEST_CONNECTION = EnumProperty.of("west", RedstoneConnection.class); - - + + public static final EnumProperty RAIL_SHAPE = EnumProperty.of("shape", RailShape.class); public static final EnumProperty HALF = EnumProperty.of("half", Half.class); - + public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 15); - + public static final BooleanProperty WATERLOGGED = BooleanProperty.of("waterlogged"); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java index 98152b027..9d0156929 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.block.state.properties.enums; public enum Axis { - X, Y, Z + X, + Y, + Z } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index ac32fdb4a..4a3578bc9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.block.state.properties.enums; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.generic.Construct; + public enum Direction { NORTH(0, 0, 0, -1), EAST(1, 1, 0, 0), @@ -10,22 +11,22 @@ public enum Direction { WEST(3, -1, 0, 0), UP(-1, 0, 1, 0), DOWN(-1, 0, -1, 0); - - private static final Direction[] rotations = Construct.construct(() -> new Direction[] {NORTH, SOUTH, EAST, WEST}); - + + private static final Direction[] rotations = Construct.construct(() -> new Direction[]{ NORTH, SOUTH, EAST, WEST }); + private final int rotation; - + private final int modX; private final int modY; private final int modZ; - + Direction(int rotation, int modX, int modY, int modZ) { this.rotation = rotation; this.modX = modX; this.modY = modY; this.modZ = modZ; } - + public Direction rotate(Rotation rotation) { switch(this) { case UP: @@ -35,19 +36,7 @@ public enum Direction { return rotations[(this.rotation + rotation.getDegrees() / 90) % 4]; } } - - public int getModX() { - return modX; - } - - public int getModY() { - return modY; - } - - public int getModZ() { - return modZ; - } - + public Direction opposite() { switch(this) { case DOWN: @@ -63,7 +52,19 @@ public enum Direction { case SOUTH: return NORTH; } - + throw new IllegalStateException(); } + + public int getModX() { + return modX; + } + + public int getModY() { + return modY; + } + + public int getModZ() { + return modZ; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java index e0088dd13..50d32bef7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java @@ -9,7 +9,7 @@ public enum Half { * The bottom half of the block, normally with the lower y coordinate. */ BOTTOM, - + /** * Some blocks, e.g. slabs, can occupy both halves. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java index 3219f6f3f..08a01a163 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.block.state.properties.enums; public enum RedstoneConnection { - NONE, SIDE, UP + NONE, + SIDE, + UP } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java index 73af8a898..eda29ef85 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.block.state.properties.enums; public enum WallHeight { - LOW, NONE, TALL + LOW, + NONE, + TALL } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java b/common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java index 4c5618531..1ebe09b91 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/CommandManager.java @@ -1,17 +1,18 @@ package com.dfsek.terra.api.command; +import java.util.List; + import com.dfsek.terra.api.command.exception.CommandException; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.entity.CommandSender; -import java.util.List; public interface CommandManager { void execute(String command, CommandSender sender, List args) throws CommandException; - + void register(String name, Class clazz) throws MalformedCommandException; - + List tabComplete(String command, CommandSender sender, List args) throws CommandException; - + int getMaxArgumentDepth(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java b/common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java index 86cbe8dad..21e30b2cc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.command; import com.dfsek.terra.api.entity.CommandSender; + public interface CommandTemplate { void execute(CommandSender sender); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java index d0c91a965..ddcf7b7e4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java @@ -1,25 +1,26 @@ package com.dfsek.terra.api.command.annotation; -import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.command.arg.StringArgumentParser; -import com.dfsek.terra.api.command.tab.NothingCompleter; -import com.dfsek.terra.api.command.tab.TabCompleter; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import com.dfsek.terra.api.command.arg.ArgumentParser; +import com.dfsek.terra.api.command.arg.StringArgumentParser; +import com.dfsek.terra.api.command.tab.NothingCompleter; +import com.dfsek.terra.api.command.tab.TabCompleter; + + @Target(ElementType.ANNOTATION_TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Argument { String value(); - + boolean required() default true; - + Class tabCompleter() default NothingCompleter.class; - + Class> argumentParser() default StringArgumentParser.class; - + String defaultValue() default ""; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java index fb5fd81ea..021babec4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Command.java @@ -5,14 +5,15 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Command { - Argument[] arguments() default {}; - - Switch[] switches() default {}; - - Subcommand[] subcommands() default {}; - + Argument[] arguments() default { }; + + Switch[] switches() default { }; + + Subcommand[] subcommands() default { }; + String usage() default ""; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java index 7f729ba0a..7140b7db6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java @@ -1,18 +1,19 @@ package com.dfsek.terra.api.command.annotation; -import com.dfsek.terra.api.command.CommandTemplate; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import com.dfsek.terra.api.command.CommandTemplate; + + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Subcommand { String value(); - - String[] aliases() default {}; - + + String[] aliases() default { }; + Class clazz(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java index 16ea3e21a..1abd9b121 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java @@ -5,10 +5,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Switch { String value(); - - String[] aliases() default {}; + + String[] aliases() default { }; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java index 89dbc5245..edd6f82a6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface ArgumentTarget { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java index 67478373a..7d3f327df 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface SwitchTarget { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java index 174710401..280eaa9c2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Command may only be executed with debug mode enabled. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java index fd7b1e320..b7922c6a7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Marks command as player-only */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java index c51ee570b..1d3dd722b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Command may only be executed in a Terra world. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java index fe34f088a..abb169575 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; + public interface ArgumentParser { T parse(CommandSender sender, String arg); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java index d05ae0f89..4eadb86b8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; + public class DoubleArgumentParser implements ArgumentParser { @Override public Double parse(CommandSender sender, String arg) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java index 5f6d34ad6..2f5313583 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; + public class IntegerArgumentParser implements ArgumentParser { @Override public Integer parse(CommandSender sender, String arg) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java b/common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java index bba6de6bd..c7d22ea39 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; + public class StringArgumentParser implements ArgumentParser { @Override public String parse(CommandSender sender, String arg) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java index 3fd6537ef..2af650a0e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java @@ -2,11 +2,11 @@ package com.dfsek.terra.api.command.exception; public abstract class CommandException extends Exception { private static final long serialVersionUID = -2955328495045879822L; - + public CommandException(String message) { super(message); } - + public CommandException(String message, Throwable cause) { super(message, cause); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java index 061bfc64b..ac23ac64c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java @@ -2,11 +2,11 @@ package com.dfsek.terra.api.command.exception; public class ExecutionException extends CommandException { private static final long serialVersionUID = -6345523475880607959L; - + public ExecutionException(String message) { super(message); } - + public ExecutionException(String message, Throwable cause) { super(message, cause); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java index 5ad88d0b3..8302d3118 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java @@ -2,11 +2,11 @@ package com.dfsek.terra.api.command.exception; public class InvalidArgumentsException extends CommandException { private static final long serialVersionUID = 7563619667472569824L; - + public InvalidArgumentsException(String message) { super(message); } - + public InvalidArgumentsException(String message, Throwable cause) { super(message, cause); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java index c124a8b85..f728c707e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java @@ -5,11 +5,11 @@ package com.dfsek.terra.api.command.exception; */ public class MalformedCommandException extends CommandException { private static final long serialVersionUID = -5417760860407895496L; - + public MalformedCommandException(String message) { super(message); } - + public MalformedCommandException(String message, Throwable cause) { super(message, cause); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java b/common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java index c7e545ae7..944e2b4a0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java @@ -2,11 +2,11 @@ package com.dfsek.terra.api.command.exception; public class SwitchFormatException extends CommandException { private static final long serialVersionUID = -965858989317844628L; - + public SwitchFormatException(String message) { super(message); } - + public SwitchFormatException(String message, Throwable cause) { super(message, cause); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java b/common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java index 4b7ab26cf..f4d7e2fa4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.command.tab; -import com.dfsek.terra.api.entity.CommandSender; - import java.util.Collections; import java.util.List; +import com.dfsek.terra.api.entity.CommandSender; + + public class NothingCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java b/common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java index c7c3174da..f0836bd1e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java @@ -1,8 +1,9 @@ package com.dfsek.terra.api.command.tab; +import java.util.List; + import com.dfsek.terra.api.entity.CommandSender; -import java.util.List; public interface TabCompleter { List complete(CommandSender sender); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java index 0abb43e3b..7683bb06b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java @@ -1,7 +1,9 @@ package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; + import com.dfsek.terra.api.StringIdentifiable; + public interface AbstractableTemplate extends ConfigTemplate, StringIdentifiable { } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java index 33baf21d4..d0648e9c9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java @@ -2,8 +2,10 @@ package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; + import com.dfsek.terra.api.TerraPlugin; + public interface ConfigFactory { O build(C config, TerraPlugin main) throws LoadException; } 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 5d48db654..d92c9cfe9 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 @@ -1,5 +1,10 @@ package com.dfsek.terra.api.config; +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.Set; + import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -13,52 +18,49 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider; -import java.lang.reflect.Type; -import java.util.List; -import java.util.Map; -import java.util.Set; public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder, StringIdentifiable { + WorldConfig toWorldConfig(World world); + + void registerConfigType(ConfigType type, String id, int priority); + + Set addons(); + + boolean vanillaMobs(); + + boolean vanillaStructures(); + + boolean vanillaCaves(); + + boolean disableStructures(); + + boolean doBetaCarvers(); + + boolean vanillaFlora(); + BiomeProvider getBiomeProviderBuilder(); - + CheckedRegistry getOrCreateRegistry(Type clazz); + default CheckedRegistry getOrCreateRegistry(Class clazz) { return getOrCreateRegistry((Type) clazz); } - + default CheckedRegistry getOrCreateRegistry(TypeKey type) { return getOrCreateRegistry(type.getType()); } - - WorldConfig toWorldConfig(World world); - + List getStages(); - - void registerConfigType(ConfigType type, String id, int priority); - + Loader getLoader(); - - Set addons(); - + String getAuthor(); - + String getVersion(); - - boolean vanillaMobs(); - - boolean vanillaStructures(); - - boolean vanillaCaves(); - - boolean disableStructures(); - + Map getLocatable(); - - boolean doBetaCarvers(); - - boolean vanillaFlora(); - + RegistryFactory getRegistryFactory(); - + ChunkGeneratorProvider getGeneratorProvider(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 7cefbda01..4384ba5a2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -1,17 +1,18 @@ package com.dfsek.terra.api.config; +import java.util.function.Supplier; + import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.function.Supplier; public interface ConfigType { - T getTemplate(ConfigPack pack, TerraPlugin main); - - ConfigFactory getFactory(); - - TypeKey getTypeKey(); - Supplier> registrySupplier(ConfigPack pack); + + T getTemplate(ConfigPack pack, TerraPlugin main); + + ConfigFactory getFactory(); + + TypeKey getTypeKey(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java index 03c7f5f0d..f09b91491 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -9,20 +9,22 @@ import java.util.Map; import java.util.Set; import java.util.function.Consumer; + public interface Loader { - + Loader thenNames(Consumer> consumer) throws ConfigException; - + Loader thenEntries(Consumer>> consumer) throws ConfigException; - + /** * Get a single file from this Loader. * * @param singleFile File to get + * * @return InputStream from file. */ InputStream get(String singleFile) throws IOException; - + /** * Open a subdirectory. * @@ -30,7 +32,7 @@ public interface Loader { * @param extension */ Loader open(String directory, String extension); - + /** * Close all InputStreams opened. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java index 1f81ec6ed..62d242d3f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/PluginConfig.java @@ -2,34 +2,35 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.TerraPlugin; + public interface PluginConfig { void load(TerraPlugin main); - - String getLanguage(); - - boolean isDebugCommands(); - - boolean isDebugLogging(); - - boolean isDebugProfiler(); - - boolean isDebugScript(); - - long getDataSaveInterval(); - - int getBiomeSearchResolution(); - - int getCarverCacheSize(); - - int getStructureCache(); - - int getSamplerCache(); - - int getMaxRecursion(); - - int getBiomeCache(); - - int getProviderCache(); - + boolean dumpDefaultConfig(); + + String getLanguage(); + + boolean isDebugCommands(); + + boolean isDebugLogging(); + + boolean isDebugProfiler(); + + boolean isDebugScript(); + + long getDataSaveInterval(); + + int getBiomeSearchResolution(); + + int getCarverCacheSize(); + + int getStructureCache(); + + int getSamplerCache(); + + int getMaxRecursion(); + + int getBiomeCache(); + + int getProviderCache(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 5333db06b..590dee335 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,41 +1,42 @@ package com.dfsek.terra.api.config; +import java.util.Map; + import com.dfsek.terra.api.StringIdentifiable; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; -import java.util.Map; public interface WorldConfig extends StringIdentifiable { - Registry getRegistry(Class clazz); - - World getWorld(); - - SamplerCache getSamplerCache(); - - BiomeProvider getProvider(); - - ConfigPack getPack(); - int elevationBlend(); - + boolean disableTrees(); - + boolean disableCarving(); - + boolean disableOres(); - + boolean disableFlora(); - + boolean disableStructures(); - + + Registry getRegistry(Class clazz); + + World getWorld(); + + SamplerCache getSamplerCache(); + + BiomeProvider getProvider(); + + ConfigPack getPack(); + String getAuthor(); - + String getVersion(); - + Map getLocatable(); - + boolean isDisableSaplings(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java b/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java index cfac598c7..33e7fb6bc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/meta/Meta.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE_USE) public @interface Meta { diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java b/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java index cc005485a..953809a97 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/CommandSender.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.entity; import com.dfsek.terra.api.Handle; + public interface CommandSender extends Handle { void sendMessage(String message); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java index 96811a9a6..63e0a701d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/Entity.java @@ -1,15 +1,15 @@ package com.dfsek.terra.api.entity; -import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; -public interface Entity extends Handle, CommandSender { + +public interface Entity extends CommandSender { Vector3 position(); - + void position(Vector3 position); - + void world(World world); - + World world(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java b/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java index f86525b82..79e3c1043 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java +++ b/common/api/src/main/java/com/dfsek/terra/api/entity/EntityType.java @@ -2,5 +2,6 @@ package com.dfsek.terra.api.entity; import com.dfsek.terra.api.Handle; + public interface EntityType extends Handle { } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java index dc509792d..4e8692552 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventHandler.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.event; import com.dfsek.terra.api.event.events.Event; + public interface EventHandler { void handle(Event event); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java index 7707971d2..1645376f5 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/EventManager.java @@ -1,8 +1,7 @@ package com.dfsek.terra.api.event; import com.dfsek.terra.api.event.events.Event; -import com.dfsek.terra.api.event.functional.EventContext; -import com.dfsek.terra.api.util.reflection.TypeKey; + /** * Manages event registration and triggering. @@ -14,8 +13,8 @@ public interface EventManager { * @param event Event to pass to all registered EventListeners. */ void callEvent(Event event); - + void registerHandler(Class clazz, T handler); - + T getHandler(Class clazz); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java index e6fdd5319..6b0f70b98 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java @@ -2,17 +2,18 @@ package com.dfsek.terra.api.event.events; import com.dfsek.terra.api.util.mutable.MutableBoolean; + /** * Abstract class containing basic {@link Cancellable} implementation. */ public abstract class AbstractCancellable implements Cancellable { private final MutableBoolean cancelled = new MutableBoolean(false); - + @Override public boolean isCancelled() { return cancelled.get(); } - + @Override public void setCancelled(boolean cancelled) { this.cancelled.set(cancelled); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java index ca7bccdf7..5c181ac39 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java @@ -12,7 +12,7 @@ public interface Cancellable extends Event { * @return Whether event is cancelled. */ boolean isCancelled(); - + /** * Set the cancellation status of the event. * diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index 25c1eea10..aff5d7d94 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.event.events; import com.dfsek.terra.api.config.ConfigPack; + /** * An event with functionality directly linked to a {@link ConfigPack}. *

diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java index d1ecb3fcf..1fd571cc0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java @@ -1,13 +1,14 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.Configuration; + +import java.util.function.BiConsumer; + import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; -import java.util.function.BiConsumer; -import java.util.function.Consumer; /** * Fired when a pack is searched for {@link Configuration}s. @@ -18,25 +19,25 @@ import java.util.function.Consumer; public class ConfigurationDiscoveryEvent implements PackEvent, FailThroughEvent { private final ConfigPack pack; private final Loader loader; - + private final BiConsumer consumer; - + public ConfigurationDiscoveryEvent(ConfigPack pack, Loader loader, BiConsumer consumer) { this.pack = pack; this.loader = loader; this.consumer = consumer; } - + + public void register(String identifier, Configuration config) { + consumer.accept(identifier, config); + } + @Override public ConfigPack getPack() { return pack; } - + public Loader getLoader() { return loader; } - - public void register(String identifier, Configuration config) { - consumer.accept(identifier, config); - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 0fb9f3363..7d8499fb1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -2,13 +2,15 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.abstraction.AbstractConfiguration; import com.dfsek.tectonic.config.ConfigTemplate; + +import java.util.function.Consumer; + import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.util.reflection.ReflectionUtil; -import java.util.function.Consumer; /** * Fired when each individual configuration is loaded. @@ -21,46 +23,49 @@ public class ConfigurationLoadEvent implements PackEvent, FailThroughEvent { private final AbstractConfiguration configuration; private final Consumer loader; private final ConfigType type; - + private final Object loaded; - - public ConfigurationLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, ConfigType type, Object loaded) { + + public ConfigurationLoadEvent(ConfigPack pack, AbstractConfiguration configuration, Consumer loader, + ConfigType type, Object loaded) { this.pack = pack; this.configuration = configuration; this.loader = loader; this.type = type; this.loaded = loaded; } - - @Override - public ConfigPack getPack() { - return pack; - } - - public AbstractConfiguration getConfiguration() { - return configuration; - } - + public T load(T template) { loader.accept(template); return template; } - - public ConfigType getType() { - return type; - } - + public boolean is(Class clazz) { return clazz.isAssignableFrom(type.getTypeKey().getRawType()); } - + + @Override + public ConfigPack getPack() { + return pack; + } + + public AbstractConfiguration getConfiguration() { + return configuration; + } + + public ConfigType getType() { + return type; + } + @SuppressWarnings("unchecked") public T getLoadedObject(Class clazz) { if(!clazz.isAssignableFrom(type.getTypeKey().getRawType())) - throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + clazz.getCanonicalName()); + throw new ClassCastException( + "Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + + clazz.getCanonicalName()); return (T) loaded; } - + @SuppressWarnings("unchecked") public T getLoadedObject() { return (T) loaded; diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java index 72382d3f3..78ffdcb6e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java @@ -2,27 +2,24 @@ package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.ConfigException; + import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; + /** * An event related to the loading process of config packs. */ public abstract class ConfigPackLoadEvent implements PackEvent, FailThroughEvent { private final ConfigPack pack; private final ExceptionalConsumer configLoader; - + public ConfigPackLoadEvent(ConfigPack pack, ExceptionalConsumer configLoader) { this.pack = pack; this.configLoader = configLoader; } - - @Override - public ConfigPack getPack() { - return pack; - } - + /** * Load a custom {@link ConfigTemplate} using the pack manifest. * @@ -31,7 +28,12 @@ public abstract class ConfigPackLoadEvent implements PackEvent, FailThroughEvent public void loadTemplate(ConfigTemplate template) throws ConfigException { configLoader.accept(template); } - + + @Override + public ConfigPack getPack() { + return pack; + } + public interface ExceptionalConsumer { void accept(T value) throws ConfigException; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java index 139c8284e..39905989a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java @@ -1,8 +1,10 @@ package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; + import com.dfsek.terra.api.config.ConfigPack; + /** * Called when a config pack has finished loading. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java index 2fc9c96e2..192d6b606 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java @@ -1,8 +1,10 @@ package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; + import com.dfsek.terra.api.config.ConfigPack; + /** * Called before a config pack's registries are filled. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index a18568d45..13fffacf4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -7,31 +7,34 @@ import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.ReflectionUtil; + public abstract class ConfigTypeLoadEvent implements PackEvent, FailThroughEvent { private final ConfigType type; private final CheckedRegistry registry; - + private final ConfigPack pack; - + public ConfigTypeLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { this.type = type; this.registry = registry; this.pack = pack; } - + + public boolean is(Class clazz) { + return clazz.isAssignableFrom(type.getTypeKey().getRawType()); + } + @Override public ConfigPack getPack() { return pack; } - - public boolean is(Class clazz) { - return clazz.isAssignableFrom(type.getTypeKey().getRawType()); - } - + @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Class clazz) { if(!clazz.isAssignableFrom(type.getTypeKey().getRawType())) - throw new ClassCastException("Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + clazz.getCanonicalName()); + throw new ClassCastException( + "Cannot assign object from loader of type " + ReflectionUtil.typeToString(type.getTypeKey().getType()) + " to class " + + clazz.getCanonicalName()); return (CheckedRegistry) registry; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java index b00140387..0e7fd3110 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; + public class ConfigTypePostLoadEvent extends ConfigTypeLoadEvent { public ConfigTypePostLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { super(type, registry, pack); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java index cab922dad..13cc1742e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java @@ -4,6 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.CheckedRegistry; + public class ConfigTypePreLoadEvent extends ConfigTypeLoadEvent { public ConfigTypePreLoadEvent(ConfigType type, CheckedRegistry registry, ConfigPack pack) { super(type, registry, pack); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java index 8f472e439..f43a86f93 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.event.events.platform; import com.dfsek.terra.api.event.events.Event; + /** * Called when the platform is initialized. */ diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index ecd4a842d..4ed04a634 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -4,23 +4,24 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.event.events.PackEvent; + /** * Called when an entity is spawned. */ public class EntitySpawnEvent implements PackEvent { private final ConfigPack pack; private final Entity entity; - + public EntitySpawnEvent(ConfigPack pack, Entity entity) { this.pack = pack; this.entity = entity; } - + @Override public ConfigPack getPack() { return pack; } - + /** * Get the entity that triggered the event. * diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index 4ccf5302b..092538a6c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,40 +1,41 @@ package com.dfsek.terra.api.event.events.world.generation; +import org.jetbrains.annotations.NotNull; + import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.AbstractCancellable; -import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.vector.Vector3; -import org.jetbrains.annotations.NotNull; + /** * Called when loot is populated. */ -public class LootPopulateEvent extends AbstractCancellable implements PackEvent, Cancellable { +public class LootPopulateEvent extends AbstractCancellable implements PackEvent { private final Container container; private final ConfigPack pack; private final Structure structure; private LootTable table; - + public LootPopulateEvent(Container container, LootTable table, ConfigPack pack, Structure structure) { this.container = container; this.table = table; this.pack = pack; this.structure = structure; } - + @Override public ConfigPack getPack() { return pack; } - + public Vector3 getPosition() { return container.getPosition(); } - + /** * Get the {@link Container} representing the inventory. * @@ -43,7 +44,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, public Container getContainer() { return container; } - + /** * Get the loot table to be populated. * @@ -52,7 +53,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, public LootTable getTable() { return table; } - + /** * Set the loot table to be populated. * @@ -61,7 +62,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, public void setTable(@NotNull LootTable table) { this.table = table; } - + /** * Get the script used to generate the structure. * diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java b/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java index 444c9d8c6..e4fc6dc8c 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java @@ -1,16 +1,16 @@ package com.dfsek.terra.api.event.functional; -import com.dfsek.terra.api.event.EventManager; -import com.dfsek.terra.api.event.events.Event; - import java.util.function.Consumer; +import com.dfsek.terra.api.event.events.Event; + + public interface EventContext { EventContext then(Consumer action); - + EventContext priority(int priority); - + EventContext failThrough(); - + EventContext global(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java b/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java index 242cb4d2c..f666b7571 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java @@ -5,8 +5,9 @@ import com.dfsek.terra.api.event.EventHandler; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.util.reflection.TypeKey; + public interface FunctionalEventHandler extends EventHandler { EventContext register(TerraAddon addon, Class clazz); - + EventContext register(TerraAddon addon, TypeKey clazz); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java index 2a9c176a0..af4d09242 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java @@ -1,15 +1,16 @@ package com.dfsek.terra.api.handle; +import java.util.Set; + import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.item.Enchantment; -import java.util.Set; public interface ItemHandle { - + Item createItem(String data); - + Enchantment getEnchantment(String id); - + Set getEnchantments(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 7397485bc..ec99d0dc1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -7,22 +7,24 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.vector.Vector3; + /** * Interface to be implemented for world manipulation. */ public interface WorldHandle { BlockState createBlockData(String data); - + BlockState air(); - - EntityType getEntity(String id); - + BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt); - + + EntityType getEntity(String id); + /** * Get the locations selected by a player. (Usually via WorldEdit) * * @param player Player to get locations for + * * @return Pair of locations. */ default Pair getSelectedLocation(Player player) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java b/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java index 648365c19..3e622fa07 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java +++ b/common/api/src/main/java/com/dfsek/terra/api/injection/Injector.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.injection; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.exception.InjectionException; + /** * Dynamic dependency injector. *

@@ -17,7 +18,7 @@ public interface Injector { * @param target Target class type. */ void addExplicitTarget(Class target); - + /** * Inject the stored object into an object. *

@@ -27,6 +28,7 @@ public interface Injector { * ({@link #addExplicitTarget(Class)}. * * @param object Object to inject into + * * @throws InjectionException If: *